LEDの制御はAdafruit NeoPixelを利用し、余っていたESP-WROOM-02のボードで行うことにしました。このボードは数行のプログラムとライブラリだけでWifiへの接続が行え、豊富なArduinoのライブラリが使用できることもあり、LEDの制御、MQTTのサブスクライブもかなり簡単に実装できます。
コマンドの実装はGoogle Compute Engine上にf1-microのNode-REDインスタンスを立てて、実況スレッドの最新のレスを12秒間隔で監視、コマンド条件にマッチするレスがあった場合はMQTTでSend(サーバーにデータを保存せずサブスクライバに転送のみ)を行うという簡単なものです。コマンドの書き込みから20秒以内で動作します。
当初はMilkCocoaをMQTTバックエンドとして利用していましたが原因不明の503 Service Unavailableが出るようになり、サービスのアップグレードも受付停止しているので類似サービスのCloudAMQP[1]へ移行しました。
https://www.cloudamqp.com/plans.htmlarrow-up-right
プログラム上で詰まった場所は、MilkcocoaのドキュメントにはDataElement elemと記載されているところが実際はDataElement *elemであること。[2]
DataElement elem
DataElement *elem
ESP-WROOM-02ではPROGMEMが使えないことで一部サンプルから書き直す必要があったことでした。[3]
したらばの文字コードがeucjpだったことも手抜きプログラミングでは厄介なことでした。
https://github.com/adafruit/Adafruit_MQTT_Library/issues/68arrow-up-right
Last updated 7 years ago