CocoaBitでMilkcocoaのfreeboardでお手軽にグラフ可視化してみるメモです。
以前、MilkcocoaさんのほうにSORACOM AirとRaspberry Piを接続しつつMilkcocoa FreeBoardと連携する記事を書いたのですが、その流れでCocoaBitでMilkcocoaに送っているlittleBitsのセンサーデータをお手軽にグラフ可視化してみることにしました。
仕組み
CocoaBitで、データが変化したときはすぐにMilkcocoaにデータ蓄積する。という形で実装されています。
CocoaBitのArduino部分のソースコード
CocoaBitのArduino部分のソースコードです。
CocoaBitはわみさんのNefryの派生ソフトウェアが入っているので
NefryとMilkcocoaを連携させて、WebサイトにリアルタイムでPush通知してみる | 電子工作部
を参考に書いていきます。
#include <Nefry.h> #include <Nefry_Milkcocoa.h> Nefry_Milkcocoa *milkcocoa; char *datastore; int sensorValue; int sensorValueHistory; int spanValue; void setup() { milkcocoa->print();//Setup ModuleページにAPPIDの表示をする milkcocoa = Nefry_Milkcocoa::begin();//milkcocoaと接続に必要になる処理をします。 datastore = Nefry.getConfStr(3);//Setup Moduleページに入力されたデータストア名を保存します。 sensorValueHistory = 0; spanValue = 0; } void loop() { sensorValue = analogRead(A0);//アナログの入力を読みます。 Nefry.println(sensorValue);//センサーデータを表示します。 // 通信を減らすために変化が大きい時だけ送信 int spanValue = abs(sensorValueHistory - sensorValue); if( spanValue > 100 ){ Nefry.println( milkcocoa->loop(10000) ? "Milkcocoa Connect OK" : "Milkcocoa Connect NG" ); //10秒以内にMilkcocoaに接続できればokと表示されます。 DataElement elem = DataElement(); elem.setValue("senser", sensorValue);//センサーの状態を送信できる形に変換 milkcocoa->push(datastore, &elem);//Milkcocoaに送信 } else { Nefry.println("--"); } sensorValueHistory = sensorValue; // Nefry.ndelay(1000);//1秒待つ }
MilkcocoaのFreeBoardで可視化する
こちらの記事のやりかたに合わせてMilkcocoaの設定をします。
まず、データストアはcocoabitにしているので設定。
登録されます。
つづいてウィジェット(実際に可視化するグラフ部分)を設定します。
試しにランダムモジュールで、ランダムのセンサー変化を生んでみます。
すると、このように変化します。いいかんじ。
おなじみボタンモジュール。
ON/OFFを繰り返すとパキパキ変化します。
センサーを手を覆う形で簡易的に変化させてみます。
無事ゆるやかに変化しました。
いままでlittleBitsで同様のことを行おうとするとArduinoモジュールとRaspberryPiで行っていましたが、用途を決めて行うのであればCocoaBitで行うとよりコンパクトにセンサーデータ蓄積が可能ですね。
それでは、よき littleBits & CocoaBit & Milkcocoa Lifeを!