ESP32, NTP и сброс ПО
После аппаратного сброса (кнопка или переподключение питания) я получаю правильное смещение NTP, но когда я использую ESP.restart()
через MQTT, я получаю правильное время без смещения на 3 3 часа из-за Tz . Что происходит после сброса ПО, которое ведет себя таким образом, и как это исправить?
bool myIOT2::_startNTP(const char *ntpServer, const char *ntpServer2)
{
unsigned long startLoop = millis();
while (!_NTP_updated() && (millis() - startLoop < 20000))
{
#if defined(ESP8266)
configTime(TZ_Asia_Jerusalem, ntpServer2, ntpServer); // configuring time offset and an NTP server
#elif defined(ESP32)
configTzTime(TZ_Asia_Jerusalem, ntpServer2, ntpServer);
#endif
delay(1000);
}
if (!_NTP_updated())
{
return 0;
}
else
{
return 1;
}
}
bool myIOT2::_NTP_updated()
{
return now() > 1640803233;
}
@Guy . D, 👍0
Обсуждение1 ответ
Лучший ответ:
▲ 0
Видимо, время в ESP32 сохраняется после сброса ПО, а в ESP8266 — нет.
Таким образом, в коде, который одинаков для обоих - если часы обновляются (грубый критерий, что время больше, чем какой-то день в 2020 году), он пропускает обновление TZ configTzTime(TZ_Asia_Jerusalem, ntpServer2, ntpServer);
Итак, после сбоя и/или отправки MQTT-сообщения на перезагрузку время отсутствовало обновление TZ.
Надеюсь, это кому-нибудь поможет.
Парень
,
@Guy . D
Смотрите также:
- AsyncWebServer дает сброс wdt
- Резервное копирование и восстановление прошивки
- (Почему) успешное завершение getLocalTime() на ESP32 занимает несколько секунд
- Сброс Arduino Uno в коде
- Как сбросить или отформатировать Arduino?
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
Не могли бы вы также добавить (соответствующие фрагменты) кода приложения?, @Nick S.