赤シャツエンジニア

赤シャツエンジニア

M5StickC+UIFlow+ThingSpeakで軽量で意味のないIoTシステムを作る

概要

とにかくM5StickCのボタンを押すと、web上でボタンを押したことが確認できるだけのものを作ります。 IoTシステムを作る際にM5StickC側であまり悩みなくなかったためお試しでやってみました。

ThingSpeakは以下の理由により、今回の目的に合致しているため採用しました。 - Web APIが提供されていること - 送ったデータを勝手にプロットしてくれるところ - ごちゃごちゃした設定がいらないところ

Web APIではなく、mqttなどでデータを送信するのがIoTの主流のようですが、 UIFlowベースでAWSなどに接続している記事は見当たらなかったため、Web APIを選択しました。

準備するもの

  • M5StickC
  • ThingSpeakのアカウントとチャンネル ※アカウント作成とチャンネル生成は省略します

UIFlowのコード

内容としては以下のようになります

  • wifi接続
  • Aボタンを押すとカウントアップした値を送信
  • 応答結果を表示

f:id:mametarou963:20200621210235p:plain

f:id:mametarou963:20200621210238p:plain

httpのURLはThingSpeakのMyChannelの「Write a Channel Feed」を参考にして貼り付けます。

使用感

注意点としては、ボタンを押すのは15秒以上あけてから送信しないとThingSpeakが値をとってくれないことです。 これは無料版アカウントの仕様で、有料版なると1秒おきでも問題ないようです。

M5StickCのAボタンを押すと、通知が送信されて、ThingSpeakに無事表示されていることが確認できました

f:id:mametarou963:20200621210722j:plain

f:id:mametarou963:20200621210626p:plain

所感

Httpはrequest成功で200を返すのに、UIFlow上ではFailのほうに入ってきて判定してしまうところがわかりにくかったです。 どんな時にsucccessになるのだろうか。

あと、15秒以内に発行した場合、Httpブロックから出てこないことが多々ありました。 この状況になってしまうと使い物にならないため、実運用では気を付けないといけないと感じました。 タイマーなどで対策しても良いと思いましたが、根本的解決ではなさそう...