UIFlowでThingspeakにデータを飛ばす

M5StickC+UIFlow+Thingspeakで、センサーで取得した値をクラウドサーバに記録するフローができたのでメモ。



準備と環境


準備:Thingspeakのアカウント。とりあえずは無料版で試してみます。
環境:M5StickC、UIFlow デスクトップ版1.7.4、ENVIIセンサーユニット

UIFlowブロック

注意点

  • httpsではなく、httpで。
  • URLの文字列は頑張って自分で生成する。
  • &以降に送りたい変数を指定する。
field1=値&field2=値....

となる文字列を作る。
今回は、3つのセンサーの値を取得しているため、以下のようになるように文字列を結合した。

http://api.thingspeak.com/update?api_key=●●●●●●●●&field1=▲▲&field2=▲▲&field3=▲▲

結合した文字列をどこかに表示すれば間違いがなくなるのだろうけれど、M5StickCの画面は小さいし、今回は諦めました。

API Keyの取得

説明が前後しましたが、Thingspeakのチャンネル管理画面でAPI Keyが記載されたURLが取得できます。

「API Keys」のタブの中の右側の「Write a Channel Feed」の中です。
このURLはサンプルとしてfield1=0の値が入っていますので、前項の方法を用いて、変数を追加するなど、プログラム中で文字列を生成します。


結果

このように表示できました。

Thingspeakの無料版は、データの最短送信間隔が15秒なので、UIFlow上でも15秒以上のウェイトを入れると良いでしょう。

すこしはまったところ

  • httpsだとうまくいかないようだ。多分、M5StickCに証明書を入れるなどの設定が必要になるのだろう。
  • 初めのうちはM5StickCからののHttp Clientアクセスが安定しなかった。(原因不明)
  • MQTTも試そうとしたが、Thingspeakの無料版では対応していないようだ。