Arduinoで1秒ごとに冷蔵庫の開け閉めをカウントして、1分ごとにデータを飛ばしたい。
1秒ごとに、集計して、1分ごとに飛ばす方法。
Arduinoにつないだセンサからの値をパソコンで記録する(1) | Ukkari blog
上記を参考に、以下のようなプログラムをしてみた。
チャンネル0に1分間の開け閉めカウントを入れてさくら通信モジュールでデータを飛ばす。
if (acc_angle_x > 100 ){ //センサーの値を検知して開けたらフラグを立てる。要調整 openFlg = 1; } if (nextTime < millis()) { nextTime = nextTime + 1000; // Set Next analyze time if (openFlg == 1){ openCount++; openFlg = 0; } } if (sakuraTime < millis()) { sakuraTime = nextTime + 60000; // Set Next send time sakuraio.enqueueTx(0,openCount); sakuraio.send(); openCount = 0; }
さくらで飛ばしたデータをWebSocketでつながったBluemix上のNode-REDで受ける。
それをAmbientへ飛ばす。
functionの中身
var payload = msg.payload.payload; var data = { "d1" : payload.channels[0].value }; msg.payload = data; return msg;
これで、うまくいけば表示できるはず。
Ambientは5秒ごとで受け取るのでNode-REDでデータを蓄えておくりたい
Ambientは5秒間隔以上でないとデータを受け付けない。
よってNode-REDから1秒毎にデータを送っても間引かれてしまうことになる。
そのため、Node-REDで値を溜め込んで、5秒以上の間隔で溜め込んだデータを
まとめて送る必要がある。
まとめて送る方法、データのフォーマットは以下から
Node-REDのflowへ配列でデータを蓄えておく。
Node-REDでデータを蓄える方法は
context,flow,globalというところがあって、
qiita.com
場面場面、適切に使わないといけません。
さくらIot+Bluemix(Node-RED)+Ambientでグラフを描写するまで
http://sssslide.com/www.slideshare.net/sakura_pr/iot-platform-20161201
Node-REDアプリの作成
BlueMixへログイン、カタログからNode-REDスターターで
アプリ名を入力して、作成ボタンを押す
起動されるので
あとはhttpでアクセスするだけ。簡単ですね。
Node-RED エディタ
WebSocketをドラッグ&ドロップする
PathへさくらのIotのWebSocketのパスを入力
とりあえず、WebSocketノードとデバッグノードをGUIでつなぎこむだけでNode-RED上で値の取得が確認できた。
次はグラフ化してみましょう
グラフ表示する外部サービスAmbientへ登録
https://ambidata.io
BlueMixからAmbientノードを作るために
Ambientで表示するためには
Ambientで描写するためには、チャンネルの値をd1,d2…と言う値に変えて
あげる必要がある。ここはNode-Redでのコーディングが必要になります。
さくらのデータからAmbientノード用のJSONへ変換するときに
JSONが文字列なので、そのままでは値が取り出せません。オブジェクトに変換する必要ありはまりました。
qiita.com
JSONノードの後段にfunctionノードを配置して以下のように変換関数を
コーディングしてみました。
var payload = msg.payload.payload; var data = { "d1" : payload.channels[0].value, "d2" : payload.channels[1].value, "d3" : payload.channels[2].value }; msg.payload = data; return msg;
ジャジャジャーン。表示できました。
JSONノード、Functionノードをつなげるだけで、ほぼコーディングレスでグラフ化までできることが証明されたのでありました。
以下のような感じ。
あとは、本物のセンサーが届くのを待つのみ!!
さくらの聖夜2016に参加
働きがい
働きがいかぁ。自分の会社だとチャレンジする人が
あまりいない感じ。社長もいつていましたがこれは
会社から与えられないもの。社員が作り出していくもの。
働きやすさ
さくら昇給3年で2割という数字に愕然。自分は10数年で
月額2千円。極貧生活。よく辞めずにいると思う。
うまいプレゼン
うまいなプレゼン。早口ではなく落ち着いた語り口。
やつぱりすごい。
コストカツトから売上拡大へ
やっぱ新規事業ですよね。
そんな感じで刺激をもらいました。
ボツチで懇親はあんまりできず。
さくらIot 通信モジュール動いているか試して見るが・・・
LEDの2回点滅が1回になって、コントロールパネルではオンラインになった。
AlphaCompatをマイコンへ書き込み、動作確認していますが「Waiting to come online」でピリオドが出力され続けるだけとなっています。
デフォルトのままで、ジャンパーピンはセットしていないので、その辺が必要なのかな?
こちらを読むと、ジャンパー設定していますね。やってみましょう。
あとノウハウとしては、サンプルソースはAlphaCompat(deprecated)ではなくて
以下のドキュメントにあるexampleを書き込んで、動かしました。
github.com
2回点滅(圏外)のままの時の対処
なんか、電波が安定しないぞ。ケチってArduino互換を使っているから?
と勘ぐってしまったけれど、ヒントとなるツィートを発見した。
とても助かった。AC電圧が重要らしいぞ!!!
なんか、昔ArduinoようにACアダブターを買っていたのだぁ!
さくらのIot + Arduino USB給電だと電波の掴みがわるかったけど、7.5VのACアダプターにしたらがっちり電波掴んだ!電圧って大切なのね。#さくらのIoT pic.twitter.com/vhkjpVOWCo
— Kat (@kat2014new) 2016年11月15日
さくらIot認証情報登録する
通信モジュールのシールを剥がすと
ID,PASSが書かれているのですね。なるほど。