diff --git a/tasmota/i18n.h b/tasmota/i18n.h index accb88938..13f2c494e 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 "SignalStrength" +#define D_JSON_CHIPTEMPERATURE "ChipTemperature" #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 7693ec42c..887bd73b5 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_86_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" @@ -804,6 +808,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 96d1783c1..e966f0662 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_86_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 "Потребит." @@ -803,6 +807,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 9359c0c3a..30c91935f 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_86_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" @@ -804,6 +808,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 e042317bd..7fd63790f 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_86_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" @@ -804,6 +808,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 677ea5c1d..7db3f5f25 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_86_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" @@ -804,6 +808,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 a2afce3f0..260b5281f 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_86_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" @@ -804,6 +808,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 4316797d7..ed5d32f31 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_86_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" @@ -804,6 +808,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 283404723..b39f2a2de 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,12 @@ #define D_SENSOR_NEOPOOL_TX "NeoPool TX" #define D_SENSOR_NEOPOOL_RX "NeoPool RX" #define D_SENSOR_VL53L0X_XSHUT "VL53L0X XSHUT" +#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" + #define D_NEW_ADDRESS "Positionner l'adresse à" #define D_OUT_OF_RANGE "Hors limites" #define D_SENSOR_DETECTED "détecté" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index ca6688f57..f0d9ea77a 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_86_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" @@ -804,6 +808,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 0b4374f5c..04866263f 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_86_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 "משתמש" @@ -804,6 +808,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 5c4b3a150..a18f61cea 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_86_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" @@ -804,6 +808,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 c449f9362..58cde05d8 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_86_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" @@ -804,6 +808,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 442aaa4cb..07218d28e 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_86_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" @@ -804,6 +808,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 87ad91eae..69b33210e 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_86_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" @@ -804,6 +808,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 da1151789..86f2bb96c 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_86_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" @@ -804,6 +808,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 138799cbd..a2190b65a 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_86_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" @@ -804,6 +808,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 c448703bd..e56c35c85 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_86_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" @@ -804,6 +808,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 9329d95ef..93f56aaf8 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_86_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" @@ -804,6 +808,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 ac7a9479a..41eb8b22a 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_86_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" @@ -804,6 +808,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 1342d88ae..5ddd6216f 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_86_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" @@ -804,6 +808,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 1300e6295..6858db33d 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_86_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" @@ -804,6 +808,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 bcf01e1ea..d9b98f878 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_86_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" @@ -804,6 +808,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 27527d226..b47c1543d 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_86_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 "Користувач" @@ -804,6 +808,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 5b9b2c9c2..6d12d62a2 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_86_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" @@ -804,6 +808,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 9f99d4cf8..7cfc79ac8 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_86_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" @@ -804,6 +808,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 cfeed1ff7..3498ec214 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_86_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 "使用者" @@ -804,6 +808,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 f27f920d5..56315acd5 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -704,6 +704,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 support for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface (+0k8) // -- 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 fa25e67f0..59257154a 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 951a69c4c..3fed9cfe2 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -286,6 +286,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 support 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 4bdeee62d..fa937ad05 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_MAX7219CLK, GPIO_MAX7219DIN, GPIO_MAX7219CS, // MAX7219 interface GPIO_SENSOR_END }; @@ -331,6 +332,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 "|" D_SENSOR_MAX7219_CLK "|" D_SENSOR_MAX7219_DIN "|" D_SENSOR_MAX7219_CS "|" ; @@ -563,6 +565,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_86_tfminiplus.ino b/tasmota/xsns_86_tfminiplus.ino new file mode 100644 index 000000000..341f097a0 --- /dev/null +++ b/tasmota/xsns_86_tfminiplus.ino @@ -0,0 +1,250 @@ +/* + xsns_86_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_86 86 + +// 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_86_tfminiplus +{ + bool ready = false; + uint16_t distance = 0; + uint16_t sigstrength = 0; + uint16_t chiptemp = 0; +} tfminiplus_sensor; + +// Software and hardware serial pointers +TasmotaSerial *TfmpSerial = nullptr; + +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), 1); + 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 = TfmpAddData((char)data); + if (dataReady) + { + TfmpProcessData(); + } + } + } +} + +bool TfmpAddData(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 Xsns86(byte callback_id) +{ + bool result = false; + if (FUNC_INIT == callback_id) + { + TfmpInit(); + } + else if (TfmpSerial && tfminiplus_sensor.ready) + { + switch (callback_id) { + 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","","","", "","","","", "","","","", "","","","",