受信データの変換表示 |
|
まだ実サーバでの自動書き換えは動いていません。リモートデータ表示案です。ここをクリックしてください。
ローカルサーバーで受信データの配列化が出来ました。配列は送られてきたXBeeIDデータを最新順に、とりあえず5レコードを確保しています。XBeeID数(センサー数)は特に制限がありません。後はデータ表示ページ側でHTML化するだけです。下がPHPで配列をシリアライズ化して保存しているデータのリストです。
このリストもデバッグ用に保存しています。リストの配列は5センサー、各最新日時順に5レコード、合計25レコードで、各レコードは15データ、日付け、アナログ(mV)、デジタル(L/H)、空欄は設定なしです。センサーが増えない限りレコード数は増えません。これ以外の過去のレコードは受信データをCSVファィルでログを取っていますが、これはどんどん増えていきますので設置するサーバーによっては過去分を削除ないしどこかに転送する必要が出てきます。
転送データの配列(mrssd.list) |
Array ( [0] => Array ( [0] => ZB_0013A200XXXXECB6 [1] => 161125/13:19:39 [2] => 539 [3] => 534 [4] => 612 [5] => 600 [6] => [7] => [8] => H [9] => H [10] => [11] => [12] => [13] => [14] => [15] => ) [1] => Array ( [0] => ZB_0013A200XXXXECB6 [1] => 161125/13:19:25 [2] => 539 [3] => 534 [4] => 612 [5] => 600 [6] => [7] => [8] => H [9] => H [10] => [11] => [12] => [13] => [14] => [15] => ) [2] => Array ( [0] => ZB_0013A200XXXXECB6 [1] => 161125/13:19:09 [2] => 539 [3] => 534 [4] => 612 [5] => 600 [6] => [7] => [8] => H [9] => H [10] => [11] => [12] => [13] => [14] => [15] => ) [3] => Array ( [0] => ZB_0013A200XXXXECB6 [1] => 161125/13:18:55 [2] => 539 [3] => 534 [4] => 611 [5] => 600 [6] => [7] => [8] => H [9] => H [10] => [11] => [12] => [13] => [14] => [15] => ) [4] => Array ( [0] => ZB_0013A200XXXXECB6 [1] => 161125/13:18:27 [2] => 539 [3] => 534 [4] => 612 [5] => 600 [6] => [7] => [8] => H [9] => H [10] => [11] => [12] => [13] => [14] => [15] => ) [5] => Array ( [0] => ZB_0013A200XXXX449C [1] => 161125/13:19:37 [2] => 613 [3] => 613 [4] => 612 [5] => 612 [6] => H [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => ) [6] => Array ( [0] => ZB_0013A200XXXX449C [1] => 161125/13:19:17 [2] => 612 [3] => 613 [4] => 612 [5] => 612 [6] => H [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => ) [7] => Array ( [0] => ZB_0013A200XXXX449C [1] => 161125/13:19:08 [2] => 613 [3] => 613 [4] => 612 [5] => 612 [6] => H [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => ) [8] => Array ( [0] => ZB_0013A200XXXX449C [1] => 161125/13:18:48 [2] => 612 [3] => 613 [4] => 612 [5] => 612 [6] => H [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => ) [9] => Array ( [0] => ZB_0013A200XXXX449C [1] => 161125/13:18:38 [2] => 613 [3] => 613 [4] => 612 [5] => 612 [6] => H [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => ) [10] => Array ( [0] => ZB_0013A200XXXXD364 [1] => 161125/13:19:24 [2] => 568 [3] => 0 [4] => 611 [5] => 608 [6] => [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => ) 以下省略... |
まだサーバでの自動書き換えは動いていません。リモートデータ表示案です。ここをクリックしてください。
現在ラズパイから送るデータをXBeeから読み込んだ生の形式+IDや日付け情報でいったんプログラムを作りましたが、これを表形式に直すのはサーバー側のPHPプログラムの負担が増えるので、ラズパイ側で表形式に合ったCSVファイルを送るように変更しました。変更点は先々月の記事の拡大、①と⑤と下の "ZB_" で始まる新しいCSVデータ行とを比較すると違いが分かります。
とは言ってもサーバー側のプログラムではデジタルデータのビット変換などが不要になりますが、表示順やいろいろ制御する必要があり思案中です。Google Spreadsheet を利用することも考えられますが、とりあえずはPHPでHTMLのTABLEを生成予定です。
以下のようなカンマ区切りの1行毎にラズパイからデータをFTPで送ります。
ZB_0013A20040XXXXXX,161026/16:34:20,551,547,615,574,H,L,L,L,,,,,,
ZB_0013A20040XXXXXX,161026/16:34:20,571,567,613,627,,,H,H,,,,,,
ZB_0013A20040XXXXXX,161026/16:34:25,614,615,614,614,H,,,,,,,,,
ZB_0013A20040XXXXXX,161026/16:34:25,587,L,611,611,,,,,,,,,,
先頭は、Zigbee か IEEE かの区別コード、XXXXXX迄ははXBeeのシリアルNo、次が日付けと時間(秒まで)、その次からはデータでアナログ(mV)4チャンネル、デジタルが13チャンネル、AD0-AD3迄は例ではアナログ設定が多いですが、デジタルの場合もあります。0mV 1mV とデジタルの 0,1 を区別するためにデジタルは L,H としました。有効でないI/Oは ,, で NULL 状態となります。
実働している各モニタの状態です。クリックで拡大します。ただし、まだローカルサーバー上だけで、調整中であることと、アップロードデータの表示ページが未作成です。センサーデータの流れは、ウィンドウ図内の番号に添って以下のような動作になっています。
①ラズパイコンソールで./mrsscを起動すると、ラズパイにつながった2つのシリアル接続、コンソール用RX/TXピンがXBeeと接続、USBシリアルはXBeeデータなどのモニタをしながら、データをcsvファイルに加工して順次ftpでサーバーのremoteフォルダに送ります。
②サーバーのremoteフォルダを見ているとファイルが増えるのが見え、次の③のサーバー側の処理で10秒毎(秒数はデータ量とかの兼ね合いで変わる可能性があります)に削除される様子がわかります。
③サーバーのJavaScripで書かれたAjaxプログラムにより10秒毎にphpプログラムを動作させ、データファイルを現在、左メニューの下に表示しています。最初の".",".."はUNIX(LINUX)系固有の上位ディレクトリを示すファイル名、それに".DS_Store"はMac固有の隠しファイルです。その後の"ZB***.tmp"が1行csvデータファイルです。
④このファイルは中にXBeeのAPIコマンドで操作されたIDやデータコード、フラグ、データ自体が入っています。⑤の内容がそのデータです。これをID日付け別を名前にした記録(log)ファイルに追加保存します。
⑤はその記録(log)ファイルの1つの内容です。
この記録(log)ファイルを作る前に表示ページ(HTML)の更新が必要で、効率のいい更新方法など設計中です。
上のファイル"ZB160624.tmp"は日付けで表しています。
内容は外のXBeeから送られてきた1つのAPIデータに、データ番号(6桁)、シリーズ名を表す "ZB"、日付け、時間、秒を前に付け、"7E"以下がAPIデータです。
中央は Mac の WebServer フォルダの "remote" フォルダに送られてきた一時データファイルを示しています。
この一時データファイルを読み込みホームページに貼り付けることになります。ファイルが見えているのは、貼り付けプログラムがまだ動いてない事を示しています。
データがホームページに貼り付けるとこのファイルは別のログファイルとして保存され、一時ファイルは削除する予定です。
下のラズパイのディレクトリ内の "日付け.log" ファイルはラズパイ側でも保存している状態です。例えば6月20日の "ZB160620.log" ファイルは 10,696 行のデータがあり、計算すると約8秒に1回データが保存されています。センサーは 7-8個で、20秒ほどの間隔でデータを送るようにしています。実際はデータによっては分単位の間隔でもいいと思いますが、厳しい状態でどの程度の取りこぼしなどの問題が出るかを、チェックするためにそうしています。 "XBMonitor" でもログを取っているので比較できます。
ホームページ上の処理で取りこぼしが起こる可能性があり、1個のデータを日付けだけで送ると次のデータが来ると書き換わるので、無理があるかも知れません。日付け+データ番号のようなファイル名にする可能性も出てきます。
メール、お問い合わせは、こちらから 事務所概要 お問い合わせ
写真ののように、一時データファイルは例えば"ZB160624.tmp"でアップロード毎に書き換える方法から、日付けプラス連番にしました。
書き換えだけではサーバー側に表示プログラム起動のトリガをかけるのが難しいので、一定間隔で複数のファイルを処理する予定です。
連番は、センサーの数が多かったり、測定間隔が短いと1日相当な数となるため5桁にしました。
メール、お問い合わせは、こちらから 事務所概要 お問い合わせ
上のファイル"ZB160624.tmp"は日付けで表しています。
内容は外のXBeeから送られてきた1つのAPIデータに、データ番号(6桁)、シリーズ名を表す "ZB"、日付け、時間、秒を前に付け、"7E"以下がAPIデータです。
中央は Mac の WebServer フォルダの "remote" フォルダに送られてきた一時データファイルを示しています。
この一時データファイルを読み込みホームページに貼り付けることになります。ファイルが見えているのは、貼り付けプログラムがまだ動いてない事を示しています。
データがホームページに貼り付けるとこのファイルは別のログファイルとして保存され、一時ファイルは削除する予定です。
下のラズパイのディレクトリ内の "日付け.log" ファイルはラズパイ側でも保存している状態です。例えば6月20日の "ZB160620.log" ファイルは 10,696 行のデータがあり、計算すると約8秒に1回データが保存されています。センサーは 7-8個で、20秒ほどの間隔でデータを送るようにしています。実際はデータによっては分単位の間隔でもいいと思いますが、厳しい状態でどの程度の取りこぼしなどの問題が出るかを、チェックするためにそうしています。 "XBMonitor" でもログを取っているので比較できます。
ホームページ上の処理で取りこぼしが起こる可能性があり、1個のデータを日付けだけで送ると次のデータが来ると書き換わるので、無理があるかも知れません。日付け+データ番号のようなファイル名にする可能性も出てきます。
メール、お問い合わせは、こちらから 事務所概要 お問い合わせ
実際に動いているセンサーの様子です。受信側のプログラムはいろいろ改良、変更していますが、XBeeセンサー側は余り変わらず、年数が経っていて(6,7年以上)で汚いのもあります。これはずっと動いている証拠でもあります。次項の先月の記事の表のセンサー番号[1]などと関連して見て下さい。写真はクリックで拡大します。 | |||||
写真 | 名前 | 説明 | 写真 | 名前 | 説明 |
太陽電池 1. 5V 1.15W 2. 4.5V 不明 3. 1.5V250mA x2 3V |
3つの太陽電池はそれぞれ上から、センサー[5][3][1]に接続。2.4.5Vは非常用LEDライト付きのもので、入っていた単4電池は4,5年で寿命。現在は単4エネループ使用。 | 雨よけボックス | 百葉箱でなく4葉箱?で、表のセンサー番号[3]に接続。ベニア板を木ネジでとめ、ニスを塗っただけのいい加減な工作ですが長年動いている。 | ||
ZNXBee単独[1] | 唯一XBee ZN仕様で動いているもので、ZN仕様のテストと言うより過充電になる状態の長期テスト。 | ZigbeeXBee単独[3] | 上の雨よけボックスから出したセンサー[3]で、風雨にさらされ汚れている。中央の太陽電池+単4x3ニッケル水素電池+3.3V昇降圧型電源の組み合わせ。 | ||
ZigbeeXBee単独[2] | 室内、本棚に載せたNH単3電池2本直結(2.4V XBee 2.1-3.6V)で動作。3.3Vレギュレータを通すより長持ちする。電池12日-14日ほど。 | ZigbeeXBee単独[4] | 屋内廊下北側窓付近、NH単3電池2本3.3V昇降圧レギュレータ使用。電池6日程度。 | ||
ZigbeeH8マイコン[5] | 実験机上で、液晶の電圧は太陽電池1、これを2.8Vに降圧してNH単2電池2本に充電、下の電流は電池からの電流で充電の時は+、回路に流れている時は−になる。 | ZigbeeRX621センサー[7] | [5]と同様実験机上で、電源は2.8Vに降圧してNH単2電池2本に充電だが、現在は5VACアダプタでプログラムなどの実験中。 | ||
太陽電池電源サッシ引き込み | 実験机にあるセンサー[5]のための1番の太陽電池電源(5V 1.15W)の、フラットケーブルを使った引き込みの屋外の状態。テープべたべたで汚い。 | ||||
この他[6]はH8の開発用、[8]はラズパイ接続のXBee等(次項の写真参照)があります。 |
現在、動作している関係を煩雑ですが一つの画面にまとめました。クリックで拡大します。
各ウインドウはそれぞれ説明タイトルを書いてあります。黄色文字 A~F、1~8 で相互関係や詳細を以下に示します。
また、XBee はこの他に
液晶には、
メール、お問い合わせは、こちらから 事務所概要 お問い合わせ
メール、お問い合わせは、こちらから 事務所概要 お問い合わせ