カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

 ユーザ側から経過時間を知る方法を考察してみます。

* 1秒ごとに状況をチェックするルーチン
      coffee_check.bsh
      ----------------------------------------------------------------------
      #! /bin/sh
      # echo "0" > ./count.dat
      # chmod 666 ./count.dat

      flag=1
      cnt=0
      dir="."
      file=$dir/count.dat
      theflag=$dir/flag
      theswitch=$dir/switch

      # オン時間設定
      ON_CNT=5
      SW="OFF"
      data=`cat $file`

      while [ 1 ]
      do
          flag=`cat $theflag`

          if [ $flag -eq 1 ]
          then
              # 1秒カウントアップ
              cnt=`expr $cnt + 1`
              # オン時間チェック
              if [ $cnt -gt $ON_CNT -a "$SW" = "OFF" ]
              then
                  # オンと判定
                  data=`cat $file`
                  data=`expr $data + 1`
                  echo $data > $file
                  SW="ON"
                  touch $theswitch
              fi
              # オンならカウントアップ中止
              if [ "$SW" = "ON" ]
              then
                  cnt=0
              fi
          else
              SW="OFF"
              cnt=0
          fi
          sleep 1
          echo -n "CNT="$cnt" "
          echo -n $SW " "
          echo "DATA="$data

      done
* 管理ファイルの意味
1. count.dat ..... 抽出回数
2. flag ..... オンオフのステータス
3. switch ..... 電源スイッチの状態
 上記にプログラムでの管理ファイルの意味を書いておきました。なお、これらは、適当なディレクトリに用意しておけばよいのですが、現時点ではプログラムと同じディレクトリに置いています。それゆえ、dir なる変数を用意して、そこに現在のディレクトリの位置(".")を代入しています。管理ファイルの格納場所を変更する場合は、dir= "/var/coffee"とかすればよいでしょう。
      dir="."
      file=$dir/count.dat
 そして、このディレクトリは Web サーバ(apache2 を想定)が書き込めるパーミッションにしておく必要があります。例えば、Web サーバのユーザID、グループID が www-data だとして、
(現ディレクトリの指定)
chmod www-data:www-data .

(/var/coffee というディレクトリの指定)
chmod www-data:www-data /var/coffee
のように設定します。また、
echo "0" > ./count.dat
chmod 666 ./count.dat (または、chwon www-data ./count.dat)
として、抽出回数記憶用のファイルを用意しておきます。 このプログラムは起動されると1秒ごとに電源のステータスを監視にいって、所定の時間の経過を確認すると"電源オンステータス"として記憶します。今はチェックしやすいように「所定時間=5秒」となってますから、後々に皆さんが観測した設定値に書き直してください。

* コーヒー・メーカの状況をWebブラウザでみる

51status_debug.jpg
 玄箱(pro)に Web サーバを立ち上げておきます。所定のページにアクセスすると、上図のスナップショットのようなページが現れるはずです。 この画面にて、抽出時間、抽出後からの経過時間、それと合計抽出回数を知ることができます。この画面ではデバッグもできるようになっており、その意味では皆さんが実際にページ構築をされる際には、より洒落た感じのデザインにされることをお勧めしておきます。
 デバッグ機能としては、ヒータの状況、ヒータ・オン時間のシミュレート(ON/OFF)、それと電源オン確認(SET)ができるようになっています。
  • ヒータ状態としては、ON(赤色)、OFF(灰色)として表示される。
  • ヒータ・オン時間(ON)とヒータオフ時間(OFF)を自分で試せる。
  • 電源オン確認(SET)は、バックグランドでのプログラム(coffee_check.bsh)が停止している場合に、コーヒー・メーカの電源オンを意味させるために利用する。
  • また、時間表示などが画像表示となっているのは、「WWW カウンタ」を利用している。
 なお、ここでは自動的にブラウザにリロード指示が出され、10秒ごとに表示が更新されるようになっています。

 * PHP プログラムの中身
      
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
      <meta http-equiv="Refresh" content="10;URL=debug.php">
      </head>
      <body>

      <?php

      // touch switch
      // chmod 666 switch

      $self = $_SERVER['PHP_SELF'];

      $submit = $_GET['submit'];
      $switchflag=file("flag");
      if ($switchflag[0] == 1){
          $cmg="#ff3333";
          $cm="ON";
      } else {
          $cmg="#888888";
          $cm="OFF";
      }

      if($submit == "ON") {
          $cm="ON";
          $cmg="#ff3333";
          system('echo "1" > flag');
      }

      if($submit == "OFF") {
          $cm="OFF";
          $cmg="#888888";
          system('echo "0" > flag');
      }

      if($submit == "SET") {
          $cm="OFF";
          $cmg="#888888";
          system('echo "0" > switch');
      }

      ?>

      <form method=GET action=<?php echo $self; ?>>
      <table>
      <tr><td></td><td align=center bgcolor=<?php echo $cmg.">".$cm ?></td><td></td></tr>
      <tr><td><input type=submit name=submit value="ON"></td>
      <td><input type=submit name=submit value="OFF"></td>
      <td><input type=submit name=submit value="SET"></td>
      </tr>
      </table>
      </form>

      <?php
      // カウント値をファイルから呼び出す
      $count=file("count.dat");

      $mtime = filemtime("switch");
      $fdate = getdate($mtime);
      $fh12 = date('h', $mtime);

      $fy = $fdate["year"];
      $fm = $fdate["mon"];
      $fd = $fdate["mday"];
      $fh = $fdate["hours"];
      $fi = $fdate["minutes"];
      $fs = $fdate["seconds"];

      $date=getdate();
      $y=$date["year"];
      $m=$date["mon"];
      $d=$date["mday"];
      $h=$date["hours"];
      $i=$date["minutes"];
      $s=$date["seconds"];

      $p="p";

      // 四捨五入
      $pass = round((mktime($h,$i,$s,$m,$d,$y) - mktime($fh,$fi,$fs,$fm,$fd,$fy))/60);
      ?>

      <table border=1 cellpadding=0>
      <tr><td valign=middle colspan=3><?php echo "<img src=/cgi-bin/Count.cgi?dd=A&ft=0&lit=$p$fh12:$fi>" ?>に抽出しました。</td></tr>
      <tr><td valign=middle colspan=3><?php echo "<img src=/cgi-bin/Count.cgi?dd=A&ft=0&lit=$pass>" ?>分経過しています。</td></tr>
      <tr><td valign=middle>コーヒーの合計抽出回数は</td><td><?php echo "<img src=/cgi-bin/Count.cgi?dd=glass&ft=0&lit=$count[0]>" ?></td><td>です。</td></tr>
      </table>

      </body>
      </html>

 上記のプログラムはこちらから

* 補足
  •  シェル・プログラム名が .bsh となっていますが、これは個人的な趣味です(シェル・プログラムの種類を分類したかったため)。
  • アクセス・カウンタ(wwwcount-2.5)が利用されてますが、これはこのサイトとか、この例を参考にしてインストールをします。また、カウンタ画像も好みのものをネット上から取得します。

 このテーマの最終回です。1ビットのステータスを何に活用するかは、それぞれの方の嗜好(思考)や環境で異なりますが、コーヒー好きとしては今回の制作から玄箱(pro)への適用へ、そして実生活への活用を含み、大変満足するものがありました。
 なお、環境やプログラムについて補足を次回に行う予定です。
<和田 好司>

 カテゴリ 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: コーヒーの有無をオンラインでチェックしたい(その5)

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/1146

コメントする

おすすめ書籍
Powered by
Movable Type 4.1