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はちゃんと同期して、処理を継続します。
簡単そうですが、意外と難しい実装です。

続く...