diff --git a/tasmota/i18n.h b/tasmota/i18n.h index accb88938..841d6e557 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -211,6 +211,8 @@ #define D_JSON_IMPORT "Import" #define D_JSON_EXPORT "Export" #define D_JSON_TOTAL_ACTIVE "TotalActive" +#define D_JSON_SIGNALSTRENGTH "Signal Strength" +#define D_JSON_CHIPTEMPERATURE "Chip Temperature" #define D_RSLT_ENERGY "ENERGY" #define D_RSLT_HASS_STATE "HASS_STATE" diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index b61c82c6e..2954219f1 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Stroom L1+L2+L3" #define D_SpL1L2L3 "Spanning L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Geen" #define D_SENSOR_USER "Gebruiker" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 2061eb460..45fd69563 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -584,6 +584,10 @@ #define D_StL1L2L3 "Ток L1+L2+L3" #define D_SpL1L2L3 "Напрежение L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Няма" #define D_SENSOR_USER "Потребит." @@ -800,6 +804,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index be329c3e2..837cc91ef 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Není" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 9eaff2441..ef753b639 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Ströme L1+L2+L3" #define D_SpL1L2L3 "Spannung L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signalstärke" +#define D_CHIPTEMPERATURE "Chip Temperatur" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index ca14da7c1..6bfb44891 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Κανένα" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 12a476a32..5d4641c22 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 93967a818..c868b06e4 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Corriente L1+L2+L3" #define D_SpL1L2L3 "Voltaje L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Ninguno" #define D_SENSOR_USER "Por Usuario" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Cambiando dirección a" #define D_OUT_OF_RANGE "Fuera de Rango" #define D_SENSOR_DETECTED "detectado" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 980b380f7..584c22724 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Courant Ph1+Ph2+Ph3" #define D_SpL1L2L3 "Tension (Ph1+Ph2+Ph3)/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Aucun" #define D_SENSOR_USER "Utilisateur" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 8b166dd94..d607220ce 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Streame L1+L2+L3" #define D_SpL1L2L3 "Foltaazje L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Gjin" #define D_SENSOR_USER "Brûker" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 8bf5e5e97..91f49739c 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" #define D_SENSOR_USER "משתמש" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 239239348..fd2b3e075 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Áramerősség L1+L2+L3" #define D_SpL1L2L3 "Feszültség L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nincs" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index b8a7d828b..5e43527a4 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Corrente L1+L2+L3" #define D_SpL1L2L3 "Tensione L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nessuno" #define D_SENSOR_USER "Utente" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Imposta indirizzo a" #define D_OUT_OF_RANGE "Fuori limite" #define D_SENSOR_DETECTED "rilevato" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 964ab46a7..061a93bca 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "없음" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index bc855e4a8..2be3f71b2 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Stroom L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Geen" #define D_SENSOR_USER "Gebruiker" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 78710996f..1648bf058 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Prąd suma" #define D_SpL1L2L3 "Prąd średni" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Brak" #define D_SENSOR_USER "Użytkownik" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index a2929b529..9eff10649 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nenhum" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Mudança de endereço para" #define D_OUT_OF_RANGE "Fora de Alcance" #define D_SENSOR_DETECTED "detectou" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index c5b524875..1d3a0bdf3 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Corrente F1+F2+F3" #define D_SpL1L2L3 "Tensão F1+F2+F3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Nenhum" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Mudança de endereço para" #define D_OUT_OF_RANGE "Fora de Alcance" #define D_SENSOR_DETECTED "detectou" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index c8182eb75..8098f9fdb 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Fără" #define D_SENSOR_USER "Utilizator" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 6d8d0b932..3c56f13a9 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "-нет-" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index b0fbc5c3f..8705a7e9c 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Žiaden" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 5ccbc77fe..13079ae46 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Ingen" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index e6429fed1..17b521ba5 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "None" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 286b851dc..9a5ebf98d 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Немає" #define D_SENSOR_USER "Користувач" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index c04e43010..b1be0f94c 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Dòng L1+L2+L3" #define D_SpL1L2L3 "Điện áp L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "Không dùng" #define D_SENSOR_USER "Người Dùng" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index a7e1847ca..1d8bba996 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "无" #define D_SENSOR_USER "User" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "安" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 13cc6e858..41a364d3b 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -585,6 +585,10 @@ #define D_StL1L2L3 "Current L1+L2+L3" #define D_SpL1L2L3 "Voltage L1+L2+L3/3" +// xsns_88_tfminiplus.ino +#define D_SIGNALSTRENGTH "Signal Strength" +#define D_CHIPTEMPERATURE "Chip Temperature" + // tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box #define D_SENSOR_NONE "無" #define D_SENSOR_USER "使用者" @@ -801,6 +805,9 @@ #define D_NEW_ADDRESS "Setting address to" #define D_OUT_OF_RANGE "Out of Range" #define D_SENSOR_DETECTED "detected" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" + // Units #define D_UNIT_AMPERE "安培" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 51c3999ac..9716f92f2 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -699,6 +699,7 @@ // #define USE_PROJECTOR_CTRL_OPTOMA // Use codes for OPTOMA //#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k code) // #define USE_AS608_MESSAGES // Add verbose error messages (+0k4 code) +//#define USE_TFMINIPLUS // Add suppoer for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface // -- Power monitoring sensors -------------------- #define USE_ENERGY_MARGIN_DETECTION // Add support for Energy Margin detection (+1k6 code) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index c4956bdbd..7a964b191 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -182,6 +182,7 @@ // #define USE_PROJECTOR_CTRL_NEC // Use codes for NEC // #define USE_PROJECTOR_CTRL_OPTOMA // Use codes for OPTOMA //#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k4 code) +//#define USE_TFMINIPLUS // Add suppoer for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface #define USE_ENERGY_SENSOR // Add energy sensors (-14k code) #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 75cfc5572..b00c65738 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -278,6 +278,7 @@ // #define USE_PROJECTOR_CTRL_NEC // Use codes for NEC // #define USE_PROJECTOR_CTRL_OPTOMA // Use codes for OPTOMA //#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k4 code) +//#define USE_TFMINIPLUS // Add suppoer for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface #define USE_ENERGY_SENSOR // Add energy sensors (-14k code) #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 197596b7b..69be04616 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -155,6 +155,7 @@ enum UserSelectablePins { GPIO_XPT2046_CS, // XPT2046 SPI Chip Select GPIO_CSE7761_TX, GPIO_CSE7761_RX, // CSE7761 Serial interface (Dual R3) GPIO_VL53L0X_XSHUT1, // VL53L0X_XSHUT (the max number of sensors is VL53L0X_MAX_SENSORS)- Used when connecting multiple VL53L0X + GPIO_TFMINIPLUS_TX, GPIO_TFMINIPLUS_RX, // TFmini Plus ToF sensor GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -330,6 +331,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_XPT2046_CS "|" D_SENSOR_CSE7761_TX "|" D_SENSOR_CSE7761_RX "|" D_SENSOR_VL53L0X_XSHUT "|" + D_SENSOR_TFMINIPLUS_TX "|" D_SENSOR_TFMINIPLUS_RX "|" ; const char kSensorNamesFixed[] PROGMEM = @@ -561,6 +563,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_HX711_SCK), // HX711 Load Cell clock AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data #endif +#ifdef USE_TFMINIPLUS + AGPIO(GPIO_TFMINIPLUS_TX), // TFmini Plus TX pin + AGPIO(GPIO_TFMINIPLUS_RX), // TFmini Plus RX pin +#endif /*-------------------------------------------------------------------------------------------*\ * Energy sensors diff --git a/tasmota/xsns_88_tfminiplus.ino b/tasmota/xsns_88_tfminiplus.ino new file mode 100644 index 000000000..22905ae64 --- /dev/null +++ b/tasmota/xsns_88_tfminiplus.ino @@ -0,0 +1,251 @@ +/* + xsns_88_tfminiplus.ino - TFmini Plus interface for Tasmota + + Created by Raphael Breiting on 12.11.2020. + + Copyright (C) 2021 Raphael Breiting and Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +// Conditional compilation of driver +#ifdef USE_TFMINIPLUS + +/*****************************************************************************\ + * TFmini, TFmini Plus, TFmini Plus (Indoor Version), TFmini-S - LiDAR Module + * Manufacturer: Benewake (Beijing) Co. Ltd. + * + * Code for Time-Of-Flight (TOF) family single-point short-range LiDAR sensor + * modules with UART interface. + * + * Connection Description for GH1.25-4P (Molex51021-0400) connector: + * No Color Corresponding PIN Function Comment + * 1 RED PIN-1 +5V Power Supply + * 2 WHITE PIN-2 RxD/SDA Receiving/Data + * 3 GREEN PIN-3 TxD/SCL Transmitting/Clock + * 4 BLACK PIN-4 GND Ground + * + * Before connecting module to Tasmota, please prepare module with + * the following sequence through terminal program (e.g. Termite): + * 1. Connect sensor to USB-to-UART (TTL 3.3V) + * 2. Set terminal to 115200bps and 8N1 + * 3. Set frame rate to 0 (zero): + * send -->: 5A0603000000 + * receive <-- (OK): 5A0603000000 + * 4. Set baud rate to 9600bps + * send -->: 5A0806802500000D + * receive <-- (OK): 5A0806802500000D + * 5. Set terminal to 9600bps and 8N1 + * 6. Save settings + * send -->: 5A04116F + * receive <-- (OK): 5A05110070 + * receive <-- (FAIL): 5A05110071 + * 7. When point 6 returned OK, than ready to connect to Tasmota! :) + * When point 6 returned FAIL, start with item 1 and + * - check connection of RX and TX pin are not exchanged + * - check power supply + * - 5V +-0,5V + * - 110mA average + * - 140mA max peak + * + * References: + * - http://en.benewake.com/product + * - https://de.aliexpress.com/item/32852024277.html?spm=a2g0s.9042311.0.0.27424c4d5Edizk + * - https://de.aliexpress.com/item/4001076614996.html?spm=a2g0s.9042311.0.0.27424c4d5Edizk +\*****************************************************************************/ + +#include + +// Define driver ID +#define XSNS_88 88 + +// Use special no wait serial driver, should be always on +#ifndef ESP32 +#define SPECIAL_SS +#endif + +// Default baudrate +#define BAUDRATE 9600 + +// Serial buffer length for incoming data +#define TFMP_MAX_DATA_LEN 9 + +char Tfmp_buffer[TFMP_MAX_DATA_LEN + 1]; + +struct xsns_88_tfminiplus +{ + bool ready = false; + uint16_t distance = 0; + uint16_t sigstrength = 0; + uint16_t chiptemp = 0; +} tfminiplus_sensor; + +// Software and hardware serial pointers +#ifdef ESP8266 +TasmotaSerial *TfmpSerial = nullptr; +#endif // ESP8266 +#ifdef ESP32 +HardwareSerial *TfmpSerial = nullptr; +#endif // ESP32 + +void TfmpInit(void) +{ + if (!tfminiplus_sensor.ready) + { + if (PinUsed(GPIO_TFMINIPLUS_RX) && PinUsed(GPIO_TFMINIPLUS_TX)) + { + TfmpSerial = new TasmotaSerial(Pin(GPIO_TFMINIPLUS_RX), Pin(GPIO_TFMINIPLUS_TX)); + if (TfmpSerial->begin(BAUDRATE)) + { + if (TfmpSerial->hardwareSerial()) + { + ClaimSerial(); + } + tfminiplus_sensor.ready = true; + TfmpSerial->flush(); + } + } + } +} + +void TfmpTrigger(void) +{ + if (TfmpSerial && tfminiplus_sensor.ready) + { + TfmpSerial->write(0x5A); + TfmpSerial->write(0x04); + TfmpSerial->write(0x04); + TfmpSerial->write(0x62); + } +} + +void TfmpProcessData(void) +{ + uint16_t crc = 0; + // distance to object (default in cm) + tfminiplus_sensor.distance = (Tfmp_buffer[3] << 8) + Tfmp_buffer[2]; + // signal strength (between 100 and 65535 fine, otherwise 0 due to out of range of non-reflective surface) + tfminiplus_sensor.sigstrength = (Tfmp_buffer[5] << 8) + Tfmp_buffer[4]; + // chip temperature + tfminiplus_sensor.chiptemp = (((Tfmp_buffer[7] << 8) + Tfmp_buffer[6]) >> 3) - 256; + // check crc sum + for (int i = 0; i < TFMP_MAX_DATA_LEN - 1; ++i) + { + crc += (uint16_t)Tfmp_buffer[i]; + } + if (!(char)(crc & 0xff) != Tfmp_buffer[TFMP_MAX_DATA_LEN]) + { + DEBUG_SENSOR_LOG(PSTR("TFmini Plus: crc error")); + } + DEBUG_SENSOR_LOG(PSTR("TFmini Plus: Distance: %d"), tfminiplus_sensor.distance); + DEBUG_SENSOR_LOG(PSTR("TFmini Plus: Signal: %d"), tfminiplus_sensor.sigstrength); + DEBUG_SENSOR_LOG(PSTR("TFmini Plus: Chip Temp: %d"), tfminiplus_sensor.chiptemp); + TfmpSerial->flush(); +} + +void TfmpProcessSerialData (void) +{ + uint8_t data; + bool dataReady; + if (TfmpSerial && tfminiplus_sensor.ready) + { + while (TfmpSerial->available() > 0) + { + data = TfmpSerial->read(); + dataReady = addData((char)data); + if (dataReady) + { + TfmpProcessData(); + } + } + } +} + +bool addData(char nextChar) +{ + // Buffer position + static uint8_t currentIndex = 0; + // Store data into buffer at position + Tfmp_buffer[currentIndex] = nextChar; + currentIndex++; + // Check for too many data + if (currentIndex >= TFMP_MAX_DATA_LEN) + { + // Terminate buffer and reset position + Tfmp_buffer[TFMP_MAX_DATA_LEN] = '\0'; + currentIndex = 0; + return true; + } + return false; +} + +#ifdef USE_WEBSERVER +// {s} = , {m} = , {e} = +const char HTTP_SNS_DISTANCE_CM[] PROGMEM = "{s} " D_DISTANCE "{m}%d" D_UNIT_CENTIMETER "{e}"; +const char HTTP_SNS_SIGNALSTRENGTH[] PROGMEM = "{s} " D_SIGNALSTRENGTH "{m}%d{e}"; +const char HTTP_SNS_CHIPTEMPERATURE[] PROGMEM = "{s} " D_CHIPTEMPERATURE "{m}%d" D_UNIT_DEGREE D_UNIT_CELSIUS "{e}"; +#endif // USE_WEBSERVER + +void TfmpShow(bool json) +{ + if (json) { + ResponseAppend_P(PSTR(",\"TFmini Plus\":{\"" D_JSON_DISTANCE "\":\"%d\",\"" D_JSON_SIGNALSTRENGTH "\":\"%d\",\"" D_JSON_CHIPTEMPERATURE "\":%d}"), + tfminiplus_sensor.distance, tfminiplus_sensor.sigstrength, tfminiplus_sensor.chiptemp); +#ifdef USE_DOMOTICZ + if (0 == TasmotaGlobal.tele_period) { + DomoticzFloatSensor(DZ_COUNT, tfminiplus_sensor.distance); + } +#endif // USE_DOMOTICZ +#ifdef USE_WEBSERVER + } else { + WSContentSend_P("{s}TFmini Plus"); + WSContentSend_P(HTTP_SNS_DISTANCE_CM, tfminiplus_sensor.distance); + WSContentSend_P(HTTP_SNS_SIGNALSTRENGTH, tfminiplus_sensor.sigstrength); + WSContentSend_P(HTTP_SNS_CHIPTEMPERATURE, tfminiplus_sensor.chiptemp); +#endif // USE_WEBSERVER + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xsns88(byte callback_id) +{ + bool result = false; + switch (callback_id) { + case FUNC_INIT: + TfmpInit(); + break; + case FUNC_EVERY_SECOND: + TfmpTrigger(); + TfmpProcessSerialData(); + result = true; + break; + case FUNC_JSON_APPEND: + TfmpShow(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + TfmpShow(0); + break; +#endif // USE_WEBSERVER + case FUNC_SAVE_BEFORE_RESTART: + break; + case FUNC_COMMAND: + break; + } + return result; +} +#endif // USE_TFMINIPLUS \ No newline at end of file diff --git a/tools/decode-status.py b/tools/decode-status.py index 4e12be5d5..3f91107e2 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -249,7 +249,7 @@ a_features = [[ "USE_BS814A2","USE_SEESAW_SOIL","USE_WIEGAND","USE_NEOPOOL", "USE_TOF10120","USE_SDM72","USE_DISPLAY_TM1637","USE_PROJECTOR_CTRL" ],[ - "","","","", + "USE_TFMINIPLUS","","","", "","","","", "","","","", "","","","",