chakokuのブログ(rev4)

日々のごった煮ブログです

ESP8266からMQTTでBluemixのIoT FoundationにPublish

ESP8266にesp_mqttライブラリを乗せて、BluemixのIoT Foundationにpublishできた。これまで動かなかった原因は、mqttライブラリでのclientIDの指定方法に問題があった。

BluemixのIoT の clientIDは以下の形式で指定する必要があった。


d:<組織ID>:<デバイスタイプ>:<デバイスID>
例えば、、組織IDがjdvyiz、デバイスタイプが、ESP8266、デバイスIDが、esp001だった場合、file:include/user_config.hは以下となる(例では、TokenはSwe0a2K)。

#define MQTT_CLIENT_ID "d:jdvyiz:ESP8266:esp001"
#define MQTT_USER "use-token-auth"
#define MQTT_PASS "Swe0a2K"
あと、PublishするTopic名も規約があり、IBMの資料では以下(json形式のデータを送るときは、jsonと付ける)

iot-2/evt//fmt/
今回のサンプルでは以下を指定した。
file:user/user_main.c

MQTT_Publish(client, "iot-2/evt/status/fmt/json", "{\"d\": {\"value\": \"3.987\"}}",25,0,0);
fmt/jsonJSON形式の場合の指定だけど、素のフォーマット用の指定もあると思われる。(詳細未調査)

今後の取り組みは、、BOSHの温度湿度気圧センサー(BME280)を買ったので、これをESP8266にくっつけてMQTTで喋らせる予定。

■ご参考URL
使わせてもらったESP用MQTTライブラリ
https://github.com/tuanpmt/esp_mqtt
BluemixのIoT Foundationに自作クライアントを繋ぐ解説
https://developer.ibm.com/iotfoundation/recipes/improvise-registered-devices/
上記資料は場所が変わって以下と思われる。
https://www.ibm.com/developerworks/jp/cloud/library/cl-mqtt-bluemix-iot-node-red-app/
「MQTT と IBM Bluemix の「モノのインターネット」サービスを探る」
IoT Foundtionに接続するための決まり事が説明されています。これを最初に読めばいろんな苦労はしなかった。。BluemixのIoT Foundationに接続に苦労してる人はまずこの解説を読まれることをお勧めします。