esp8266でMQTTを使ってみる
MQTTを利用してesp8266とRaspberry Pi間でメッセージの送受信をしてみた。
- 使用した物
・esp8266
・Raspberry Pi2
・タクトスイッチ×1
- 開発環境
・ArduinoIDE 1.6.12
・Python2.7.9 (Python3.4.2でも動作確認)
・sango
- ネットワーク構成図
MQTTブローカーを立てる
MQTTブローカーの構築が面倒くさかったので、MQTTブローカーサービス「sango」を利用しました。メッセージ数の上限が気になる人はMosquittoやRabbitMQで構築してください。
esp8266からpublishする
- プルダウン回路を組む(今回はIO12を使用)
- ArduinoIDEのライブラリマネージャーから「Adafruit MQTT Library」をインストールする
- スケッチの例→Adafruit MQTT Library→mqtt_esp8266
- サンプルスケッチ
60行目 : 接続を維持するためにpingを送信していると、あっという間にメッセージ数の上限に達してしまうのでコメントアウトしました。
esp8266にサンプルのプログラムを書き込み、WiFi接続ができたらタクトスイッチを押します。sangoのダッシュボードを開いてコネクション数とメッセージ数が増えていることが確認できたら完了です。
Raspberry Piでsubscribeする
paho-mqttというライブラリをインストールします
$ pip install paho-mqtt
次にpythonでsubscribeするプログラムを書きます。
- サンプルプログラム
動作確認
MQTTを使ってesp8266からRaspberry Piにメッセージ送ってみた pic.twitter.com/89ShGD1ycs
— もやし丸 (@mys_x101) 2016年11月19日
タクトスイッチを押したときに"Hello!"と表示されれば成功です。
今回は1台だけでメッセージを受信しましたが、MQTTは1対多の通信が可能なのでRaspberry Piを複数個同時に遠隔操作することも可能です。