追記: 公式ライブラリのできがあんまり良くないので使わないやつも書いた M5 ATOM(ESP32)でWiFiに常時接続してHTTP POSTするやつ
めっちゃググったりして頑張ったのでその結果をまとめておく。
- WiFiの再接続に失敗し続ける場合があるのでその時は
ESP.restart();
を使う - JSON周りはArduinoJson: Efficient JSON serialization for embedded C++とそのAssistantが便利
#define FASTLED_INTERNAL #include <M5Atom.h> #include <WiFi.h> #include <ArduinoJson.h> #include <HttpClient.h> const char* ssid = "**********"; const char* password = "**********"; void post(const char* content) { DynamicJsonDocument doc(JSON_OBJECT_SIZE(2)); doc["title"] = "ATOM Lite Wifi Test"; doc["content"] = content; String json; serializeJson(doc, json); HTTPClient http; http.begin("http://httpbin.org/post"); http.addHeader("Content-Type", "application/json"); http.POST(json); Serial.println(http.getString()); http.end(); } void setup() { M5.begin(true, false, true); Serial.println(); } void loop() { if (WiFi.status() == WL_CONNECTED) { if (M5.Btn.wasPressed()) { post("The button was pressed."); } delay(50); M5.update(); } else { M5.dis.drawpix(0, 0x001000); WiFi.begin(ssid, password); int wifiReconnectCount = 0; while (WiFi.status() != WL_CONNECTED) { if (wifiReconnectCount >= 300) { ESP.restart(); } wifiReconnectCount++; delay(100); } post("It's now online."); M5.dis.drawpix(0, 0x100000); } }