From a05f731a4247a6614d73e7471ceceec0026c7316 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 3 Oct 2022 17:13:01 +0200 Subject: [PATCH] Fix Shelly Plus 2PM column swap - Fix Shelly Plus 2PM column swap - Prep Shelly Plus 2PM ADE7953 reset pin --- tasmota/include/tasmota_template.h | 3 ++ tasmota/language/af_AF.h | 1 + tasmota/language/bg_BG.h | 1 + tasmota/language/ca_AD.h | 1 + tasmota/language/cs_CZ.h | 1 + tasmota/language/de_DE.h | 1 + tasmota/language/el_GR.h | 1 + tasmota/language/en_GB.h | 1 + tasmota/language/es_ES.h | 1 + tasmota/language/fr_FR.h | 1 + tasmota/language/fy_NL.h | 1 + tasmota/language/he_HE.h | 1 + tasmota/language/hu_HU.h | 1 + tasmota/language/it_IT.h | 1 + tasmota/language/ko_KO.h | 1 + tasmota/language/nl_NL.h | 1 + tasmota/language/pl_PL.h | 1 + tasmota/language/pt_BR.h | 1 + tasmota/language/pt_PT.h | 1 + tasmota/language/ro_RO.h | 1 + tasmota/language/ru_RU.h | 1 + tasmota/language/sk_SK.h | 1 + tasmota/language/sv_SE.h | 1 + tasmota/language/tr_TR.h | 1 + tasmota/language/uk_UA.h | 1 + tasmota/language/vi_VN.h | 1 + tasmota/language/zh_CN.h | 1 + tasmota/language/zh_TW.h | 1 + .../tasmota_xnrg_energy/xnrg_07_ade7953.ino | 32 ++++++++++++------- 29 files changed, 51 insertions(+), 11 deletions(-) diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index 14edc0fd0..293a1fa04 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -195,6 +195,7 @@ enum UserSelectablePins { GPIO_REL1_BI, GPIO_REL1_BI_INV, // 8 x Relays bistable GPIO_I2S_MCLK, GPIO_MBR_TX, GPIO_MBR_RX, // Modbus Bridge Serial interface + GPIO_ADE7953_RST, // ADE7953 Reset GPIO_SENSOR_END }; // Error as warning to rethink GPIO usage @@ -437,6 +438,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_RELAY "_b|" D_SENSOR_RELAY "_bi|" D_SENSOR_I2S_MCLK "|" D_SENSOR_MBR_TX "|" D_SENSOR_MBR_RX "|" + D_SENSOR_ADE7953_RST "|" ; const char kSensorNamesFixed[] PROGMEM = @@ -770,6 +772,7 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif #if defined(USE_I2C) && defined(USE_ADE7953) AGPIO(GPIO_ADE7953_IRQ) + 2, // ADE7953 IRQ + AGPIO(GPIO_ADE7953_RST), // ADE7953 Reset #endif #ifdef USE_CSE7761 AGPIO(GPIO_CSE7761_TX), // CSE7761 Serial interface (Dual R3) diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index d95a6784d..1ea5eb210 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Gonser" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 621c46c8d..7b97a7f56 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Зумер" #define D_SENSOR_DISP_RESET "Нулиране дисплей" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index d84d7cbfd..cf8cd8244 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Brunzidor" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 0c36cc121..9576c1029 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index a612e393b..fb08ffa19 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index bff351bb3..55da887d6 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index dfadd7372..ff0ea4b33 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index cbf7e58e3..32a502308 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index b22d8203d..6a003f0b4 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE DAT" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "ZigBee TX" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 551d7107a..c74008122 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Zoemer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 445224746..bc59a86c1 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 9b4a1af86..fc4cd8bc4 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index e63008ea1..7025133df 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -755,6 +755,7 @@ #define D_SENSOR_HRE_DATA "HRE - Dati" #define D_SENSOR_ADE7880_IRQ "ADE7880 - IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 - IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 - RST" #define D_SENSOR_BUZZER "Cicalino" #define D_SENSOR_DISP_RESET "Display - RESET" #define D_SENSOR_ZIGBEE_TXD "Zigbee - TX" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index c6db32664..a4d894717 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index ccb5eaca6..22e7a2370 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Zoemer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 8f33f9b84..ffa0b8b54 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Dane" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Dzwonek" #define D_SENSOR_DISP_RESET "Reset Display" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 62a23856c..151251bd7 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 9eabdd14a..049c92d00 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index f6aeb9e07..cc3b1827a 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index ff21ba5ba..af69426e8 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index fbfcfe8fd..6852ae1ae 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 6895bc7ec..000b756cf 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index da884d474..6225ed5f6 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 1b84e2d37..04075423d 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Зуммер" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 4a3eb2f24..4555a4777 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 980b08f0e..1e06ddcb8 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index a7aa434ff..796cb0c38 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -757,6 +757,7 @@ #define D_SENSOR_HRE_DATA "HRE Data" #define D_SENSOR_ADE7880_IRQ "ADE7880 IRQ" #define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ" +#define D_SENSOR_ADE7953_RST "ADE7953 RST" #define D_SENSOR_BUZZER "Buzzer" #define D_SENSOR_DISP_RESET "Display Rst" #define D_SENSOR_ZIGBEE_TXD "Zigbee Tx" diff --git a/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino b/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino index b027306f6..bd5eb4cc5 100644 --- a/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino +++ b/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino @@ -21,10 +21,12 @@ #ifdef USE_ENERGY_SENSOR #ifdef USE_ADE7953 /*********************************************************************************************\ - * ADE7953 - Energy used in Shelly 2.5 (model 0) and Shelly EM (model 1) + * ADE7953 - Energy used in Shelly 2.5 (model 0) , Shelly EM (model 1) and Shelly Plus 2PM (model 1) * * {"NAME":"Shelly 2.5","GPIO":[320,0,32,0,224,193,0,0,640,192,608,225,3456,4736],"FLAG":0,"BASE":18} * {"NAME":"Shelly EM","GPIO":[0,0,0,0,0,0,0,0,640,3457,608,224,0,1],"FLAG":0,"BASE":18} + * {"NAME":"Shelly Plus 2PM PCB v0.1.5","GPIO":[320,0,192,0,0,0,1,1,225,224,0,0,0,0,193,0,0,0,0,0,0,608,3840,32,0,0,0,0,0,640,0,0,3457,4736,0,0],"FLAG":0,"BASE":1,"CMND":"AdcParam1 2,32000,40000,3350"} + * {"NAME":"Shelly Plus 2PM PCB v0.1.9","GPIO":[320,0,0,0,32,192,0,0,225,224,0,0,0,0,193,0,0,0,0,0,0,608,640,3457,0,0,0,0,0,0,0,4736,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"AdcParam1 2,10000,10000,3350"} * * Based on datasheet from https://www.analog.com/en/products/ade7953.html * @@ -190,7 +192,7 @@ const uint16_t Ade7953CalibRegs[] { }; // 24-bit data registers Shelly 2.5 -const uint16_t Ade7953Registers[] { +const uint16_t Ade7953RegistersAis2Bis1[] { ADE7953_IRMSB, // IRMSB - RMS current channel B (Relay 1) ADE7953_BWATT, // BWATT - Active power channel B ADE7953_BVA, // BVA - Apparent power channel B @@ -204,8 +206,8 @@ const uint16_t Ade7953Registers[] { ADE7953_ACCMODE // ACCMODE - Accumulation mode }; -// 24-bit data registers Shelly EM -const uint16_t Ade7953RegistersShellyEM[] { +// 24-bit data registers Shelly EM and Plus 2PM +const uint16_t Ade7953RegistersAis1Bis2[] { ADE7953_IRMSA, // IRMSA - RMS current channel A ADE7953_AWATT, // AWATT - Active power channel A ADE7953_AVA, // AVA - Apparent power channel A @@ -362,8 +364,8 @@ void Ade7953Init(void) { void Ade7953GetData(void) { uint32_t acc_mode; int32_t reg[2][4]; - for (uint32_t i = 0; i < sizeof(Ade7953Registers)/sizeof(uint16_t); i++) { - int32_t value = Ade7953Read((ADE7953_SHELLY_25 == Ade7953.model) ? Ade7953Registers[i] : Ade7953RegistersShellyEM[i]); + for (uint32_t i = 0; i < sizeof(Ade7953RegistersAis2Bis1)/sizeof(uint16_t); i++) { + int32_t value = Ade7953Read((ADE7953_SHELLY_25 == Ade7953.model) ? Ade7953RegistersAis2Bis1[i] : Ade7953RegistersAis1Bis2[i]); if (8 == i) { Ade7953.voltage_rms = value; // RMS voltage (Both relays) } else if (9 == i) { @@ -546,14 +548,22 @@ void Ade7953DrvInit(void) { if (PinUsed(GPIO_ADE7953_IRQ, GPIO_ANY)) { // Irq on GPIO16 is not supported... uint32_t pin_irq = Pin(GPIO_ADE7953_IRQ, GPIO_ANY); pinMode(pin_irq, INPUT); // Related to resetPins() - Must be set to input - Ade7953.model = GetPin(pin_irq) - AGPIO(GPIO_ADE7953_IRQ); // 0 (Shelly 2.5), 1 (Shelly EM) + Ade7953.model = GetPin(pin_irq) - AGPIO(GPIO_ADE7953_IRQ); // 0 (1 = Shelly 2.5), 1 (2 = Shelly EM) + int pin_reset = Pin(GPIO_ADE7953_RST); // -1 if not defined +#ifdef ESP8266 if (ADE7953_SHELLY_EM == Ade7953.model) { - pinMode(16, OUTPUT); // Reset pin ADE7953 - digitalWrite(16, 0); + if (-1 == pin_reset) { + pin_reset = 16; + } + } +#endif + if (pin_reset > -1) { + pinMode(pin_reset, OUTPUT); // Reset pin ADE7953 + digitalWrite(pin_reset, 0); delay(1); - digitalWrite(16, 1); - pinMode(16, INPUT); + digitalWrite(pin_reset, 1); + pinMode(pin_reset, INPUT); } delay(100); // Need 100mS to init ADE7953