「アレクサ、部屋の温度を教えて」を実現のための第4歩になります。Blynkを導入した目的はESP8266/32で測定した温度データをAlexaへ送るためですが、Blynkアプリを使ってデータの可視化と妥当性の確認をしておきます。
一例として、天井裏の温度を測定しています。夏の暑いときに、いったい天井裏では何度まで上がっているのだろうと気になったのが、天井裏に温度センサをつけるきっかけでした。
これは2年ほど前に作ったものです。今は新しい白地のBlynkアプリに変わっています。ここで書いている従来のBlynkはLegacy Blynkと呼ばれサポート対象外のようです。さらに、local server やBluetoothがなくなっています。
目次
構成
スケッチ
Blynkの設定
iphone側
アプリ初期設定
- 新しいプロジェクトを作成します。(ハードウェアモデルesp8266を使用)
- AUTHTOKENを生成します。
- Eメールトークンを送信します。(ESP8266スケッチでトークンを使います)
アプリ表示設定
上に挙げたスケッチでは、4個のVirtual pin(たぶん、ESP8266のデジタル出力とアナログ出力を区別なく使えるのでVirtual pinという名前にしているのだと思う)を設定しています。これらのデータをアプリに取り込んで表示させます。
アプリではValue Display widget やGauge widgetを使用します。新しいProjectでwidget配置画面(方眼紙のような画面)をタッチすると現れるWidget Box(左下図)から所望のwidgetを選びます。各々のwidgetの設定を行い、右下図のようになりました。
メータ表示がGauge widget、数値表示が3個ともLabeled Valueです。グラフ表示がSuperChartになります。(Blynk local serverを作ったので、widgetが無料で自由に使えます。)
次の図はwidgetの設定例です。左下の図は温度を表示するGauge widgetです。INPUTの項目はVirtual pinのV0を選びます。また、その他の表示されている項目をタップして書き込みます。左上の「i」アイコンをタップすると説明(英語)が出ます。
右下の図はSuperChartの設定です。グラフ表示をさせたい温度、湿度、気圧について、それぞれ右の「?」をタップすると詳細設定画面になります。
ESP8266側 スケッチ
Blynkの接続設定
SuperChartの設定
"SuperChart"は、ライブデータと履歴データを可視化するために使用されます。センサーデータ、バイナリイベントロギングなどに使用できます。"gauge widget"などでは"Fresh Interval"で更新間隔を指定しています。この更新データを"SuperChart"でも利用しているのですが、次に示すデータをプッシュする設定を行わないと正常なグラフ表示ができません。
Blynk.ccのドキュメントにsuperchartに関して次のように書いてあります。この設定を行います。
To use SuperChart widget you would need to push the data from the hardware with the desired interval by using timers.SuperChartウィジェットを使用するには、タイマーを使用して、ハードウェアから必要な間隔でデータをプッシュする必要があります。
私の自己解釈で補足すると、Blynkにはpull型とpush型があって、アプリを開いてデータを見たりボタンを押して動かすのがpull型です。一方、push型はアプリを開かなくても定期的にセンサを読んだりできます。"SuperChart"はpush型なのでスケッチはpull型と違う書き方をしなければなりません。
14行目:"timer"という名前のBlynkTimer Objectを設定します。delay を使ってプログラムを長い間停止する場合には、Blynk サーバと接続が切れてしまう場合があります。それに比べ、BlynkTimerはBlynkライブラリルーチンに干渉しない正確な一定の間隔で定期的にデータを送信できます。(注記)Blynk.virtualWriteに関しては1秒に10個より多くの値は送らないでくださいとBlynk.ccのドキュメントに書かれています。
Ambientの設定
Ambientではマイコンからデーターを送ってグラフ化まで非常に簡単にできます。 最低限必要なのはAmbientサイトで「チャネル」を作ることと、 マイコン側のプログラムでチャネルIDとライトキーを指定してデーターを送ることだけです。
チャンネル生成
上記の引用元で書いてあるとおりにチャンネルを作ります。
ESP8266側 スケッチ
可視化データ
Blynk
SuperChartの単位横軸を3days(左下図)と1month(右下図)で表示してみました。3月初めのデータです。最高温度は20度を超えています。最低温度は半月くらい前で5度でした。