パスコンパスの日記

何か色々作るのが好きです

【BugC】LINEを送るとおやつを運んでくれるロボLineBugC制作②

前編はこちらです。

yoichi-41.hatenablog.com

後編では、プログラムの本体とWebサービスの連携に関して書きたいと思います。
ライントレースよりもこちらの方が正直大変でした。

目次

LINEとIFTTTの連携

ここまでは比較的簡単でした。LINE Developersに登録後にbotを作りIFTTTでWebhookをトリガと設定して 生成されたURLをLINE botのWebhookの利用をオンにして
URLを打ち込めばLINE botに何かを送信するとトリガが引かれます。

f:id:yoichi_41:20200428235409p:plain

IFは良くてもその後のThenが問題で、だいぶ苦労しました。

MQTTに関して

最初プログラムをUiFlowで作っていたのでそのまま連携を追加できないかと UiFlowにあるMQTTという通信方式のブロックを使って実現しようとしてみました。 結果から言うとこの方法は一部実行できたものの、失敗しました。
どなたかの何かに役立つ可能性も0ではないと思うので覚書として残します。

LINEに明日の天気を知らせる連携を以前にIFTTTという無料のサービスを使ってやったことがあったので IFTTTとMQTTのサービスで連携できるものがないかを調べました。

下記記事によるとどうやらCloud MQTTはできない様です。

mqtt - IFTTT Maker service and CloudMQTT - Stack Overflow

そこでもう少し調べたところBebotteというサービスがあり、そちらでは連携ができそうということがわかりました。 アカウントを作りチャンネルを作ってAccount SettingのAccess ManegementのIdentify and Access Managementの横のCreate new Tokenを押してアクセス権を設定し、トークンを作ります。

f:id:yoichi_41:20200428231142p:plain

こちらのトークンをUiFlowのトークンへ張り付けます。
※画像では空欄ですが、キーにも同様のトークンを入力します。

f:id:yoichi_41:20200428231706p:plain

これでそれぞれトピックに対してSubscribeした際に画面表示 ボタンを押したときにPublishするように設定したM5AtomとM5StickCを用意して実験したところ、相互に通信することができました。 また、IFTTTとBeebotteの連携もできました。

しかしながら、色々設定を変えてもIFTTTからのM5StickCへ送ることがどうしてもできませんでした。
おそらくですが、この記事の証明書の辺りが関係していると思われます。
証明書まわりはUiFlowのmicro pythonでは容易にいじれない設定の様です。
また、ラズパイを中継すれば実現できそうですが、手間がかかりそうなのでMQTTは諦めることにしました。

参考: IFTTT, Beebotte, Mosquitto, SSL/TLS を使って, なるべく安全に Google Home から Raspberry Pi や ESP8266 を操作する - Qiita

Blynkに関して

そこで調べていて見つけたのがBlynkというサービスでした。 こちらはArduinoで専用のライブラリを入れて連携をすると手軽にESP32等のマイコンスマホと連携できるアプリです。
面白いのがArduino側に仮想ピンというものを設定可能でBlynkからの操作でその仮想ピンの状態を変化させることができます。 今回は仮想ピンが[1]になったタイミングで状態を切り替えるプログラムにしています。

ただ、今回は譲れないところとして「LINEからメッセージを送ってLINE TRACEマシンにおやつを運んでもらう」というところがあるので一工夫が必要でした。 具体的には下記記事のAction側の設定URLの解説が大変参考になりました。ありがとうございました。

IFTTTのwebhookチャンネルでArduinoを使う(Action側) - Qiita

上記項でLINEからIFTTTの連携はできていたのでそこからついにBlynkに繋げることができました。 動画でも出しましたが構成の概要図はこんな感じです。

f:id:yoichi_41:20200429000508p:plain

こちらM5Stack、M5StickCおよびBlynkのライブラリとBugC.hとBugC.Cppが必須ですのでご注意ください。 M5StickC/examples/Hat/BUGC at master · m5stack/M5StickC · GitHub

まとめ

スタートストップだけとはいえ当初予定していた目的が果たせて達成感がありました。
先人の知恵に助けられながら電子工作を楽しめているので、もしこの記事が誰かの助けになったら嬉しいです。
読んで下さりありがとうございました。
イカーフェア京都オンライン楽しみましょう!