diff --git a/tasmota/include/i18n.h b/tasmota/include/i18n.h index 9e2c36b80..fb9984430 100644 --- a/tasmota/include/i18n.h +++ b/tasmota/include/i18n.h @@ -215,6 +215,7 @@ #define D_JSON_UV_INDEX_TEXT "UvIndexText" #define D_JSON_UV_LEVEL "UvLevel" #define D_JSON_UV_POWER "UvPower" +#define D_JSON_VALID "Valid" #define D_JSON_VCC "Vcc" #define D_JSON_VERSION "Version" #define D_JSON_VOLTAGE "Voltage" diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 036cfd0f8..52816ffb8 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Wagwoord geverifieer" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Fout" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index a1bdd0025..400b15038 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Грешка" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Дебитомер" #define D_FLOWRATEMETER_AMOUNT_TODAY "Количество днес" diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index 05005c39e..2dcb965b0 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Mot de pas verificat" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Cabal" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 7189bdbf8..5d1044643 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 86b2eb3b2..bcdf4b1b1 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Übereinstimmung" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Fehler" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Durchflussmesser" #define D_FLOWRATEMETER_AMOUNT_TODAY "Menge heute" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index b8c9ad050..8e48c1f37 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index dd7b42462..eeacbf121 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 4136b8175..28e364a1d 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Clave Correcta" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 5db2710e5..332fb061e 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -1217,6 +1217,13 @@ #define D_FP_PASSVERIFY "Mot-de-passe vérifié" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Erreur" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Débit" #define D_FLOWRATEMETER_AMOUNT_TODAY "Quantité aujourd'hui" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 84636137a..1ef5d94b5 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 87b7adedd..b5cffe74a 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index cc19dda81..03ec9dbf0 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -1223,6 +1223,13 @@ #define D_FP_PASSVERIFY "Jelszó ellenőrizve" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Hiba" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index a5c084c12..e00a49e9d 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verificata" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Errore" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Portata" #define D_FLOWRATEMETER_AMOUNT_TODAY "Valore odierno" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 03265541b..686887445 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 9928d7723..50be900eb 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Wachtwoord herkend" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Fout" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index c5de608ee..f74f11e15 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Zweryfikowano poprawnie" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Błąd" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Przepływ" #define D_FLOWRATEMETER_AMOUNT_TODAY "Wartość dzisiaj" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 07f4a3a9f..41c941ae3 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Senha verificada" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Erro" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 1f621554e..1018ba3ee 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Palavra-passe verificada" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Erro" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Quantidade Hoje" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 17f6ad79c..974d34070 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 89167e921..41253820f 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -1217,6 +1217,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 39bcb91a4..11d6229d4 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 9d7dc5f61..3bb0f11be 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 92a3aa8bb..c9d1b1317 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index a4eb86e8d..fbbe2b4b6 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 19d8a4848..51b28ae2b 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 6744ad91b..5bc984814 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index e6427ae25..00a341461 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -1216,6 +1216,13 @@ #define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Error" // Any other error +// xsns_90_hrg15.ino +#define D_HRG_VALID "Valid" +#define D_HRG_ACTIVE "Active" +#define D_HRG_EVENT "Event" +#define D_HRG_TOTAL "Total" +#define D_HRG_FLOWRATE "Flow Rate" + // xsns_96_flowratemeter.ino #define D_FLOWRATEMETER_NAME "Flowrate" #define D_FLOWRATEMETER_AMOUNT_TODAY "Amount Today" diff --git a/tasmota/tasmota_xsns_sensor/xsns_90_hrg15.ino b/tasmota/tasmota_xsns_sensor/xsns_90_hrg15.ino index 1597d3e41..736f043e3 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_90_hrg15.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_90_hrg15.ino @@ -36,16 +36,18 @@ #define RG15_READ_TIMEOUT 500 #define RG15_EVENT_TIMEOUT 60 #define RG15_BUFFER_SIZE 150 +#define RG15_RCV_TIMEOUT 70 // Receiver timeout in seconds #include #ifdef USE_WEBSERVER const char HTTP_RG15[] PROGMEM = // {s} = , {m} = , {e} = - "{s}" RG15_NAME " " D_JSON_ACTIVE "{m}%2_f " D_UNIT_MILLIMETER "{e}" - "{s}" RG15_NAME " " D_JSON_EVENT "{m}%2_f " D_UNIT_MILLIMETER "{e}" - "{s}" RG15_NAME " " D_JSON_TOTAL "{m}%2_f " D_UNIT_MILLIMETER "{e}" - "{s}" RG15_NAME " " D_JSON_FLOWRATE "{m}%2_f " D_UNIT_MILLIMETER "/" D_UNIT_HOUR "{e}"; + "{s}" RG15_NAME " " D_HRG_VALID "{m}%d{e}" + "{s}" RG15_NAME " " D_HRG_ACTIVE "{m}%2_f " D_UNIT_MILLIMETER "{e}" + "{s}" RG15_NAME " " D_HRG_EVENT "{m}%2_f " D_UNIT_MILLIMETER "{e}" + "{s}" RG15_NAME " " D_HRG_TOTAL "{m}%2_f " D_UNIT_MILLIMETER "{e}" + "{s}" RG15_NAME " " D_HRG_FLOWRATE "{m}%2_f " D_UNIT_MILLIMETER "/" D_UNIT_HOUR "{e}"; #endif // USE_WEBSERVER TasmotaSerial *HydreonSerial = nullptr; @@ -55,8 +57,10 @@ struct RG15 { float event = NAN; float total = NAN; float rate = NAN; + uint32_t data_received = 0; uint16_t time = RG15_EVENT_TIMEOUT; uint8_t init_step; + bool sensor_valid = false; } Rg15; /*********************************************************************************************/ @@ -163,11 +167,19 @@ void Rg15Init(void) { AddLog(LOG_LEVEL_DEBUG, PSTR("HRG: Serial UART%d"), HydreonSerial->getUart()); #endif Rg15.init_step = 5; // Perform RG-15 init + Rg15.data_received = TasmotaGlobal.uptime; } } } } +void Rg15SensorValidChanged(bool new_status) { + AddLog(LOG_LEVEL_DEBUG, PSTR("HRG: Valid changed %d"), new_status); + Rg15.sensor_valid = new_status; + + // todo trigger teleperiod or publish status +} + void Rg15Poll(void) { bool publish = false; @@ -187,10 +199,20 @@ void Rg15Poll(void) { Rg15ReadLine(rg15_buffer); if (Rg15Process(rg15_buffer)) { // Do NOT use "publish = Rg15Process(rg15_buffer)" publish = true; + Rg15.data_received = TasmotaGlobal.uptime; + if (!Rg15.sensor_valid) { + Rg15SensorValidChanged(true); // Reset timeout + } } } } + if ((TasmotaGlobal.uptime - Rg15.data_received) > RG15_RCV_TIMEOUT) { + if (Rg15.sensor_valid) { + Rg15SensorValidChanged(false); // Timeout + } + } + if (publish && !TasmotaGlobal.global_state.mqtt_down) { MqttPublishSensor(); } @@ -214,17 +236,17 @@ void Rg15Poll(void) { void Rg15Show(bool json) { if (json) { // if the parsing wasn't completely successful then skip the update - if( !isnan(Rg15.acc) && !isnan(Rg15.event) && !isnan(Rg15.total) && !isnan(Rg15.rate) ) { + if (Rg15.sensor_valid && !isnan(Rg15.acc) && !isnan(Rg15.event) && !isnan(Rg15.total) && !isnan(Rg15.rate)) { ResponseAppend_P(PSTR(",\"" RG15_NAME "\":{")); - ResponseAppend_P(PSTR("\"%s\":%2_f,"), D_JSON_ACTIVE, &Rg15.acc); - ResponseAppend_P(PSTR("\"%s\":%2_f,"), D_JSON_EVENT, &Rg15.event); - ResponseAppend_P(PSTR("\"%s\":%2_f,"), D_JSON_TOTAL, &Rg15.total); - ResponseAppend_P(PSTR("\"%s\":%2_f"), D_JSON_FLOWRATE, &Rg15.rate); + ResponseAppend_P(PSTR("\"" D_JSON_ACTIVE "\":%2_f,"), &Rg15.acc); + ResponseAppend_P(PSTR("\"" D_JSON_EVENT "\":%2_f,"), &Rg15.event); + ResponseAppend_P(PSTR("\"" D_JSON_TOTAL "\":%2_f,"), &Rg15.total); + ResponseAppend_P(PSTR("\"" D_JSON_FLOWRATE "\":%2_f"), &Rg15.rate); ResponseAppend_P(PSTR("}")); } #ifdef USE_WEBSERVER } else { - WSContentSend_PD(HTTP_RG15, &Rg15.acc, &Rg15.event, &Rg15.total, &Rg15.rate); + WSContentSend_PD(HTTP_RG15, Rg15.sensor_valid, &Rg15.acc, &Rg15.event, &Rg15.total, &Rg15.rate); #endif // USE_WEBSERVER } } @@ -264,7 +286,8 @@ bool Xsns90(uint32_t function) { else if (HydreonSerial) { switch (function) { case FUNC_EVERY_SECOND: - if((TasmotaGlobal.uptime % 60) == 0) { // every minute + if ((TasmotaGlobal.uptime % 60) == 0) { // every minute + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HRG: Valid %d"), Rg15.sensor_valid); ExecuteCommand("Sensor90 R", SRC_SENSOR); } Rg15Poll();