POC-メテオ
天気ステーション:ディスプレー
以前xyvelyを使用してソーラー天気ステーションを作りましたが、コンピューターを使用せずにデータを見ることができればもっと便利ですよね。というわけで、今回はPOC-ディスプレーでどのようにデータを表示するかご紹介します。
アーキテクチャー
POC-ディスプレーをPOC-ハブイーサーネットに接続します。POC-ハブイーサーネットとPOC-ハブワイヤレスはともに環境設定してデータ送信をマネジメントするスクリプトを動かすPHPサーバに接続します。
プログラミング
POCのハブをサーバーに接続し、PHPスクリプトを動かすことができます。この技術はHTTPcallbackと呼ばれ、問題なくADSLルーターのNATフィルターを通すことができます。プログラミングの観点から言えばすべて簡単にできます。コードはモジュールを動かしているコードと同一です。
POC-メテオのデータを天気ステーションに表示したいわけですが、せっかくですからグラフにしてしまいましょう。POC-メテオのデータロガーを使用できますが、このロガーに達するまでにHTTP callbackは非常に遅くなってしまいます。そこでmySQL databaseを使用することにしました。よって、mySQL databaseとPHPサーバーが必要となります。
データベース
データベースを整理して下の表にまとめました。
コラム | タイプ | 用途 |
タイムスタンプ | integer | date/hour of the measure |
気温 | double | temperature values |
湿度 | double | humidity values |
圧力 | double | pressure values |
フィード | integer | managing several parallel feeds |
イニシアライジング
スクリプトを設定します。ライブラリを含め、データベースとの接続を構築し、APIを起動する必要があります。
// database connection, replace with your own credentials
$conn = mysql_connect(DB_SERVER,DB_USER,DB_PASSWORD);
$res = mysql_select_db(DB_NAME);
// API init, note the "callback" parameter for HTTP callback mode
if (yRegisterHub("callback",$errmsg)!=YAPI_SUCCESS) die($errmsg);
データ送信
ディスプレーと天気ステーションのそれぞれを特定し、温度機能の存在をベースにスクリプトを書きました。それから、それぞれのセンサーの値を取り出し、データベースに蓄積します。
データベースに値が蓄積されたあと、天気ステーションの中のPOC-ハブワイヤレスをもう一度スリープ状態することで使用電力を削減できます。
スクリーンに表示
ダブルバッファー技術を使用しています。
//..
//code to group data by 15 minutes clusters
//and compute max/min values
//..
$width= $display->get_displayWidth();
$height= $display->get_displayHeight();
// we use double buffering
$layer4 = $display->get_displayLayer(4);
$layer4->reset();
$layer4->hide();
..
// display humitity and pressure in the corners
$layer4->selectFont('Small.yfm');
$layer4->drawText(0,0,Y_ALIGN_TOP_LEFT,'P:'.$barometricPress);
$layer4->drawText(0,$height-1,Y_ALIGN_BOTTOM_LEFT,$lastHum.'%');
..
実際のコードは少し長いですが、ここでは省略してあります。最後に天気ステーションハブとディスプレーハブの環境設定を行い、スクリプトを定期的なインターバルで呼び出すことができるようにします。
結果
完成です!これで表示が自動的にされ、時間が経てばグラフとして表示されていきます。