From 01e31985249350f4b5a4463f53887672c80d340b Mon Sep 17 00:00:00 2001 From: Charles Date: Fri, 19 Jun 2020 02:13:17 +0200 Subject: [PATCH 1/5] Sync from upstream --- tasmota/tasmota_template_ESP32.h | 33 ++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/tasmota/tasmota_template_ESP32.h b/tasmota/tasmota_template_ESP32.h index f6424bfbf..6571dec1c 100644 --- a/tasmota/tasmota_template_ESP32.h +++ b/tasmota/tasmota_template_ESP32.h @@ -129,6 +129,8 @@ enum UserSelectablePins { GPIO_WINDMETER_SPEED, // WindMeter speed counter pin GPIO_KEY1_TC, // Touch pin as button GPIO_BL0940_RX, // BL0940 serial interface + GPIO_TCP_TX, GPIO_TCP_RX, // TCP to serial bridge + GPIO_ETH_PHY_POWER, GPIO_ETH_PHY_MDC, GPIO_ETH_PHY_MDIO, // Ethernet GPIO_TELEINFO_RX, // Teleinfo telemetry data receive pin GPIO_TELEINFO_ENABLE, // Teleinfo Enable Receive Pin GPIO_SENSOR_END }; @@ -221,7 +223,9 @@ const char kSensorNames[] PROGMEM = D_SENSOR_BOILER_OT_RX "|" D_SENSOR_BOILER_OT_TX "|" D_SENSOR_WINDMETER_SPEED "|" D_SENSOR_BUTTON "_tc|" D_SENSOR_BL0940_RX "|" - D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE + D_SENSOR_TCP_TXD "|" D_SENSOR_TCP_RXD "|" + D_SENSOR_ETH_PHY_POWER "|" D_SENSOR_ETH_PHY_MDC "|" D_SENSOR_ETH_PHY_MDIO "|" + D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE ; const char kSensorNamesFixed[] PROGMEM = @@ -236,6 +240,7 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_KEY1_NP) + MAX_KEYS, AGPIO(GPIO_KEY1_INV) + MAX_KEYS, AGPIO(GPIO_KEY1_INV_NP) + MAX_KEYS, + AGPIO(GPIO_KEY1_TC) + MAX_KEYS, // Touch button AGPIO(GPIO_SWT1) + MAX_SWITCHES, // User connected external switches AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, AGPIO(GPIO_REL1) + MAX_RELAYS, // Relays @@ -418,6 +423,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface #endif +#ifdef USE_TCP_BRIDGE + AGPIO(GPIO_TCP_TX), // TCP Serial bridge + AGPIO(GPIO_TCP_RX), // TCP Serial bridge +#endif #ifdef USE_ZIGBEE AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface @@ -555,7 +564,11 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_WEBCAM_HSD) + MAX_WEBCAM_HSD, AGPIO(GPIO_WEBCAM_PSRCS), #endif - AGPIO(GPIO_KEY1_TC) + MAX_KEYS +#ifdef USE_ETHERNET + AGPIO(GPIO_ETH_PHY_POWER), + AGPIO(GPIO_ETH_PHY_MDC), + AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet +#endif }; //******************************************************************************************** @@ -610,19 +623,18 @@ typedef struct MYTMPLT { /********************************************************************************************/ // Supported hardware modules enum SupportedModules { - WEMOS, ESP32_CAM_AITHINKER, ESP32_DENKY, + WEMOS, ESP32_CAM_AITHINKER, MAXMODULE}; #define USER_MODULE 255 const char kModuleNames[] PROGMEM = - "ESP32-DevKit|ESP32 Cam AiThinker|Denky (Teleinfo)"; + "ESP32-DevKit|ESP32 Cam AiThinker"; // Default module settings const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { WEMOS, - ESP32_CAM_AITHINKER, - ESP32_DENKY + ESP32_CAM_AITHINKER }; const mytmplt kModules PROGMEM = @@ -670,6 +682,15 @@ const mytmplt kModules PROGMEM = 0 // Flag }; +/*********************************************************************************************\ + Known templates + +{"NAME":"AITHINKER CAM","GPIO":[4992,65504,65504,65504,65504,5088,65504,65504,65504,65504,65504,65504,65504,65504,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,65504,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":1} +{"NAME":"Olimex ESP32-PoE","GPIO":[65504,65504,65504,65504,65504,65504,0,0,5536,65504,65504,65504,65504,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,65504,65504,65504,65504,65504,0,0,65504],"FLAG":0,"BASE":1} + +\*********************************************************************************************/ + + #endif // ESP32 #endif // _TASMOTA_TEMPLATE_ESP32_H_ From 2cf1abff835311e54604eb29d2405219afc808fe Mon Sep 17 00:00:00 2001 From: Charles Date: Fri, 19 Jun 2020 02:28:09 +0200 Subject: [PATCH 2/5] Updated ESP32 template --- tasmota/xnrg_15_teleinfo.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/xnrg_15_teleinfo.ino b/tasmota/xnrg_15_teleinfo.ino index 8d552d771..4f8b3911b 100755 --- a/tasmota/xnrg_15_teleinfo.ino +++ b/tasmota/xnrg_15_teleinfo.ino @@ -24,8 +24,8 @@ * Source: http://hallard.me/category/tinfo/ * * Denky ESP32 Teleinfo Template - * {"NAME":"Denky (Teleinfo)","GPIO":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} - * + * {"NAME":"Denky (Teleinfo)","GPIO":[1,1,1,1,5664,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1376,1,1,0,0,0,0,1,5632,1,1,1,0,0,1],"FLAG":0,"BASE":1} + * * Denky (aka WifInfo) ESP8266 Teleinfo Template * {"NAME":"WifInfo","GPIO":[7,255,255,208,6,5,255,255,255,255,255,255,255],"FLAG":15,"BASE":18} * From 51c1cd3148f4a47dd16b07fcae0455137a37610f Mon Sep 17 00:00:00 2001 From: Charles Date: Fri, 19 Jun 2020 02:38:15 +0200 Subject: [PATCH 3/5] Added Teleinfo template --- tasmota/tasmota_template_ESP32.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_template_ESP32.h b/tasmota/tasmota_template_ESP32.h index 1db249ed3..32b61ccf2 100644 --- a/tasmota/tasmota_template_ESP32.h +++ b/tasmota/tasmota_template_ESP32.h @@ -693,6 +693,7 @@ const mytmplt kModules PROGMEM = {"NAME":"AITHINKER CAM","GPIO":[4992,1,1,1,1,5088,1,1,1,1,1,1,1,1,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,1,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":1} {"NAME":"Olimex ESP32-PoE","GPIO":[1,1,1,1,1,1,0,0,5536,1,1,1,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} {"NAME":"wESP32","GPIO":[1,1,1,1,1,1,0,0,0,1,1,1,5568,5600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} +{"NAME":"Denky (Teleinfo)","GPIO":[1,1,1,1,5664,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1376,1,1,0,0,0,0,1,5632,1,1,1,0,0,1],"FLAG":0,"BASE":1} \*********************************************************************************************/ From 0d36f5bda8e8429343da6c76186be1dcd17230b9 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 10 Aug 2020 17:42:31 +0200 Subject: [PATCH 4/5] Added Denky Teleinfo --- tasmota/language/bg_BG.h | 9 +++++++++ tasmota/language/cs_CZ.h | 9 +++++++++ tasmota/language/de_DE.h | 9 +++++++++ tasmota/language/el_GR.h | 9 +++++++++ tasmota/language/en_GB.h | 9 +++++++++ tasmota/language/es_ES.h | 9 +++++++++ tasmota/language/fr_FR.h | 9 +++++++++ tasmota/language/he_HE.h | 9 +++++++++ tasmota/language/hu_HU.h | 9 +++++++++ tasmota/language/it_IT.h | 9 +++++++++ tasmota/language/ko_KO.h | 9 +++++++++ tasmota/language/nl_NL.h | 9 +++++++++ tasmota/language/pl_PL.h | 9 +++++++++ tasmota/language/pt_BR.h | 9 +++++++++ tasmota/language/pt_PT.h | 9 +++++++++ tasmota/language/ro_RO.h | 9 +++++++++ tasmota/language/ru_RU.h | 9 +++++++++ tasmota/language/sk_SK.h | 9 +++++++++ tasmota/language/sv_SE.h | 9 +++++++++ tasmota/language/tr_TR.h | 9 +++++++++ tasmota/language/uk_UA.h | 9 +++++++++ tasmota/language/zh_CN.h | 9 +++++++++ tasmota/language/zh_TW.h | 9 +++++++++ 23 files changed, 207 insertions(+) diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index d66f7f2c4..666fada9b 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_BG_BG_H_ diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index a4967cf76..17ffaa046 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_CS_CZ_H_ diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 34b9ea95e..271dbc056 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_DE_DE_H_ diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 9f3bff980..f3cf5d462 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_EL_GR_H_ diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index b30843b92..b65848dfe 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_EN_GB_H_ diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 4eff2f17e..53df0312d 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_ES_ES_H_ diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 6bf85bf4d..503ee0792 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Type contrat" +#define D_POWER_LOAD "Charge actuelle" +#define D_CURRENT_TARIFF "Tarif en cours" +#define D_TARIFF "Tarif" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Puissance max" +#define D_MAX_CURRENT "Courant max" + #endif // _LANGUAGE_FR_FR_H_ diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index efe3bac98..763c8f09e 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_HE_HE_H_ diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 97a7511e8..251d1b919 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_HU_HU_H_ diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 5441fed1d..60d013760 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm - RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm - TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_IT_IT_H_ diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index d46c29a83..27748c1b5 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_KO_KO_H_ diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 167d4a536..a8a238f62 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_NL_NL_H_ diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 7924989a6..145f5a012 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_PL_PL_D_H_ diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 584c3e11f..ec84e8d4c 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_PT_BR_H_ diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 10e444afe..a593f0387 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_PT_PT_H_ diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index f6d29fb70..254becc0a 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_RO_RO_H_ diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 7655e30ce..42ffc71a3 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_RU_RU_H_ diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index a29b1ec5a..3a6bde464 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_SK_SK_H_ diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index e473eba5a..750413c9a 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_SV_SE_H_ diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index c436ccc34..ee5c37f6d 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_TR_TR_H_ diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 350702b21..7279149ac 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_UK_UA_H_ diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 238f65f9a..b86fabc53 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_ZH_CN_H_ diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 4a3a03b8c..eb98e22a9 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -830,4 +830,13 @@ #define D_SENSOR_BOILER_OT_RX "OpenTherm RX" #define D_SENSOR_BOILER_OT_TX "OpenTherm TX" +// xnrg_15_teleinfo Denky (Teleinfo) +#define D_CONTRACT "Contract" +#define D_POWER_LOAD "Power load" +#define D_CURRENT_TARIFF "Current Tariff" +#define D_TARIFF "Tariff" +#define D_OVERLOAD "ADPS" +#define D_MAX_POWER "Max Power" +#define D_MAX_CURRENT "Max Current" + #endif // _LANGUAGE_ZH_TW_H_ From 2c2537ad220c3d51f2a7f7f0df289e21c3d6195e Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 10 Aug 2020 17:43:07 +0200 Subject: [PATCH 5/5] Added Label, Send all Teleinfo data in MQTT frame --- tasmota/xnrg_15_teleinfo.ino | 127 ++++++++++++++++++++++------------- 1 file changed, 82 insertions(+), 45 deletions(-) diff --git a/tasmota/xnrg_15_teleinfo.ino b/tasmota/xnrg_15_teleinfo.ino index 4f8b3911b..a44eca53b 100755 --- a/tasmota/xnrg_15_teleinfo.ino +++ b/tasmota/xnrg_15_teleinfo.ino @@ -27,7 +27,7 @@ * {"NAME":"Denky (Teleinfo)","GPIO":[1,1,1,1,5664,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1376,1,1,0,0,0,0,1,5632,1,1,1,0,0,1],"FLAG":0,"BASE":1} * * Denky (aka WifInfo) ESP8266 Teleinfo Template - * {"NAME":"WifInfo","GPIO":[7,255,255,208,6,5,255,255,255,255,255,255,255],"FLAG":15,"BASE":18} + * {"NAME":"WifInfo","GPIO":[7,255,255,210,6,5,255,255,255,255,255,255,255],"FLAG":15,"BASE":18} * \*********************************************************************************************/ @@ -85,26 +85,29 @@ const char kTarifName[] PROGMEM = enum TInfoLabel{ LABEL_BASE = 1, + LABEL_ADCO, LABEL_HCHC, LABEL_HCHP, LABEL_OPTARIF, LABEL_ISOUSC, LABEL_PTEC, - LABEL_PAPP, LABEL_IINST, LABEL_IMAX, LABEL_TENSION, + LABEL_PAPP, LABEL_IINST, LABEL_TENSION, + LABEL_IMAX, LABEL_PMAX, LABEL_DEMAIN, LABEL_END }; const char kLabel[] PROGMEM = - "|BASE|HCHC|HCHP" + "|BASE|ADCO|HCHC|HCHP" "|OPTARIF|ISOUSC|PTEC" - "|PAPP|IINST|IMAX|TENSION" + "|PAPP|IINST|TENSION" + "|IMAX|PMAX" "|DEMAIN" ; TInfo tinfo; // Teleinfo object TasmotaSerial *TInfoSerial = nullptr; bool tinfo_found = false; -uint8_t contrat; -uint8_t tarif; -uint8_t isousc; +int contrat; +int tarif; +int isousc; /*********************************************************************************************/ @@ -133,16 +136,24 @@ Input : phase number 2 for ADIR2 triphase 3 for ADIR3 triphase Output : - -Comments: should have been initialised in the main sketch with a +Comments: should have been initialised with a tinfo.attachADPSCallback(ADPSCallback()) ====================================================================== */ void ADPSCallback(uint8_t phase) { - // n = phase number 1 to 3 - if (phase == 0){ - phase = 1; - } - AddLog_P2(LOG_LEVEL_INFO, PSTR("ADPS on phase %d"), phase); + char adco[13]; + + // n = phase number 1 to 3 + if (phase == 0){ + phase = 1; + } + + if (getValueFromLabelIndex(LABEL_ADCO, adco)) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":{\"ADPS\":%i}}"), adco, phase ); + MqttPublishPrefixTopic_P(RESULT_OR_TELE, mqtt_data); + } + + AddLog_P2(LOG_LEVEL_INFO, PSTR("ADPS on phase %d"), phase); } /* ====================================================================== @@ -323,20 +334,23 @@ void TInfoInit(void) } TInfoSerial = new TasmotaSerial(rx_pin, -1, 1); - // pinMode(GPIO_TELEINFO_RX, INPUT_PULLUP); + //pinMode(rx_pin, INPUT_PULLUP); // Trick here even using SERIAL_7E1 or TS_SERIAL_7E1 // this is not working, need to call SetSerialConfig after if (TInfoSerial->begin(TINFO_SPEED)) { - // This is a hack, looks like begin does not take into account - // the TS_SERIAL_7E1 configuration so on ESP8266 this is - // working only on Serial RX pin (Hardware Serial) for now - SetSerialConfig(TS_SERIAL_7E1); - TInfoSerial->setTimeout(TINFO_READ_TIMEOUT); + #if defined (ESP8266) if (TInfoSerial->hardwareSerial() ) { ClaimSerial(); + + // This is a hack, looks like begin does not take into account + // the TS_SERIAL_7E1 configuration so on ESP8266 this is + // working only on Serial RX pin (Hardware Serial) for now + SetSerialConfig(TS_SERIAL_7E1); + TInfoSerial->setTimeout(TINFO_READ_TIMEOUT); + AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: using hardware serial")); } else { AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: using software serial")); @@ -352,6 +366,7 @@ void TInfoInit(void) tinfo.attachData(DataCallback); tinfo.attachNewFrame(NewFrameCallback); tinfo_found = true; + AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: Ready")); } } @@ -393,9 +408,11 @@ Comments: - const char HTTP_ENERGY_INDEX_TELEINFO[] PROGMEM = "{s}%s{m}%s " D_UNIT_WATTHOUR "{e}" ; const char HTTP_ENERGY_PAPP_TELEINFO[] PROGMEM = "{s}" D_POWERUSAGE "{m}%d " D_UNIT_WATT "{e}" ; const char HTTP_ENERGY_IINST_TELEINFO[] PROGMEM = "{s}" D_CURRENT "{m}%d " D_UNIT_AMPERE "{e}" ; -const char HTTP_ENERGY_TARIF_TELEINFO[] PROGMEM = "{s}Tarif en cours{m}Heures %s{e}" ; -const char HTTP_ENERGY_CONTRAT_TELEINFO[] PROGMEM = "{s}Contrat{m}%s %d" D_UNIT_AMPERE "{e}" ; -const char HTTP_ENERGY_LOAD_TELEINFO[] PROGMEM = "{s}Charge actuelle{m}%d" D_UNIT_PERCENT "{e}" ; +const char HTTP_ENERGY_TARIF_TELEINFO[] PROGMEM = "{s}" D_CURRENT_TARIFF "{m}Heures %s{e}" ; +const char HTTP_ENERGY_CONTRAT_TELEINFO[] PROGMEM = "{s}" D_CONTRACT "{m}%s %d" D_UNIT_AMPERE "{e}" ; +const char HTTP_ENERGY_LOAD_TELEINFO[] PROGMEM = "{s}" D_POWER_LOAD "{m}%d" D_UNIT_PERCENT "{e}" ; +const char HTTP_ENERGY_IMAX_TELEINFO[] PROGMEM = "{s}" D_MAX_CURRENT "{m}%d" D_UNIT_AMPERE "{e}" ; +const char HTTP_ENERGY_PMAX_TELEINFO[] PROGMEM = "{s}" D_MAX_POWER "{m}%d" D_UNIT_WATT "{e}" ; #endif // USE_WEBSERVER void TInfoShow(bool json) @@ -405,29 +422,44 @@ void TInfoShow(bool json) // Since it's an Energy device , current, voltage and power are // already present on the telemetry frame. No need to add here - // Just add the specific and missing ones there + // Just add the raw label/values of the teleinfo frame if (json) { - if ( getValueFromLabelIndex(LABEL_PTEC, value) ) { - ResponseAppend_P(PSTR(",\"" "TARIF" "\":\"%s\""), value); - } - - GetTextIndexed(name, sizeof(name), LABEL_ISOUSC, kLabel); - ResponseAppend_P(PSTR(",\"%s\":%d"), name, isousc); - - if ( getValueFromLabelIndex(LABEL_HCHC, value) ) { - GetTextIndexed(name, sizeof(name), LABEL_HCHC, kLabel); - ResponseAppend_P(PSTR(",\"%s\":\"%u\""), name, atoi(value)); - } - if ( getValueFromLabelIndex(LABEL_HCHP, value) ) { - GetTextIndexed(name, sizeof(name), LABEL_HCHP, kLabel); - ResponseAppend_P(PSTR(",\"%s\":\"%u\""),name , atoi(value)); - } + struct _ValueList * me = tinfo.getList(); + // Calculated values if (isousc) { - ResponseAppend_P(PSTR(",\"Load\":\"%d\""),(int) ((Energy.current[0]*100.0f) / isousc)); + ResponseAppend_P(PSTR(",\"Load\":%d"),(int) ((Energy.current[0]*100.0f) / isousc)); } + // Loop thru all the teleinfo frame + while (me->next) { + // go to next node + me = me->next; + + if (me->name && me->value && *me->name && *me->value) { + boolean isNumber = true; + char * p = me->value; + + // check if value is number + while (*p && isNumber) { + if ( *p < '0' || *p > '9' ) { + isNumber = false; + } + p++; + } + + // this will add "" on not number values + ResponseAppend_P(PSTR(",\"%s\":"), me->name); + if (!isNumber) { + ResponseAppend_P(PSTR("\"%s\""), me->value); + } else { + ResponseAppend_P(PSTR("%u"), atol(me->value)); + } + } + } + + #ifdef USE_WEBSERVER } else @@ -440,17 +472,22 @@ void TInfoShow(bool json) GetTextIndexed(name, sizeof(name), LABEL_HCHP, kLabel); WSContentSend_PD(HTTP_ENERGY_INDEX_TELEINFO, name, value); } + if (getValueFromLabelIndex(LABEL_IMAX, value) ) { + WSContentSend_PD(HTTP_ENERGY_IMAX_TELEINFO, atoi(value)); + } + if (getValueFromLabelIndex(LABEL_PMAX, value) ) { + WSContentSend_PD(HTTP_ENERGY_PMAX_TELEINFO, atoi(value)); + } + if (tarif) { GetTextIndexed(name, sizeof(name), tarif-1, kTarifName); - WSContentSend_PD(HTTP_ENERGY_TARIF_TELEINFO, name,value); + WSContentSend_PD(HTTP_ENERGY_TARIF_TELEINFO, name); } - if (contrat) { + if (contrat && isousc) { + int percent = (int) ((Energy.current[0]*100.0f) / isousc) ; GetTextIndexed(name, sizeof(name), contrat, kContratName); WSContentSend_PD(HTTP_ENERGY_CONTRAT_TELEINFO, name, isousc); - if (isousc) { - int percent = (int) ((Energy.current[0]*100.0f) / isousc) ; - WSContentSend_PD(HTTP_ENERGY_LOAD_TELEINFO, percent); - } + WSContentSend_PD(HTTP_ENERGY_LOAD_TELEINFO, percent); } #endif // USE_WEBSERVER }