このページではXBee ZigBee を使って複数のセンサー子機の情報をhtml化してスマートフォンなどで閲覧したり、HTTPサーバによってスマホから操作する方法について説明します。
各種センサーからの読み取り値
電力メータの推移グラフ
複数のXBeeセンサーの値を読み取った値をhtml化したり、csv形式で保存したデータをhtmlに変換するサンプルプログラム(サンプル8)および、HTTPサーバー機能を実装したプログラム(サンプル18)です。
それぞれ、下記からダウンロードすることができます。これらのプログラムの実行に必要なXBeeライブラリはダウンロードページにあります。
ファイル
内容
| sample08_html.c/一式
| サンプル8 センサーHTML出力 for PC(収集データをスマホで閲覧)
| sample18_httpd.c/一式
| サンプル18 センサーHTTPサーバ for PC(収集データをスマホで閲覧&操作)
| 最新版httpd.c(GitHub)
| HTTPサーバ for PC(サンプル8と併用するHTTPサーバ単体) 古いバージョン:httpd.zip
| xbee-download.html
| XBeeライブラリ ZB Coordinator API
| 最新版ダウンロード用ページへのリンクです。
| |
サンプルプログラムはWindows PC用Cygwin上で動作させます。Windows PCのUSBには、XBee USB エクスプローラなどを使用して親機となるXBee ZBモジュールを接続します。親機用XBee ZBモジュールのファームウェアは「ZIGBEE COORDINATOR API」を使用します。
上記のサンプルプログラムのうちサンプル8では純正の「XBee Smart Plug」をエアコンに、「ZigBee SmartPlug」を電力メータに、「ZigBee 気圧センサー」を屋外に設置することを想定しています。
また、サンプル18では、子機となるXBeeに純正の「XBee Smart Plug」や「XBee Router」、「XBee Sensor」の他、「ブレッドボードによる自作センサー」などを使用します。
その他の場合は、お手持ちの環境に合わせてプログラムの修正が必要です。
サンプルプログラム8を動作させるには「htdocs」フォルダとその中に既定の画像ファイルが必要です。実行アプリケーション(exeファイル)と同じディレクトリ(フォルダ)に「htdocs」フォルダを作成し、上記の「一式」からダウンロードしたZIPファイル「htdocs.zip」内の各画像ファイルを展開して保存してください。
サンプルプログラムを実行すると「htdocs」フォルダに「index.html」が作成されます。このファイルをWebブラウザで開くとXBeeで収集した情報を表示することが出来ます。
本プログラム8の実行例を下図(インラインフレーム)に示します。「電力メータグラフ」や「エアコングラフ」のリンクを押すと、グラフ表示を行うことが出来ます。
(下図の例はオンラインで動作中の表示ではありませんので、数字は更新されません)
サンプルプラグラム18にはHTTPサーバ機能が搭載されています。実行するとHTTPサーバ機能が実行され、同じPCで「http://127.0.0.1/」にアクセスすると下図のような情報表示と操作ボタン付きの画面が表示されます。
まずは「Join許可」を押して、子機とのペアリングを行います。そして「連続測定」を押すと気温と照度を測定し、値を更新し続けます。(下図の例はオンラインで動作中の表示ではありませんので、操作を実行することは出来ません。)
冒頭の2画面は収集したデータを表示するだけのサンプルでした。そのデータを活用するにはデータを集計する必要があります。下図は、収集した情報を深夜0時や毎時間隔などに集計するバッチ処理ソフトのサンプルです。
各種センサーからの読み取り値
サンプルソフト「sample8_html.c」内でincludeされている「libs」フォルダ内の「compress_csv.c」内にバッチ処理が記述されており、日付が変わった時に処理を実行します。翌日に同じ処理を実行しないように処理を行う対象ファイルの日付を指定して呼び出しています。
このサンプルでは1時間ごとのデータの平均値を求めて、データファイル(csv形式)と表示用ファイル(html形式)を出力しています。
さらにバッチ処理ソフト内に1日単位のデータに整理する機能を追加しました。ライブラリバージョン1.93以降に組み込む予定ですが、使用したい人は「compress_csv.c」を「libs」フォルダ内のものと置き換えてください。
下図はXBee Smart Plugを使用して照度、温度、電力を測定し、8月31日の24時間分の結果を示したものです。右上の[前日]をクリックすると8月30日のデータを、[月間]をクリックすると8月の1ヶ月間のデータを1日単位に集計した結果を元に表示します。(下図の例はオンラインで動作中の表示ではありません。一日、月間ともに3件づつしか閲覧できませんが、実際に作成したソフトでは収集した全期間のデータの閲覧が可能です。)
スマートフォンで閲覧するには、家庭内だけで無線LAN(WiFi)接続で閲覧する方法と、外出先からアクセスする方法があります。まず、家庭内で閲覧する場合について説明します。
サンプル18はHTTPサーバを搭載しているので、スマートフォンからCygwinを動かしているWindows PCのIPアドレスにアクセスすると閲覧できます。Windows PCのIPアドレスは「MS-DOSプロンプト」にて「ipconfig」と入力して確認します。例えば、IPアドレスが「192.168.0.2」であった場合、スマートフォンのブラウザで「http://192.168.0.2/」にアクセスします。
サンプル8を家庭内で閲覧する場合は、作成した「htdocs」のフォルダを「Web共有」に設定することでアクセスが可能になります。もしくは「ダウンロード表」の「httpd.zip」内のhttpサーバを動かすことで、htdocsフォルダ内のHTMLファイルとGIF画像ファイル(いずれも32KBまで)をスマートフォンや他のPCから閲覧できるようになります。
外出先から閲覧する場合は少し工夫が必要です。外部のインターネット(WAN)と家庭内のネットワーク(LAN)との間でNATと呼ばれるネットワークのIPアドレスの変換が行われているためです。NATを超えて外部からアクセスする方法はダイナミックDNSサービスなどを利用します。最も手軽なのはWeb共有に対応したNAS(ネットワークHDD)を使用することだと思います。NAS上のドライブをPCにて「ネットワークドライブの割り当て」を行い、cygwinのhomeをNAS上に作成します。NASでのWeb共有方法はNASによって異なりますので、NASの説明書をご覧ください。なおセキュリティにも留意が必要ですので、NASの説明書をよく読んで下さい。(いかなる損害が発生しても当方は一切の責任を負いません。)
さらに外出先から機器を操作するには、より多くの工夫が必要です。NAT超えの対象がパソコンになるからです。アクセスのためには外部から宅内ゲートウェイに宛てられたパケットをパソコンの一部の特定のポートへ転送する必要があります。
この設定はセキュリティの観点で家庭内の様々な機器が脅威にさらされる恐れがあります。誰も知らないはずのアドレスであっても、公開してアクセス履歴をとってみると、世界中の様々なアドレスから手当たり次第のパス名のファイルへアクセスしに来るのが分かります。認証などの仕組みが必須と思います。