コラム 技術的な内容

LEDの制御はAdafruit NeoPixelを利用し、余っていたESP-WROOM-02のボードで行うことにしました。このボードは数行のプログラムとライブラリだけでWifiへの接続が行え、豊富なArduinoのライブラリが使用できることもあり、LEDの制御、MQTTのサブスクライブもかなり簡単に実装できます。

!camcheckコマンドの実装

コマンドの実装はGoogle Compute Engine上にf1-microのNode-REDインスタンスを立てて、実況スレッドの最新のレスを12秒間隔で監視、コマンド条件にマッチするレスがあった場合はMQTTでSend(サーバーにデータを保存せずサブスクライバに転送のみ)を行うという簡単なものです。コマンドの書き込みから20秒以内で動作します。

当初はMilkCocoaをMQTTバックエンドとして利用していましたが原因不明の503 Service Unavailableが出るようになり、サービスのアップグレードも受付停止しているので類似サービスのCloudAMQP[1]へ移行しました。

[1] CloudAMQP - RabbitMQ as a Service

https://www.cloudamqp.com/plans.html

プログラム上で詰まった場所は、MilkcocoaのドキュメントにはDataElement elemと記載されているところが実際はDataElement *elemであること。[2]

ESP-WROOM-02ではPROGMEMが使えないことで一部サンプルから書き直す必要があったことでした。[3]

したらばの文字コードがeucjpだったことも手抜きプログラミングでは厄介なことでした。

[2] Getting Started(Arduino, ESP8266, mbed)

[3] mqtt.connect() throws Exception (3) rst cause:2, boot mode:(1,6) #68

https://github.com/adafruit/Adafruit_MQTT_Library/issues/68

Last updated