Caterpie 18'AUTUMN
  • PeerCastでアゲハチョウを観察しよう
  • まえがき
  • 8月11日 短時間配信
  • 8月12日 新たな同居人
  • 8月13日 サインは下痢
  • 8月14日 サナギになる前に
  • 8月15日 残されたもの
  • 8月16日
  • 8月17日 サナギポケット
  • 8月18日 LIVE
  • コラム 技術的な内容
  • 8月19日 Sexy Hiking
  • 8月20日 罠
  • 8月21日 夢を見るもの
  • 8月22日 別れの時
  • 8月23日 コラム
  • 8月24日 生きるということ
  • 2018年第2期の羽化記録
  • 飼育について
  • 付録1 アゲハチョウ&配信FAQ
  • 付録2 配信環境
  • あとがき
  • 著者紹介
  • カバーの説明
  • 蝶の一生
Powered by GitBook
On this page

コラム 技術的な内容

Previous8月18日 LIVENext8月19日 Sexy Hiking

Last updated 6 years ago

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

プログラム上で詰まった場所は、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://www.cloudamqp.com/plans.html
https://mlkcca.com/document/start-arduino.html
https://github.com/adafruit/Adafruit_MQTT_Library/issues/68
図17 IoTデバイスの作成を容易にしたWifiモジュール
図18 使用したNode-REDのフロー