myThingsのIDCFチャンネルとESP-WROOM-02とのMQTT双方向連携

myThings外部サービスチャンネル(トリガー) → IDCFチャンネル(アクション) → ESP-WROOM-02

myThingsアプリ上で、Yahoo!天気をトリガーにしたものと、ぐるなびをトリガーにしたものの2つの組み合わせを作成した。それぞれでアクションに渡すメッセージはそれっぽい感じにしている。

ESP-WROOM-02には以下のArduinoコードをビルドしたものをアップロードし、Arduino IDEのシリアルモニタを表示した状態で、Wi-Fi・Meshbluに接続しておく。

myThingsアプリから、2つの組み合わせを手動実行する(あるいは待つ)と、Arduinoシリアルモニタに以下のようなメッセージが出力された。

.............
WiFi connected
IP address: 192.168.10.20
succeeded to connect to mqtt broker
{"topic":"message","data":{"devices":["MESHBLU_ACTION_UUID"],"payload":"東京(東京)の2015-10-17の天気は曇り、最高気温20、最低気温16、降水確率40、風向き北の風、波の高さ0.5メートル","fromUuid":"MYTHINGS_UUID"}}
	東京(東京)の2015-10-17の天気は曇り、最高気温20、最低気温16、降水確率40、風向き北の風、波の高さ0.5メートル
{"topic":"message","data":{"devices":["MESHBLU_ACTION_UUID"],"payload":"肉 × イタリアン Hana 六本木店 〒106-0032 東京都港区六本木7-14-10 誠志堂ビル6F","fromUuid":"MYTHINGS_UUID"}}
	肉 × イタリアン Hana 六本木店 〒106-0032 東京都港区六本木7-14-10 誠志堂ビル6F
{"topic":"message","data":{"devices":["MESHBLU_ACTION_UUID"],"payload":"個室&イタリアン CERTO! 六本木店 〒106-0032 東京都港区六本木4-11-5 アネックスビル1F","fromUuid":"MYTHINGS_UUID"}}
	個室&イタリアン CERTO! 六本木店 〒106-0032 東京都港区六本木4-11-5 アネックスビル1F
{"topic":"message","data":{"devices":["MESHBLU_ACTION_UUID"],"payload":"六本木 PALETTE 〜Italian Tapas〜 〒106-0032 東京都港区六本木7-14-10 誠志堂ビル6F","fromUuid":"MYTHINGS_UUID"}}
	六本木 PALETTE 〜Italian Tapas〜 〒106-0032 東京都港区六本木7-14-10 誠志堂ビル6F
{"topic":"message","data":{"devices":["MESHBLU_ACTION_UUID"],"payload":"豪快 イタリアン食堂 DESERT 〒106-0032 東京都港区六本木7-15-25 六本木7thビル2F","fromUuid":"MYTHINGS_UUID"}}
	豪快 イタリアン食堂 DESERT 〒106-0032 東京都港区六本木7-15-25 六本木7thビル2F
{"topic":"message","data":{"devices":["MESHBLU_ACTION_UUID"],"payload":"六本木バル PIZZANIA 〒106-0032 東京都港区六本木2-3-7 セントラルクリブIII1F","fromUuid":"MYTHINGS_UUID"}}
	六本木バル PIZZANIA 〒106-0032 東京都港区六本木2-3-7 セントラルクリブIII1F

これで、ESP-WROOM-02がmyThingsのトリガーチャンネルからメッセージを受け取れていることが確認できた。

ESP-WROOM-02 → IDCFチャンネル(トリガー) → 外部サービスチャンネル(アクション)

myThingsアプリ上で、IDCFチャンネルをトリガーにしてYahoo!メールをアクションにした組み合わせを作成した。

ESP-WROOM-02には以下のArduinoコードをビルドしたものをアップロードし、Arduino IDEのシリアルモニタを表示した状態で、Wi-Fi・Meshbluに接続しておく。ここでは、DHT11の温湿度センサを接続し、その情報を流している。

しばらくするとArduinoシリアルモニタに以下のようなメッセージが出力された。

.............
WiFi connected
IP address: 192.168.10.20
succeeded to connect to mqtt broker
Humidity: 39.00 %	Temperature: 24.00 *C
{"devices":["MESHBLU_ACTION_UUID"],"payload":{"humidity":39.00000,"temperature":24.00000}}
Humidity: 39.00 %	Temperature: 24.00 *C
{"devices":["MESHBLU_ACTION_UUID"],"payload":{"humidity":39.00000,"temperature":24.00000}}

Meshbluに以下の様なPythonサブスクライバを登録しておくと、メッセージが出力された。


connected with result code0
received message: {"topic":"message","data":{"devices":["MESHBLU_ACTION_UUID"],"payload":{"humidity":39,"temperature":24},"fromUuid":"MESHBLU_TRIGGER_UUID"}} from MESHBLU_ACTION_UUID
received message: {"topic":"message","data":{"devices":["MESHBLU_ACTION_UUID"],"payload":{"humidity":39,"temperature":24},"fromUuid":"MESHBLU_TRIGGER_UUID"}} from MESHBLU_ACTION_UUID

同時に、myThingsアプリのアクションで指定したメールアドレス宛に以下のようなメールが届いた。

これで、ESP-WROOM-02からのメッセージがトリガーとなり、アクションが発火していることが確認できた。

残念ながら、IDCFチャンネルのトリガーメッセージの内容を元にアクションのメッセージを変更する方法がわからなかった。