Shadowを弄るPocketTweetESP32は便利だ。IDEでそのまんま開発できるのでコーディングもまあまあ簡単。Energyにも対応している......が、今のところライブラリが整備されていないのでそっちはあまり使っていない。ESP8266より性能はいいがまだ少し情報が少ない。Shadow情報のUpdateや更新の受取を行うことができたので手順を共有する。IoTについては資料が色々あるので今回は詳しく書かず、以下の作業は済んでいる前提で話を進める。作成した直後しかダウンロードできないので、作成したらすぐローカルに保存しておく。うっかり保存し忘れたら新しいのを作るしかない。ESP32)PubSubClientESP32用のWiFiClientSecureは、ちょっと古いのを使うとRoot証明書をサポートしていない。WiFiClientSecure::setCACert()函数が見当たらなかったら要アップデート。通信プロトコルはMQTTを使う。IoTのMQTTブローカに接続する。MQTTクライアントは探すと色々あるが、PubSubClientがかなり使いやすかった。Managerで入れられる。ちなみにMITライセンス。インストールしたてホヤホヤの状態だと、一度にやりとりできるメッセージの長さ制限がヘッダ込みで128バイト。1024など大きめの値に変えておく。Shadowのデータ形式と相談して十分なサイズを確保しておくこと。Subコードはこんな感じになる。IoTエンドポイントの箇所を書き換えればとりあえず動く。{delay(500);Serial.print(".");}ここのところはWiFi接続。SSLの設定はこんな感じでルートCA・証明書・秘密鍵をWiFiClientSecureにセットする。今回はダウンロードした証明書と鍵をベタ書きしたが、実際はEEPROMに保存したのを読み出したりすることになると思う。httpsClient.setPrivateKey(privateKey);123httpsClient.setCACert(rootCA);httpsClient.setCertificate(certificate);httpsClient.setPrivateKey(privateKey);次はMQTTの設定。port);そしてコールバック。コールバック函数をセットしておくと、受け取ったメッセージをハンドルできる。mqttClient.setCallback(mqttCallback);1mqttClient.setCallback(mqttCallback);今回、コールバック函数は非常にシンプルにトピック名とメッセージ本体をシリアル出力するだけの内容になっている。{Serial.print((char)payload[i]);}Serial.print("\n");}実際の接続はこんな感じ。retryingdelay(5000);}}}PubSubClient::connectで実際にブローカに接続。IDだが、これは識別できればなんでもいい。失敗したら5秒待つことにしておいた。Subscribeするのはこんな具合。qos);メッセージを受け取ったときはPubSubClient::setCallbackでセットしたコールバック函数が呼ばれる。接続したらPubSubClient::loopを呼び続ける。C++mqttClient.loop();1mqttClient.loop();Publishも簡単。pubMessage);今回のサンプルコードは、5秒ごとにインクリメントした値を送るようにしてみた。publishされたのを受け取れる。メッセージをpublishしてみると良い。うまくいったらおめでとう。うまくいかなかったら、次のエントリでチェックポイントを列挙するのでそちらを読むと解決するかも。コーヒーサーバは香炉であるただいまコメントは受け付けていません。