From de90b8f12dce79435e35ac8761b7117b2c6500b1 Mon Sep 17 00:00:00 2001 From: nagyrobi Date: Sun, 21 Feb 2021 22:41:20 +0100 Subject: [PATCH 1/8] Update en_GB.h Fix propercase and typo --- tasmota/language/en_GB.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 0d0f0b3c9..081e3c2ae 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -876,7 +876,7 @@ #define D_SOLAX_ERROR_8 "Other Device Fault" //xdrv_10_scripter.ino -#define D_CONFIGURE_SCRIPT "Edit script" +#define D_CONFIGURE_SCRIPT "Edit Script" #define D_SCRIPT "edit script" #define D_SDCARD_UPLOAD "file upload" #define D_UFSDIR "ufs directory" @@ -884,7 +884,7 @@ #define D_SCRIPT_CHARS_LEFT "chars left" #define D_SCRIPT_CHARS_NO_MORE "no more chars" #define D_SCRIPT_DOWNLOAD "Download" -#define D_SCRIPT_ENABLE "script enable" +#define D_SCRIPT_ENABLE "Script enabled" #define D_SCRIPT_UPLOAD "Upload" #define D_SCRIPT_UPLOAD_FILES "Upload files" From a321ff55625d8a82b02d0c6c1663269549a361ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ara=C3=BAjo?= Date: Mon, 22 Feb 2021 10:40:37 +0000 Subject: [PATCH 2/8] Fix Ezo D.O sensor - Unit of measure was in ppm and should be in mg/L - Sensor was not detected - Code fixes on multiple ezo sensors --- tasmota/i18n.h | 2 +- tasmota/language/af_AF.h | 1 + tasmota/language/bg_BG.h | 1 + tasmota/language/cs_CZ.h | 1 + tasmota/language/de_DE.h | 1 + tasmota/language/el_GR.h | 1 + tasmota/language/en_GB.h | 1 + tasmota/language/es_ES.h | 1 + tasmota/language/fr_FR.h | 1 + tasmota/language/fy_NL.h | 1 + tasmota/language/he_HE.h | 1 + tasmota/language/hu_HU.h | 1 + tasmota/language/it_IT.h | 1 + tasmota/language/ko_KO.h | 1 + tasmota/language/nl_NL.h | 1 + tasmota/language/pl_PL.h | 1 + tasmota/language/pt_BR.h | 2 ++ tasmota/language/pt_PT.h | 1 + tasmota/language/ro_RO.h | 1 + tasmota/language/ru_RU.h | 1 + tasmota/language/sk_SK.h | 1 + tasmota/language/sv_SE.h | 1 + tasmota/language/tr_TR.h | 1 + tasmota/language/uk_UA.h | 1 + tasmota/language/vi_VN.h | 1 + tasmota/language/zh_CN.h | 1 + tasmota/language/zh_TW.h | 1 + tasmota/xsns_78_ezoco2.ino | 3 +-- tasmota/xsns_78_ezodo.ino | 11 ++++++----- tasmota/xsns_78_ezoec.ino | 3 +-- tasmota/xsns_78_ezoo2.ino | 3 +-- tasmota/xsns_78_ezoorp.ino | 3 +-- tasmota/xsns_78_ezoph.ino | 3 +-- tasmota/xsns_78_ezoprs.ino | 3 +-- tasmota/xsns_78_ezortd.ino | 3 +-- 35 files changed, 41 insertions(+), 20 deletions(-) diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 0edd337fa..bff6c1612 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -829,7 +829,7 @@ const char HTTP_SNS_EC[] PROGMEM = "{s}%s " D_EC "{ const char HTTP_SNS_O2[] PROGMEM = "{s}%s " D_O2 "{m}%s " D_UNIT_PERCENT "{e}"; const char HTTP_SNS_LITERS[] PROGMEM = "{s}%s " D_VOLUME "{m}%s " D_UNIT_LITERS "{e}"; const char HTTP_SNS_LPM[] PROGMEM = "{s}%s " D_FLOW_RATE "{m}%s " D_UNIT_LITERS_PER_MIN "{e}"; -const char HTTP_SNS_DO[] PROGMEM = "{s}%s " D_DO "{m}%s " D_UNIT_PARTS_PER_MILLION "{e}"; +const char HTTP_SNS_DO[] PROGMEM = "{s}%s " D_DO "{m}%s " D_UNIT_MILIGRAMS_PER_LITER "{e}"; const char HTTP_SNS_COLOR_RED[] PROGMEM = "{s}%s " D_COLOR_RED "{m}%u " "{e}"; const char HTTP_SNS_COLOR_GREEN[] PROGMEM = "{s}%s " D_COLOR_GREEN "{m}%u " "{e}"; const char HTTP_SNS_COLOR_BLUE[] PROGMEM = "{s}%s " D_COLOR_BLUE "{m}%u " "{e}"; diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 90d12bfa9..07e8a88fa 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 078298d27..9f222a84c 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -826,6 +826,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "s" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index b252002bb..1e9382216 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 8c3dac821..cde12947c 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "s" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 0b324b607..7ba39fa04 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 0d0f0b3c9..8a71486f5 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 5fc31926d..f5e3e8d2a 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "seg" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index a07e6dde3..1a8eb94fe 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -823,6 +823,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "s" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 3ac159c0b..fcb977be1 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index eb68c4ba5..79cc2c3b8 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index f24a894c5..39bfa265c 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "s" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index c3d516d57..20b1957f0 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -826,6 +826,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 1463febd9..22f98997b 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "초" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 2b8730d9e..875f25551 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index e356bb627..6301a4e1a 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" + #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 968c04065..e080577c5 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -827,6 +827,8 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" + + #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "s" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 9baa0c300..2f26b2e64 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 155bf020f..e00935295 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 2390db6c8..c9d8c1166 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "гПа" #define D_UNIT_SECOND "сек" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index cc803e84f..b752d20fe 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sek" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 9fa5c17ba..7105f64a9 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sek" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index a660dc797..a23f686fe 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 0b9346ceb..83c78b23f 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "млрд⁻¹" #define D_UNIT_PARTS_PER_DECILITER "децилітр⁻¹" #define D_UNIT_PARTS_PER_MILLION "млн⁻¹" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "гПа" #define D_UNIT_SECOND "сек" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 2e0173289..329f7ebe8 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 9e5d6b0a7..85e7381c4 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "每分升" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "百帕" #define D_UNIT_SECOND "秒" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 7ea86dbc7..34ff54547 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -827,6 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "每分升" #define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "百帕" #define D_UNIT_SECOND "秒" diff --git a/tasmota/xsns_78_ezoco2.ino b/tasmota/xsns_78_ezoco2.ino index 8d038308a..d15c04ba7 100644 --- a/tasmota/xsns_78_ezoco2.ino +++ b/tasmota/xsns_78_ezoco2.ino @@ -41,9 +41,8 @@ struct EZOCO2 : public EZOStruct { { if (json) { ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_CO2 "\":%d}" ), name, CO2); - } #ifdef USE_WEBSERVER - else { + }else { WSContentSend_PD(HTTP_SNS_CO2, name, CO2); #endif // USE_WEBSERVER } diff --git a/tasmota/xsns_78_ezodo.ino b/tasmota/xsns_78_ezodo.ino index 8a22bceb3..843376930 100644 --- a/tasmota/xsns_78_ezodo.ino +++ b/tasmota/xsns_78_ezodo.ino @@ -23,7 +23,7 @@ #define EZO_DO_READ_LATENCY 600 struct EZODO : public EZOStruct { - EZODO(uint32_t addr) : EZOStruct(addr), DO(0) {} + EZODO(uint32_t addr) : EZOStruct(addr), DO(NAN) {} virtual void ProcessMeasurement(void) { @@ -39,10 +39,11 @@ struct EZODO : public EZOStruct { dtostrfd(DO, 2, str); if (json) { - ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DO "\":%d}" ), name, str); - } + ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_DO "\":%s" ), name, str); + ResponseJsonEnd(); + #ifdef USE_WEBSERVER - else { + }else { WSContentSend_PD(HTTP_SNS_DO, name, str); #endif // USE_WEBSERVER } @@ -54,7 +55,7 @@ private: float DO; }; -const char EZODO::id[] PROGMEM = "D.O."; +const char EZODO::id[] PROGMEM = "DO"; #endif // USE_EZODO #endif // USE_I2C diff --git a/tasmota/xsns_78_ezoec.ino b/tasmota/xsns_78_ezoec.ino index e134e4da1..f09482c44 100644 --- a/tasmota/xsns_78_ezoec.ino +++ b/tasmota/xsns_78_ezoec.ino @@ -40,9 +40,8 @@ struct EZOEC : public EZOStruct { if (json) { ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_EC "\":%s}" ), name, str); - } #ifdef USE_WEBSERVER - else { + }else { WSContentSend_PD(HTTP_SNS_EC, name, str); #endif // USE_WEBSERVER } diff --git a/tasmota/xsns_78_ezoo2.ino b/tasmota/xsns_78_ezoo2.ino index cafdeb813..ffeea4a86 100644 --- a/tasmota/xsns_78_ezoo2.ino +++ b/tasmota/xsns_78_ezoo2.ino @@ -40,9 +40,8 @@ struct EZOO2 : public EZOStruct { if (json) { ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_O2 "\":%d}" ), name, str); - } #ifdef USE_WEBSERVER - else { + }else { WSContentSend_PD(HTTP_SNS_O2, name, str); #endif // USE_WEBSERVER } diff --git a/tasmota/xsns_78_ezoorp.ino b/tasmota/xsns_78_ezoorp.ino index 09db9983c..59c99c860 100644 --- a/tasmota/xsns_78_ezoorp.ino +++ b/tasmota/xsns_78_ezoorp.ino @@ -40,9 +40,8 @@ struct EZOORP : public EZOStruct { if (json) { ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_ORP "\":%s}" ), name, str); - } #ifdef USE_WEBSERVER - else { + }else { WSContentSend_PD(HTTP_SNS_ORP, name, str); #endif // USE_WEBSERVER } diff --git a/tasmota/xsns_78_ezoph.ino b/tasmota/xsns_78_ezoph.ino index c4e6a7425..f55f4a575 100644 --- a/tasmota/xsns_78_ezoph.ino +++ b/tasmota/xsns_78_ezoph.ino @@ -40,9 +40,8 @@ struct EZOPH : public EZOStruct { if (json) { ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_PH "\":%s}" ), name, str); - } #ifdef USE_WEBSERVER - else { + }else { WSContentSend_PD(HTTP_SNS_PH, name, str); #endif // USE_WEBSERVER } diff --git a/tasmota/xsns_78_ezoprs.ino b/tasmota/xsns_78_ezoprs.ino index f80eba82e..7c9ac2872 100644 --- a/tasmota/xsns_78_ezoprs.ino +++ b/tasmota/xsns_78_ezoprs.ino @@ -46,9 +46,8 @@ struct EZOPRS : public EZOStruct { ResponseAppend_P(PSTR(",\"" D_JSON_PRESSUREATSEALEVEL "\":%s"), sealevelstr); } ResponseJsonEnd(); - } #ifdef USE_WEBSERVER - else { + }else { WSContentSend_PD(HTTP_SNS_PRESSURE, name, str, PressureUnit().c_str()); if (Settings.altitude != 0) { WSContentSend_PD(HTTP_SNS_SEAPRESSURE, name, sealevelstr, PressureUnit().c_str()); diff --git a/tasmota/xsns_78_ezortd.ino b/tasmota/xsns_78_ezortd.ino index c9d37fa68..79925773e 100644 --- a/tasmota/xsns_78_ezortd.ino +++ b/tasmota/xsns_78_ezortd.ino @@ -39,9 +39,8 @@ struct EZORTD : public EZOStruct { if (json) { ResponseAppend_P(JSON_SNS_F_TEMP, name, Settings.flag2.temperature_resolution, &temp); - } #ifdef USE_WEBSERVER - else { + }else { WSContentSend_Temp(name, temp); #endif // USE_WEBSERVER } From fb012c50960ed7a8a62ed635a5311ed503c2dfb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ara=C3=BAjo?= Date: Mon, 22 Feb 2021 11:15:39 +0000 Subject: [PATCH 3/8] Fix CI translation errors --- tasmota/language/pl_PL.h | 2 +- tasmota/language/pt_BR.h | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 6301a4e1a..825448a04 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -827,7 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" - +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index e080577c5..68e4e4df1 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -827,8 +827,7 @@ #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_MILLION "ppm" - - +#define D_UNIT_MILIGRAMS_PER_LITER "mg/L" #define D_UNIT_PERCENT "%%" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "s" From dde67c5b460caf31efd6e1636eb6069430fc7d74 Mon Sep 17 00:00:00 2001 From: JeroenSt Date: Mon, 22 Feb 2021 09:11:36 +0100 Subject: [PATCH 4/8] Added options to retain info and state mqtt messages https://github.com/arendst/Tasmota/discussions/11067 Changed version to current version in comments https://github.com/arendst/Tasmota/pull/11079#discussion_r580057981 --- tasmota/i18n.h | 2 ++ tasmota/my_user_config.h | 2 ++ tasmota/settings.h | 4 ++-- tasmota/settings.ino | 2 ++ tasmota/support_command.ino | 9 ++++++--- tasmota/support_tasmota.ino | 2 +- tasmota/xdrv_02_mqtt.ino | 38 ++++++++++++++++++++++++++++++------- 7 files changed, 46 insertions(+), 13 deletions(-) diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 0edd337fa..fc45e7fc1 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -380,6 +380,8 @@ #define D_CMND_SWITCHRETAIN "SwitchRetain" #define D_CMND_POWERRETAIN "PowerRetain" #define D_CMND_SENSORRETAIN "SensorRetain" +#define D_CMND_INFORETAIN "InfoRetain" +#define D_CMND_STATERETAIN "StateRetain" #define D_CMND_PUBLISH "Publish" // Commands xdrv_01_webserver.ino diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index ac0d48699..b35a1c475 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -112,6 +112,8 @@ #define MQTT_POWER_RETAIN false // [PowerRetain] Power status message may send retain flag (false = off, true = on) #define MQTT_SWITCH_RETAIN false // [SwitchRetain] Switch may send retain flag (false = off, true = on) #define MQTT_SENSOR_RETAIN false // [SensorRetain] Sensor may send retain flag (false = off, true = on) +#define MQTT_INFO_RETAIN false // [InfoRetain] Info may send retain flag (false = off, true = on) +#define MQTT_STATE_RETAIN false // [StateRetain] State may send retain flag (false = off, true = on) #define MQTT_NO_HOLD_RETAIN false // [SetOption62] Disable retain flag on HOLD messages #define MQTT_NO_RETAIN false // [SetOption104] No Retain - disable all MQTT retained messages, some brokers don't support it: AWS IoT, Losant diff --git a/tasmota/settings.h b/tasmota/settings.h index 5f8484ea0..cb70f0a27 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -146,8 +146,8 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t zb_received_as_subtopic : 1; // bit 4 (v9.2.0.3) - SetOption118 - (Zigbee) Move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default uint32_t zb_omit_json_addr : 1; // bit 5 (v9.2.0.3) - SetOption119 - (Zigbee) Remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic uint32_t zb_topic_endpoint : 1; // bit 6 (v9.2.0.4) - SetOption120 - (Zigbee) Append endpoint number to topic if device dependent (use with SetOption89) - uint32_t spare07 : 1; // bit 7 - uint32_t spare08 : 1; // bit 8 + uint32_t mqtt_state_retain : 1; // bit 7 (v9.3.0.1) - CMND_STATERETAIN + uint32_t mqtt_info_retain : 1; // bit 8 (v9.3.0.1) - CMND_INFORETAIN uint32_t spare09 : 1; // bit 9 uint32_t spare10 : 1; // bit 10 uint32_t spare11 : 1; // bit 11 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 9a9d9dcb6..d4857bb15 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -831,6 +831,8 @@ void SettingsDefaultSet2(void) { flag.mqtt_button_retain |= MQTT_BUTTON_RETAIN; flag.mqtt_switch_retain |= MQTT_SWITCH_RETAIN; flag.mqtt_sensor_retain |= MQTT_SENSOR_RETAIN; + flag5.mqtt_info_retain |= MQTT_INFO_RETAIN; + flag5.mqtt_state_retain |= MQTT_STATE_RETAIN; // flag.mqtt_serial |= 0; flag.device_index_enable |= MQTT_POWER_FORMAT; flag3.time_append_timezone |= MQTT_APPEND_TIMEZONE; diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index f75a5cd89..3ce30232c 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -426,7 +426,8 @@ void CmndStatus(void) Response_P(PSTR("{\"" D_CMND_STATUS "\":{\"" D_CMND_MODULE "\":%d,\"" D_CMND_DEVICENAME "\":\"%s\",\"" D_CMND_FRIENDLYNAME "\":[%s],\"" D_CMND_TOPIC "\":\"%s\",\"" D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\"" D_CMND_LEDMASK "\":\"%04X\",\"" D_CMND_SAVEDATA "\":%d,\"" D_JSON_SAVESTATE "\":%d,\"" D_CMND_SWITCHTOPIC "\":\"%s\",\"" - D_CMND_SWITCHMODE "\":[%s],\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_SWITCHRETAIN "\":%d,\"" D_CMND_SENSORRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d}}"), + D_CMND_SWITCHMODE "\":[%s],\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_SWITCHRETAIN "\":%d,\"" D_CMND_SENSORRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d,\"" + D_CMND_POWERRETAIN "\":%d,\"" D_CMND_INFORETAIN "\":%d,\"" D_CMND_STATERETAIN "\":%d}}"), ModuleNr(), EscapeJSONString(SettingsText(SET_DEVICENAME)).c_str(), stemp, TasmotaGlobal.mqtt_topic, SettingsText(SET_MQTT_BUTTON_TOPIC), TasmotaGlobal.power, Settings.poweronstate, Settings.ledstate, Settings.ledmask, Settings.save_data, @@ -436,7 +437,9 @@ void CmndStatus(void) Settings.flag.mqtt_button_retain, // CMND_BUTTONRETAIN Settings.flag.mqtt_switch_retain, // CMND_SWITCHRETAIN Settings.flag.mqtt_sensor_retain, // CMND_SENSORRETAIN - Settings.flag.mqtt_power_retain); // CMND_POWERRETAIN + Settings.flag.mqtt_power_retain, // CMND_POWERRETAIN + Settings.flag5.mqtt_info_retain, // CMND_INFORETAIN + Settings.flag5.mqtt_state_retain); // CMND_STATERETAIN MqttPublishPrefixTopic_P(STAT, PSTR(D_CMND_STATUS)); } @@ -629,7 +632,7 @@ void CmndState(void) ResponseClear(); MqttShowState(); if (Settings.flag3.hass_tele_on_power) { // SetOption59 - Send tele/%topic%/STATE in addition to stat/%topic%/RESULT - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_STATE), MQTT_TELE_RETAIN); + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_STATE), Settings.flag5.mqtt_state_retain); } #ifdef USE_HOME_ASSISTANT if (Settings.flag.hass_discovery) { // SetOption19 - Control Home Assistantautomatic discovery (See SetOption59) diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index af9aca1e2..1e57256e6 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -715,7 +715,7 @@ void MqttPublishTeleState(void) { ResponseClear(); MqttShowState(); - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_STATE), MQTT_TELE_RETAIN); + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_STATE), Settings.flag5.mqtt_state_retain); #ifdef USE_DT_VARS DTVarsTeleperiod(); diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index 646df7037..b90007e44 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -48,7 +48,8 @@ const char kMqttCommands[] PROGMEM = "|" // No prefix #endif D_CMND_MQTTHOST "|" D_CMND_MQTTPORT "|" D_CMND_MQTTRETRY "|" D_CMND_STATETEXT "|" D_CMND_MQTTCLIENT "|" D_CMND_FULLTOPIC "|" D_CMND_PREFIX "|" D_CMND_GROUPTOPIC "|" D_CMND_TOPIC "|" D_CMND_PUBLISH "|" D_CMND_MQTTLOG "|" - D_CMND_BUTTONTOPIC "|" D_CMND_SWITCHTOPIC "|" D_CMND_BUTTONRETAIN "|" D_CMND_SWITCHRETAIN "|" D_CMND_POWERRETAIN "|" D_CMND_SENSORRETAIN ; + D_CMND_BUTTONTOPIC "|" D_CMND_SWITCHTOPIC "|" D_CMND_BUTTONRETAIN "|" D_CMND_SWITCHRETAIN "|" D_CMND_POWERRETAIN "|" + D_CMND_SENSORRETAIN "|" D_CMND_INFORETAIN "|" D_CMND_STATERETAIN ; SO_SYNONYMS(kMqttSynonyms, 90, @@ -73,7 +74,8 @@ void (* const MqttCommand[])(void) PROGMEM = { #endif &CmndMqttHost, &CmndMqttPort, &CmndMqttRetry, &CmndStateText, &CmndMqttClient, &CmndFullTopic, &CmndPrefix, &CmndGroupTopic, &CmndTopic, &CmndPublish, &CmndMqttlog, - &CmndButtonTopic, &CmndSwitchTopic, &CmndButtonRetain, &CmndSwitchRetain, &CmndPowerRetain, &CmndSensorRetain }; + &CmndButtonTopic, &CmndSwitchTopic, &CmndButtonRetain, &CmndSwitchRetain, &CmndPowerRetain, &CmndSensorRetain, + &CmndInfoRetain, &CmndStateRetain }; struct MQTT { uint16_t connect_count = 0; // MQTT re-connect count @@ -542,17 +544,17 @@ void MqttConnected(void) { char stopic2[TOPSZ]; Response_P(PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"), ModuleName().c_str(), TasmotaGlobal.version, TasmotaGlobal.image_name, GetFallbackTopic_P(stopic, ""), GetGroupTopic_P(stopic2, "", SET_MQTT_GRP_TOPIC)); - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "1")); + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "1"), Settings.flag5.mqtt_info_retain); #ifdef USE_WEBSERVER if (Settings.webserver) { #if LWIP_IPV6 Response_P(PSTR("{\"" D_JSON_WEBSERVER_MODE "\":\"%s\",\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\",\"IPv6Address\":\"%s\"}"), - (2 == Settings.webserver) ? PSTR(D_ADMIN) : PSTR(D_USER), NetworkHostname(), NetworkAddress().toString().c_str(), WifiGetIPv6().c_str()); + (2 == Settings.webserver) ? PSTR(D_ADMIN) : PSTR(D_USER), NetworkHostname(), NetworkAddress().toString().c_str(), WifiGetIPv6().c_str(), Settings.flag5.mqtt_info_retain); #else Response_P(PSTR("{\"" D_JSON_WEBSERVER_MODE "\":\"%s\",\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\"}"), - (2 == Settings.webserver) ? PSTR(D_ADMIN) : PSTR(D_USER), NetworkHostname(), NetworkAddress().toString().c_str()); + (2 == Settings.webserver) ? PSTR(D_ADMIN) : PSTR(D_USER), NetworkHostname(), NetworkAddress().toString().c_str(), Settings.flag5.mqtt_info_retain); #endif // LWIP_IPV6 = 1 - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "2")); + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "2"), Settings.flag5.mqtt_info_retain); } #endif // USE_WEBSERVER Response_P(PSTR("{\"" D_JSON_RESTARTREASON "\":")); @@ -562,7 +564,7 @@ void MqttConnected(void) { ResponseAppend_P(PSTR("\"%s\""), GetResetReason().c_str()); } ResponseJsonEnd(); - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "3")); + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "3"), Settings.flag5.mqtt_info_retain); } MqttPublishAllPowerState(); @@ -1080,6 +1082,28 @@ void CmndSensorRetain(void) { ResponseCmndStateText(Settings.flag.mqtt_sensor_retain); // CMND_SENSORRETAIN } +void CmndInfoRetain(void) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) { + if (!XdrvMailbox.payload) { + ResponseClear(); + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO), Settings.flag5.mqtt_info_retain); // CMND_INFORETAIN + } + Settings.flag5.mqtt_info_retain = XdrvMailbox.payload; // CMND_INFORETAIN + } + ResponseCmndStateText(Settings.flag5.mqtt_info_retain); // CMND_INFORETAIN +} + +void CmndStateRetain(void) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) { + if (!XdrvMailbox.payload) { + ResponseClear(); + MqttPublishPrefixTopic_P(STAT, PSTR(D_RSLT_STATE), Settings.flag5.mqtt_state_retain); // CMND_STATERETAIN + } + Settings.flag5.mqtt_state_retain = XdrvMailbox.payload; // CMND_STATERETAIN + } + ResponseCmndStateText(Settings.flag5.mqtt_state_retain); // CMND_STATERETAIN +} + /*********************************************************************************************\ * TLS private key and certificate - store into Flash \*********************************************************************************************/ From d289608fe42b87ebc7c1e2b8285c6a053dcf7ecc Mon Sep 17 00:00:00 2001 From: JeroenSt Date: Mon, 22 Feb 2021 13:36:26 +0100 Subject: [PATCH 5/8] Solved duplicate entry D_CMND_POWERRETAIN https://github.com/arendst/Tasmota/pull/11084#discussion_r580203530 --- tasmota/support_command.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 3ce30232c..643327aae 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -427,7 +427,7 @@ void CmndStatus(void) D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\"" D_CMND_LEDMASK "\":\"%04X\",\"" D_CMND_SAVEDATA "\":%d,\"" D_JSON_SAVESTATE "\":%d,\"" D_CMND_SWITCHTOPIC "\":\"%s\",\"" D_CMND_SWITCHMODE "\":[%s],\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_SWITCHRETAIN "\":%d,\"" D_CMND_SENSORRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d,\"" - D_CMND_POWERRETAIN "\":%d,\"" D_CMND_INFORETAIN "\":%d,\"" D_CMND_STATERETAIN "\":%d}}"), + D_CMND_INFORETAIN "\":%d,\"" D_CMND_STATERETAIN "\":%d}}"), ModuleNr(), EscapeJSONString(SettingsText(SET_DEVICENAME)).c_str(), stemp, TasmotaGlobal.mqtt_topic, SettingsText(SET_MQTT_BUTTON_TOPIC), TasmotaGlobal.power, Settings.poweronstate, Settings.ledstate, Settings.ledmask, Settings.save_data, From e2ab1fe3f3de7c03109f8999be24c89aa3f3a172 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 22 Feb 2021 13:46:25 +0100 Subject: [PATCH 6/8] Update changelog --- CHANGELOG.md | 13 +++++++++---- RELEASENOTES.md | 13 +++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bec272b29..a11f5d49b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,16 +4,21 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.3.0.1] +### Added +- Animate PWM dimmer brightness LEDs during transitions and with variable brightness (#11076) + ### Changed - Remove the need to start filenames with a slash (/) in Ufs commands - Removed command ``VirtualCT`` as synonym for ``SetOption106`` (#11049) ### Fixed -- Ili1942 driver (#11046) -- Shutter driver (#11055) -- ESP32 Mi32 driver (#11048) -- TM1637 driver now needs ``TM1637 CLK`` and ``TM1637 DIO`` to enable (#11057) - Web request accepts wrong password (#11039) +- Ili1942 driver (#11046) +- ESP32 Mi32 driver (#11048) +- Shutter driver (#11055) +- TM1637 driver now needs ``TM1637 CLK`` and ``TM1637 DIO`` to enable (#11057) +- Sml driver (#11082) +- Ezo drivers (#11083) ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 8f8ac126a..7f9ceeb22 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -79,13 +79,18 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. ## Changelog v9.3.0.1 +### Added +- Animate PWM dimmer brightness LEDs during transitions and with variable brightness [#11076](https://github.com/arendst/Tasmota/issues/11076) + ### Changed - Remove the need to start filenames with a slash (/) in Ufs commands - Removed command ``VirtualCT`` as synonym for ``SetOption106`` [#11049](https://github.com/arendst/Tasmota/issues/11049) ### Fixed -- Ili1942 driver [#11046](https://github.com/arendst/Tasmota/issues/11046) -- Shutter driver [#11055](https://github.com/arendst/Tasmota/issues/11055) -- ESP32 Mi32 driver [#11048](https://github.com/arendst/Tasmota/issues/11048) -- TM1637 driver now needs ``TM1637 CLK`` and ``TM1637 DIO`` to enable [#11057](https://github.com/arendst/Tasmota/issues/11057) - Web request accepts wrong password [#11039](https://github.com/arendst/Tasmota/issues/11039) +- Ili1942 driver [#11046](https://github.com/arendst/Tasmota/issues/11046) +- ESP32 Mi32 driver [#11048](https://github.com/arendst/Tasmota/issues/11048) +- Shutter driver [#11055](https://github.com/arendst/Tasmota/issues/11055) +- TM1637 driver now needs ``TM1637 CLK`` and ``TM1637 DIO`` to enable [#11057](https://github.com/arendst/Tasmota/issues/11057) +- Sml driver [#11082](https://github.com/arendst/Tasmota/issues/11082) +- Ezo drivers [#11083](https://github.com/arendst/Tasmota/issues/11083) From 9edccbbca596271b1349ee5b0c39861f2a8bcfcf Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 22 Feb 2021 13:59:45 +0100 Subject: [PATCH 7/8] Add commands ``StateRetain`` and ``InfoRetain`` (#11084) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tools/decode-status.py | 8 +++++--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a11f5d49b..2f4e55b47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.3.0.1] ### Added - Animate PWM dimmer brightness LEDs during transitions and with variable brightness (#11076) +- Commands ``StateRetain`` and ``InfoRetain`` (#11084) ### Changed - Remove the need to start filenames with a slash (/) in Ufs commands diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7f9ceeb22..ec5a31a34 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -81,6 +81,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.3.0.1 ### Added - Animate PWM dimmer brightness LEDs during transitions and with variable brightness [#11076](https://github.com/arendst/Tasmota/issues/11076) +- Commands ``StateRetain`` and ``InfoRetain`` [#11084](https://github.com/arendst/Tasmota/issues/11084) ### Changed - Remove the need to start filenames with a slash (/) in Ufs commands diff --git a/tools/decode-status.py b/tools/decode-status.py index 9ab99763f..bd1f959a8 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -174,8 +174,10 @@ a_setoption = [[ "(Light) run fading at fixed duration instead of fixed slew rate", "(Zigbee) Move ZbReceived from JSON message and into the subtopic replacing SENSOR default", "(Zigbee) Remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic", - "","", - "","","","", + "(Zigbee) Append endpoint number to topic if device dependent (use with SetOption89)", + "(MQTT) Retain on State", + "(MQTT) Retain on Info", + "","","", "","","","", "","","","", "","","","", @@ -282,7 +284,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20210217 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20210222 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From 0906acc25ecf05f2e0fdaf56ad56db3327119e22 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 22 Feb 2021 14:05:27 +0100 Subject: [PATCH 8/8] Update en_GB.h Inline with other checkboxes --- tasmota/language/en_GB.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 081e3c2ae..a092159ae 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -884,7 +884,7 @@ #define D_SCRIPT_CHARS_LEFT "chars left" #define D_SCRIPT_CHARS_NO_MORE "no more chars" #define D_SCRIPT_DOWNLOAD "Download" -#define D_SCRIPT_ENABLE "Script enabled" +#define D_SCRIPT_ENABLE "Script enable" #define D_SCRIPT_UPLOAD "Upload" #define D_SCRIPT_UPLOAD_FILES "Upload files"