我有一个 ESP8266,我用它通过 MQTT 记录天气数据。因为我想节省一些电量,所以我决定使用 DeepSleep。由于我想记录数据,如果我可以每分钟发送新条目会很好。
这曾经与我的旧草图一起工作,我在循环部分中有所有数据采集任务,并且我保持与 WiFi 和 MQTT 服务器的连接打开。
但这不适用于 DeepSleep。每次唤醒后我都需要重新连接,每次唤醒后,ESP8266 基本上都会重新启动。
因为这不会在每次唤醒时花费完全相同的时间,所以我想知道是否有办法让 ESP8266 登录完全相同的时间戳并在其间进入 DeepSleep?
这是 DeepSleep 算法的代码示例:
String JSON = "{\"sensor\": \"Outdoor Sensor\", \"data\":[" + String(temp) + "," + String(hum) + "," + String(brightness) + "]}";
client.publish(topic, JSON.c_str(), true); //publish data as JSON to MQTT
delay(10); //somehow if this is not added, the data does not get logged.
Serial.println("Going into deep sleep for 60 seconds");
ESP.deepSleep(56e6); // because of microseconds - processing data takes about 4sec, but this is very unprecise
这是来自 PhpMyAdmin,为了更好地可视化问题:
如果不能用 ESP8266 完成,ESP32 可能有帮助吗?