esp-linkを使ってみる

MQTT通信


esp-linkに対応したmqttライブラリが公開されています。
こちらから一式ダウンロードして、 ELClientフォルダーだけArduino-IDEのライブラリフォルダーにコピーします。

最初にesp-linkのREST/MQTTページで「Enable SLIP on serial port」を有効にします。
次に、同じページで「Enable MQTT client」を有効にし、MQTTの「Server hostname or IP」にブローカーのIPアドレスを指定します。
私はローカルなブローカーを指定しました。
ページの下方にある「Update server setting!」を押して、esp-linkを再起動します。



esp-linkの再起動はDebug Logのページから可能ですが、esp-linkを再起動すると繋がっていたTelnet接続は無効になります。


次に、こ ちらで公開しているmqttのスケッチをArduinoに書き込みます。
esp-linkと繋がっているArduinoのスケッチを更新するときは、一旦、esp-linkとのUART接続を外す必要が有ります。
esp-linkとUARTが繋がった状態では、Arduinoのスケッチを更新できません。
SLIPを有効にすると、スケッチ書き込み時の通信をSLIPパケットと認識し、esp-link側から何らかのレスポンスがあるからだと思いま す。

Arduinoにスケッチを書き込んだら、esp-linkとTX/RXをクロスで接続します。
telnetでesp-linkのアドレスに接続すると以下の様に、publishが正しくできていること が分かります。


Linuxマシンのmosquitto-clientsを使って、ArduinoからのMQTTメッセージをsubscribeしてみました。




今度はLinuxマシン側からpublishしてみました。


esp-linkのコンソールに受信したMQTTメッセージが表示されました。


esp-linkと通信中にArduinoをリセットしても、Arduinoとesp-linkはちゃんと同期して、処理を継続します。
簡単そうですが、意外と難しい実装です。


続く...