From 1c81b0cdd97bcd97a818835ffd6d5a8f55339082 Mon Sep 17 00:00:00 2001 From: arendst Date: Sat, 17 Feb 2018 13:47:11 +0100 Subject: [PATCH 1/2] v5.12.0b - Add Restart time 5.12.0b * Add Restart time to Status 1 (#1938) * Change Sonoff SC JSON format (#1939) --- sonoff/_releasenotes.ino | 2 ++ sonoff/i18n.h | 1 + sonoff/sonoff.ino | 10 +++--- sonoff/support.ino | 67 ++++++++++++++++++++++++++++----------- sonoff/webserver.ino | 2 +- sonoff/xdrv_03_energy.ino | 2 +- sonoff/xplg_wemohue.ino | 2 +- sonoff/xsns_04_snfsc.ino | 2 +- 8 files changed, 61 insertions(+), 27 deletions(-) diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index b246a2022..d5b3e337d 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -7,6 +7,8 @@ * Add Russian language file (#1909) * Add Webserver upload preflight request support (#1927) * Add Home Assistant clear other device (#1931) + * Add Restart time to Status 1 (#1938) + * Change Sonoff SC JSON format (#1939) * * 5.12.0a * Change platformio option sonoff-ds18x20 to sonoff-xxl enabling ds18x20 and all other sensors in one image diff --git a/sonoff/i18n.h b/sonoff/i18n.h index e9cbab9ef..308da01cd 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -99,6 +99,7 @@ #define D_JSON_SSID "SSId" #define D_JSON_STARTDST "StartDST" // Start Daylight Savings Time #define D_JSON_STARTED "Started" +#define D_JSON_STARTUPUTC "StartupUTC" #define D_JSON_SUBNETMASK "Subnetmask" #define D_JSON_SUCCESSFUL "Successful" #define D_JSON_SWITCH "Switch" diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 35be3e2a8..711a296fd 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1742,8 +1742,8 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (1 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), - baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetUptime().c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), + baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetDateAndTime(3).c_str(), GetDateAndTime(2).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "1")); } @@ -1816,7 +1816,7 @@ void MqttShowState() { char stemp1[33]; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\""), mqtt_data, GetDateAndTime().c_str(), GetUptime().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\""), mqtt_data, GetDateAndTime(0).c_str(), GetDateAndTime(3).c_str()); #ifdef USE_ADC_VCC dtostrfd((double)ESP.getVcc()/1000, 3, stemp1); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_VCC "\":%s"), mqtt_data, stemp1); @@ -1836,7 +1836,7 @@ void MqttShowState() boolean MqttShowSensor() { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\""), mqtt_data, GetDateAndTime().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\""), mqtt_data, GetDateAndTime(0).c_str()); int json_data_start = strlen(mqtt_data); for (byte i = 0; i < MAX_SWITCHES; i++) { if (pin[GPIO_SWT1 +i] < 99) { @@ -1927,7 +1927,7 @@ void PerformEverySecond() if ((2 == RtcTime.minute) && latest_uptime_flag) { latest_uptime_flag = false; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\"}"), GetDateAndTime().c_str(), GetUptime().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\"}"), GetDateAndTime(0).c_str(), GetDateAndTime(3).c_str()); MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_UPTIME)); } if ((3 == RtcTime.minute) && !latest_uptime_flag) { diff --git a/sonoff/support.ino b/sonoff/support.ino index 6ab7775a5..870b7556c 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -992,6 +992,7 @@ uint32_t daylight_saving_time = 0; uint32_t standard_time = 0; uint32_t ntp_time = 0; uint32_t midnight = 1451602800; +uint32_t restart_time = 0; uint8_t midnight_now = 0; uint8_t ntp_sync_minute = 0; @@ -1024,27 +1025,48 @@ String GetBuildDateAndTime() return String(bdt); } -String GetDateAndTime() +String GetDateAndTime(byte time_type) { + /* 0 - Local Date and Time + 1 - UTC Date and Time + 2 - UTC Restart Date and Time + 3 - Uptime + */ // "2017-03-07T11:08:02" - ISO8601:2004 char dt[21]; - - snprintf_P(dt, sizeof(dt), PSTR("%04d" D_YEAR_MONTH_SEPARATOR "%02d" D_MONTH_DAY_SEPARATOR "%02d" D_DATE_TIME_SEPARATOR "%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), - RtcTime.year, RtcTime.month, RtcTime.day_of_month, RtcTime.hour, RtcTime.minute, RtcTime.second); - return String(dt); -} - -String GetUtcDateAndTime() -{ - // "2017-03-07T11:08:02" - ISO8601:2004 - char dt[21]; - TIME_T tmpTime; - BreakTime(utc_time, tmpTime); - tmpTime.year += 1970; - snprintf_P(dt, sizeof(dt), PSTR("%04d" D_YEAR_MONTH_SEPARATOR "%02d" D_MONTH_DAY_SEPARATOR "%02d" D_DATE_TIME_SEPARATOR "%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), - tmpTime.year, tmpTime.month, tmpTime.day_of_month, tmpTime.hour, tmpTime.minute, tmpTime.second); + if (3 == time_type) { + if (restart_time) { + BreakTime(utc_time - restart_time, tmpTime); + } else { + BreakTime(uptime, tmpTime); + } + // "P128DT14H35M44S" - ISO8601:2004 - https://en.wikipedia.org/wiki/ISO_8601 Durations + // snprintf_P(dt, sizeof(dt), PSTR("P%dDT%02dH%02dM%02dS"), ut.days, ut.hour, ut.minute, ut.second); + // "128 14:35:44" - OpenVMS + // "128T14:35:44" - Tasmota + snprintf_P(dt, sizeof(dt), PSTR("%dT%02d:%02d:%02d"), + tmpTime.days, tmpTime.hour, tmpTime.minute, tmpTime.second); + } else { + switch (time_type) { + case 1: + BreakTime(utc_time, tmpTime); + tmpTime.year += 1970; + break; + case 2: + if (restart_time == 0) { + return ""; + } + BreakTime(restart_time, tmpTime); + tmpTime.year += 1970; + break; + default: + tmpTime = RtcTime; + } + snprintf_P(dt, sizeof(dt), PSTR("%04d-%02d-%02dT%02d:%02d:%02d"), + tmpTime.year, tmpTime.month, tmpTime.day_of_month, tmpTime.hour, tmpTime.minute, tmpTime.second); + } return String(dt); } @@ -1053,14 +1075,20 @@ String GetUptime() char dt[16]; TIME_T ut; - BreakTime(uptime, ut); + + if (restart_time) { + BreakTime(utc_time - restart_time, ut); + } else { + BreakTime(uptime, ut); + } // "P128DT14H35M44S" - ISO8601:2004 - https://en.wikipedia.org/wiki/ISO_8601 Durations // snprintf_P(dt, sizeof(dt), PSTR("P%dDT%02dH%02dM%02dS"), ut.days, ut.hour, ut.minute, ut.second); // "128 14:35:44" - OpenVMS // "128T14:35:44" - Tasmota - snprintf_P(dt, sizeof(dt), PSTR("%d" D_DATE_TIME_SEPARATOR "%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), ut.days, ut.hour, ut.minute, ut.second); + snprintf_P(dt, sizeof(dt), PSTR("%dT%02d:%02d:%02d"), + ut.days, ut.hour, ut.minute, ut.second); return String(dt); } @@ -1228,6 +1256,9 @@ void RtcSecond() if (ntp_time) { utc_time = ntp_time; ntp_sync_minute = 60; // Sync so block further requests + if (restart_time == 0) { + restart_time = utc_time - uptime; // save first ntp time as restart time + } BreakTime(utc_time, tmpTime); RtcTime.year = tmpTime.year + 1970; daylight_saving_time = RuleToTime(DaylightSavingTime, RtcTime.year); diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index ac1e64e61..83f91208e 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -1598,7 +1598,7 @@ void HandleInformation() func += F(D_PROGRAM_VERSION "}2"); func += my_version; func += F("}1" D_BUILD_DATE_AND_TIME "}2"); func += GetBuildDateAndTime(); func += F("}1" D_CORE_AND_SDK_VERSION "}2" ARDUINO_ESP8266_RELEASE "/"); func += String(ESP.getSdkVersion()); - func += F("}1" D_UPTIME "}2"); func += GetUptime(); + func += F("}1" D_UPTIME "}2"); func += GetDateAndTime(3); snprintf_P(stopic, sizeof(stopic), PSTR(" at %X"), GetSettingsAddress()); func += F("}1" D_FLASH_WRITE_COUNT "}2"); func += String(Settings.save_flag); func += stopic; func += F("}1" D_BOOT_COUNT "}2"); func += String(Settings.bootcount); diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 3bb70e30b..81376a9d5 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -748,7 +748,7 @@ void EnergyMarginCheck() void EnergyMqttShow() { // {"Time":"2017-12-16T11:48:55","ENERGY":{"Total":0.212,"Yesterday":0.000,"Today":0.014,"Period":2.0,"Power":22.0,"Factor":1.00,"Voltage":213.6,"Current":0.100}} - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(0).c_str()); EnergyShow(1); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_ENERGY), Settings.flag.mqtt_sensor_retain); diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index ce189a32c..986dd9947 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -544,7 +544,7 @@ void HueConfigResponse(String *response) response->replace("{ms", WiFi.subnetMask().toString()); response->replace("{gw", WiFi.gatewayIP().toString()); response->replace("{br", HueBridgeId()); - response->replace("{dt", GetUtcDateAndTime()); + response->replace("{dt", GetDateAndTime(1)); response->replace("{id", GetHueUserId()); } diff --git a/sonoff/xsns_04_snfsc.ino b/sonoff/xsns_04_snfsc.ino index f8c9eeef0..51e3e1b3a 100644 --- a/sonoff/xsns_04_snfsc.ino +++ b/sonoff/xsns_04_snfsc.ino @@ -120,7 +120,7 @@ void SonoffScShow(boolean json) dtostrfd(h, Settings.flag2.humidity_resolution, humidity); if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_HUMIDITY "\":%s,\"" D_JSON_LIGHT "\":%d,\"" D_JSON_NOISE "\":%d,\"" D_JSON_AIRQUALITY "\":%d"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SonoffSC\":{\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_HUMIDITY "\":%s,\"" D_JSON_LIGHT "\":%d,\"" D_JSON_NOISE "\":%d,\"" D_JSON_AIRQUALITY "\":%d}"), mqtt_data, temperature, humidity, sc_value[2], sc_value[3], sc_value[4]); #ifdef USE_DOMOTICZ DomoticzTempHumSensor(temperature, humidity); From feb7184f4574c949e2d565ffa18c6cebe962fa5f Mon Sep 17 00:00:00 2001 From: arendst Date: Sat, 17 Feb 2018 14:09:39 +0100 Subject: [PATCH 2/2] v5.12.0b - Fix Hass define compile error 5.12.0b * Fix compile error when define HOME_ASSISTANT_DISCOVERY_ENABLE is not set (#1937) --- sonoff/_releasenotes.ino | 1 + sonoff/settings.ino | 4 ++++ sonoff/sonoff.h | 1 + sonoff/sonoff.ino | 8 ++++---- sonoff/support.ino | 12 ++++-------- sonoff/webserver.ino | 2 +- sonoff/xdrv_03_energy.ino | 2 +- sonoff/xplg_wemohue.ino | 2 +- 8 files changed, 17 insertions(+), 15 deletions(-) diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index d5b3e337d..afb273229 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -9,6 +9,7 @@ * Add Home Assistant clear other device (#1931) * Add Restart time to Status 1 (#1938) * Change Sonoff SC JSON format (#1939) + * Fix compile error when define HOME_ASSISTANT_DISCOVERY_ENABLE is not set (#1937) * * 5.12.0a * Change platformio option sonoff-ds18x20 to sonoff-xxl enabling ds18x20 and all other sensors in one image diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 0c3edfe8c..f77955ebd 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -50,6 +50,10 @@ #define MTX_ADDRESS8 0 #endif +#ifndef HOME_ASSISTANT_DISCOVERY_ENABLE +#define HOME_ASSISTANT_DISCOVERY_ENABLE 0 +#endif + /*********************************************************************************************\ * RTC memory \*********************************************************************************************/ diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 834ba3f40..a46044910 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -114,6 +114,7 @@ enum WeekInMonthOptions {Last, First, Second, Third, Fourth}; enum DayOfTheWeekOptions {Sun=1, Mon, Tue, Wed, Thu, Fri, Sat}; enum MonthNamesOptions {Jan=1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec}; enum HemisphereOptions {North, South}; +enum GetDateAndTimeOptions { DT_LOCAL, DT_UTC, DT_RESTART, DT_UPTIME }; enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE, LOG_LEVEL_ALL}; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 711a296fd..1f2a524d9 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1743,7 +1743,7 @@ void PublishStatus(uint8_t payload) if ((0 == payload) || (1 == payload)) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), - baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetDateAndTime(3).c_str(), GetDateAndTime(2).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); + baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetDateAndTime(DT_UPTIME).c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "1")); } @@ -1816,7 +1816,7 @@ void MqttShowState() { char stemp1[33]; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\""), mqtt_data, GetDateAndTime(0).c_str(), GetDateAndTime(3).c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\""), mqtt_data, GetDateAndTime(DT_LOCAL).c_str(), GetDateAndTime(DT_UPTIME).c_str()); #ifdef USE_ADC_VCC dtostrfd((double)ESP.getVcc()/1000, 3, stemp1); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_VCC "\":%s"), mqtt_data, stemp1); @@ -1836,7 +1836,7 @@ void MqttShowState() boolean MqttShowSensor() { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\""), mqtt_data, GetDateAndTime(0).c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\""), mqtt_data, GetDateAndTime(DT_LOCAL).c_str()); int json_data_start = strlen(mqtt_data); for (byte i = 0; i < MAX_SWITCHES; i++) { if (pin[GPIO_SWT1 +i] < 99) { @@ -1927,7 +1927,7 @@ void PerformEverySecond() if ((2 == RtcTime.minute) && latest_uptime_flag) { latest_uptime_flag = false; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\"}"), GetDateAndTime(0).c_str(), GetDateAndTime(3).c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\"}"), GetDateAndTime(DT_LOCAL).c_str(), GetDateAndTime(DT_UPTIME).c_str()); MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_UPTIME)); } if ((3 == RtcTime.minute) && !latest_uptime_flag) { diff --git a/sonoff/support.ino b/sonoff/support.ino index 870b7556c..a086f1207 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1027,16 +1027,12 @@ String GetBuildDateAndTime() String GetDateAndTime(byte time_type) { - /* 0 - Local Date and Time - 1 - UTC Date and Time - 2 - UTC Restart Date and Time - 3 - Uptime - */ + // enum GetDateAndTimeOptions { DT_LOCAL, DT_UTC, DT_RESTART, DT_UPTIME }; // "2017-03-07T11:08:02" - ISO8601:2004 char dt[21]; TIME_T tmpTime; - if (3 == time_type) { + if (DT_UPTIME == time_type) { if (restart_time) { BreakTime(utc_time - restart_time, tmpTime); } else { @@ -1050,11 +1046,11 @@ String GetDateAndTime(byte time_type) tmpTime.days, tmpTime.hour, tmpTime.minute, tmpTime.second); } else { switch (time_type) { - case 1: + case DT_UTC: BreakTime(utc_time, tmpTime); tmpTime.year += 1970; break; - case 2: + case DT_RESTART: if (restart_time == 0) { return ""; } diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 83f91208e..87766e73d 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -1598,7 +1598,7 @@ void HandleInformation() func += F(D_PROGRAM_VERSION "}2"); func += my_version; func += F("}1" D_BUILD_DATE_AND_TIME "}2"); func += GetBuildDateAndTime(); func += F("}1" D_CORE_AND_SDK_VERSION "}2" ARDUINO_ESP8266_RELEASE "/"); func += String(ESP.getSdkVersion()); - func += F("}1" D_UPTIME "}2"); func += GetDateAndTime(3); + func += F("}1" D_UPTIME "}2"); func += GetDateAndTime(DT_UPTIME); snprintf_P(stopic, sizeof(stopic), PSTR(" at %X"), GetSettingsAddress()); func += F("}1" D_FLASH_WRITE_COUNT "}2"); func += String(Settings.save_flag); func += stopic; func += F("}1" D_BOOT_COUNT "}2"); func += String(Settings.bootcount); diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 81376a9d5..bf29ed6be 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -748,7 +748,7 @@ void EnergyMarginCheck() void EnergyMqttShow() { // {"Time":"2017-12-16T11:48:55","ENERGY":{"Total":0.212,"Yesterday":0.000,"Today":0.014,"Period":2.0,"Power":22.0,"Factor":1.00,"Voltage":213.6,"Current":0.100}} - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(0).c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str()); EnergyShow(1); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_ENERGY), Settings.flag.mqtt_sensor_retain); diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index 986dd9947..a1f3d8ce8 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -544,7 +544,7 @@ void HueConfigResponse(String *response) response->replace("{ms", WiFi.subnetMask().toString()); response->replace("{gw", WiFi.gatewayIP().toString()); response->replace("{br", HueBridgeId()); - response->replace("{dt", GetDateAndTime(1)); + response->replace("{dt", GetDateAndTime(DT_UTC)); response->replace("{id", GetHueUserId()); }