From ecd425573c0660889c01a76196efcb7510eb7c03 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Thu, 17 Mar 2022 09:39:56 +0100 Subject: [PATCH 1/3] Fix filtration state --- tasmota/xsns_83_neopool.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xsns_83_neopool.ino b/tasmota/xsns_83_neopool.ino index 42d790555..9ab78e465 100644 --- a/tasmota/xsns_83_neopool.ino +++ b/tasmota/xsns_83_neopool.ino @@ -2050,7 +2050,7 @@ void CmndNeopoolFiltration(void) return; } } - if (NEOPOOL_MODBUS_OK != NeoPoolReadRegister(MBF_PAR_FILT_MANUAL_STATE, &data, 1)) { + if (NEOPOOL_MODBUS_OK != NeoPoolReadRegister(MBF_PAR_FILTRATION_STATE, &data, 1)) { NeopoolResponseError(); return; } From 2c4b9cb8ecfdccf80b2b736e6dc5a3677016c300 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Sun, 3 Apr 2022 14:35:08 +0200 Subject: [PATCH 2/3] Add boost with redox indication --- tasmota/xsns_83_neopool.ino | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tasmota/xsns_83_neopool.ino b/tasmota/xsns_83_neopool.ino index 9ab78e465..76a978ba0 100644 --- a/tasmota/xsns_83_neopool.ino +++ b/tasmota/xsns_83_neopool.ino @@ -116,7 +116,7 @@ enum NeoPoolRegister { MBF_CELL_RUNTIME_HIGH, // 0x0207* undocumented - cell runtime (32 bit) - high word MBF_CELL_RUNTIME_PART_LOW, // 0x0208* undocumented - cell part runtime (32 bit) - low word MBF_CELL_RUNTIME_PART_HIGH, // 0x0209* undocumented - cell part runtime (32 bit) - high word - MBF_BOOST_CTRL = 0x020C, // 0x020C* undocumented - 0x0000 = Boost Off, 0x05A0 = Boost with redox ctrl, 0x85A0 = Boost without redox ctrl + MBF_CELL_BOOST = 0x020C, // 0x020C* undocumented - 0x0000 = Boost Off, 0x05A0 = Boost with redox ctrl, 0x85A0 = Boost without redox ctrl MBF_CELL_RUNTIME_POLA_LOW = 0x0214, // 0x0214* undocumented - cell runtime polarity A (32 bit) - low word MBF_CELL_RUNTIME_POLA_HIGH, // 0x0215* undocumented - cell runtime polarity A (32 bit) - high word MBF_CELL_RUNTIME_POLB_LOW, // 0x0216* undocumented - cell runtime polarity B (32 bit) - low word @@ -1581,7 +1581,7 @@ void NeoPoolShow(bool json) // S2 ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_COVER "\":%d"), (NeoPoolGetData(MBF_HIDRO_STATUS) & MBMSK_HIDRO_STATUS_COVER) ? 1 : 0 ); // S3 - ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SHOCK "\":%d"), (NeoPoolGetData(MBF_HIDRO_STATUS) & MBMSK_HIDRO_STATUS_SHOCK_ENABLED) ? 1 : 0 ); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SHOCK "\":%d"), (NeoPoolGetData(MBF_HIDRO_STATUS) & MBMSK_HIDRO_STATUS_SHOCK_ENABLED) ? ((NeoPoolGetData(MBF_CELL_BOOST) & 0x8000) ? 1 : 2) : 0 ); // S4 ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_LOW "\":%d"), (NeoPoolGetData(MBF_HIDRO_STATUS) & MBMSK_HIDRO_STATUS_LOW) ? 1 : 0 ); @@ -1691,7 +1691,11 @@ void NeoPoolShow(bool json) WSContentSend_PD(PSTR(" ")); // S3 if (NeoPoolGetData(MBF_HIDRO_STATUS) & MBMSK_HIDRO_STATUS_SHOCK_ENABLED) { - WSContentSend_PD(HTTP_SNS_NEOPOOL_STATUS, bg_color, HTTP_SNS_NEOPOOL_STATUS_ACTIVE, PSTR(D_NEOPOOL_SHOCK)); + if ((NeoPoolGetData(MBF_CELL_BOOST) & 0x8000) == 0) { + WSContentSend_PD(HTTP_SNS_NEOPOOL_STATUS, bg_color, HTTP_SNS_NEOPOOL_STATUS_ACTIVE, PSTR(D_NEOPOOL_SHOCK "+" D_NEOPOOL_REDOX)); + } else { + WSContentSend_PD(HTTP_SNS_NEOPOOL_STATUS, bg_color, HTTP_SNS_NEOPOOL_STATUS_ACTIVE, PSTR(D_NEOPOOL_SHOCK)); + } } else { WSContentSend_PD(HTTP_SNS_NEOPOOL_STATUS, bg_color, HTTP_SNS_NEOPOOL_STATUS_DISABLED, PSTR(D_NEOPOOL_SHOCK)); } From 07f98c7b2519054a0e0c29a68f7e56039eb84760 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Thu, 7 Apr 2022 17:00:21 +0200 Subject: [PATCH 3/3] Add NeoPool relay details --- CHANGELOG.md | 2 + tasmota/language/af_AF.h | 8 ++- tasmota/language/bg_BG.h | 8 ++- tasmota/language/cs_CZ.h | 8 ++- tasmota/language/de_DE.h | 8 ++- tasmota/language/el_GR.h | 8 ++- tasmota/language/en_GB.h | 8 ++- tasmota/language/es_ES.h | 8 ++- tasmota/language/fr_FR.h | 8 ++- tasmota/language/fy_NL.h | 8 ++- tasmota/language/he_HE.h | 8 ++- tasmota/language/hu_HU.h | 8 ++- tasmota/language/it_IT.h | 8 ++- tasmota/language/ko_KO.h | 8 ++- tasmota/language/nl_NL.h | 8 ++- tasmota/language/pl_PL.h | 8 ++- tasmota/language/pt_BR.h | 8 ++- tasmota/language/pt_PT.h | 8 ++- tasmota/language/ro_RO.h | 8 ++- tasmota/language/ru_RU.h | 8 ++- tasmota/language/sk_SK.h | 8 ++- tasmota/language/sv_SE.h | 8 ++- tasmota/language/tr_TR.h | 8 ++- tasmota/language/uk_UA.h | 8 ++- tasmota/language/vi_VN.h | 8 ++- tasmota/language/zh_CN.h | 8 ++- tasmota/language/zh_TW.h | 8 ++- tasmota/xsns_83_neopool.ino | 109 ++++++++++++++++++++++++++++++++---- 28 files changed, 255 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5265255c..3b177d918 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,10 +15,12 @@ All notable changes to this project will be documented in this file. ### Changed - Remove support for Internet Explorer by allowing ECMAScript6 syntax using less JavaScript code bytes (#15280) +- NeoPool: boost command with redox control state, relay and aux detail display ### Fixed - ESP32 save settings after OTA upload regression from v10.0.0.3 - HX711 false readings by removing large deviations +- NeoPool filtration state ## [11.0.0.4] 20220402 ### Added diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 6e32c385a..238b593ca 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionisering" #define D_NEOPOOL_HYDROLYSIS "Hidrolise" #define D_NEOPOOL_RELAY "Relais" -#define D_NEOPOOL_RELAY_FILTRATION "Filtrasie" +#define D_NEOPOOL_RELAY_FILTRATION "Filtrasie" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Lig" #define D_NEOPOOL_RELAY_PH_ACID "Suurpomp" #define D_NEOPOOL_RELAY_PH_BASE "Basispump" #define D_NEOPOOL_RELAY_RX "Redoksvlak" #define D_NEOPOOL_RELAY_CL "Chloorpomp" -#define D_NEOPOOL_RELAY_CD "Pekelwaterpomp" +#define D_NEOPOOL_RELAY_CD "Geleidingsvermoë" +#define D_NEOPOOL_RELAY_HEATING "Verhitting" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Tyd" #define D_NEOPOOL_FILT_MODE "Filtrasie" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index bea5e6c93..abea293a6 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Йонизация" #define D_NEOPOOL_HYDROLYSIS "Хидролиза" #define D_NEOPOOL_RELAY "Реле" -#define D_NEOPOOL_RELAY_FILTRATION "Филтриране" +#define D_NEOPOOL_RELAY_FILTRATION "Филтриране" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Осветление" #define D_NEOPOOL_RELAY_PH_ACID "Кисел. помпа" #define D_NEOPOOL_RELAY_PH_BASE "Алкал. помпа" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Хлорна помпа" -#define D_NEOPOOL_RELAY_CD "Солна помпа" +#define D_NEOPOOL_RELAY_CD "Проводимост" +#define D_NEOPOOL_RELAY_HEATING "Загряване" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Време" #define D_NEOPOOL_FILT_MODE "Филтриране" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 9579d6c79..d93f10651 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index c74065b05..c01f174f8 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionisierung" #define D_NEOPOOL_HYDROLYSIS "Hydrolyse" #define D_NEOPOOL_RELAY "Relais" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Licht" #define D_NEOPOOL_RELAY_PH_ACID "Säurepumpe" #define D_NEOPOOL_RELAY_PH_BASE "Laugenpumpe" #define D_NEOPOOL_RELAY_RX "Redox Pegel" #define D_NEOPOOL_RELAY_CL "Chlorpumpe" -#define D_NEOPOOL_RELAY_CD "Salzwasserpumpe" +#define D_NEOPOOL_RELAY_CD "Konduktivität" +#define D_NEOPOOL_RELAY_HEATING "Heizung" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Ventil" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Zeit" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Laufzeit Zelle" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 1c6f9065e..cf3ef4931 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 17322f588..472474e41 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index b1c99b712..f076bb083 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionización" #define D_NEOPOOL_HYDROLYSIS "Hidrólisis" #define D_NEOPOOL_RELAY "Relé" -#define D_NEOPOOL_RELAY_FILTRATION "Filtrar" +#define D_NEOPOOL_RELAY_FILTRATION "Filtrar" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Luz" #define D_NEOPOOL_RELAY_PH_ACID "Bomba de Ácido" #define D_NEOPOOL_RELAY_PH_BASE "Bomba de Base" #define D_NEOPOOL_RELAY_RX "Nivel Redox" #define D_NEOPOOL_RELAY_CL "Bomba de Cloro" -#define D_NEOPOOL_RELAY_CD "Bomba de Salmuera" +#define D_NEOPOOL_RELAY_CD "Conductividad" +#define D_NEOPOOL_RELAY_HEATING "Calentando" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Tiempo" #define D_NEOPOOL_FILT_MODE "Modo de filtrado" #define D_NEOPOOL_CELL_RUNTIME "Tiempo de actividad" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 57dde5fd6..7c483afc0 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionisation" #define D_NEOPOOL_HYDROLYSIS "Hydrolyse" #define D_NEOPOOL_RELAY "Relais" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Lumière" #define D_NEOPOOL_RELAY_PH_ACID "Pompe acide" #define D_NEOPOOL_RELAY_PH_BASE "Pompe base" #define D_NEOPOOL_RELAY_RX "Pompe RedOx" #define D_NEOPOOL_RELAY_CL "Pompe Chlore" -#define D_NEOPOOL_RELAY_CD "Pompe Brome" +#define D_NEOPOOL_RELAY_CD "Conductivité" +#define D_NEOPOOL_RELAY_HEATING "Chauffage" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Durée" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 0c2cfa48a..04ecce171 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 0ceee1826..0d5ddf7a4 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 16e4b66b1..4ce249b76 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Idő" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 65f5b3749..65c36e9cd 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionizzazione" #define D_NEOPOOL_HYDROLYSIS "Idrolisi" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtrazione" +#define D_NEOPOOL_RELAY_FILTRATION "Filtrazione" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Luce" #define D_NEOPOOL_RELAY_PH_ACID "Pompa per acido" #define D_NEOPOOL_RELAY_PH_BASE "Pompa base" #define D_NEOPOOL_RELAY_RX "Livello Redox" #define D_NEOPOOL_RELAY_CL "Pompa cloro" -#define D_NEOPOOL_RELAY_CD "Pompa salamoia" +#define D_NEOPOOL_RELAY_CD "Conduttività" +#define D_NEOPOOL_RELAY_HEATING "Riscaldamento" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Orario" #define D_NEOPOOL_FILT_MODE "Modalità di filtrazione" #define D_NEOPOOL_CELL_RUNTIME "Cella attiva" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index ba019032a..28b2c3429 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 47338d14f..edcf0d41f 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionizatie" #define D_NEOPOOL_HYDROLYSIS "Hydrolyse" #define D_NEOPOOL_RELAY "Relais" -#define D_NEOPOOL_RELAY_FILTRATION "Filtratie" +#define D_NEOPOOL_RELAY_FILTRATION "Filtratie" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Licht" #define D_NEOPOOL_RELAY_PH_ACID "Zuurpomp" #define D_NEOPOOL_RELAY_PH_BASE "Basepomp" #define D_NEOPOOL_RELAY_RX "Redox peil" #define D_NEOPOOL_RELAY_CL "Chloorpomp" -#define D_NEOPOOL_RELAY_CD "Pekelpomp" +#define D_NEOPOOL_RELAY_CD "Geleidbaarheid" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Tijd" #define D_NEOPOOL_FILT_MODE "Filtratie modus" #define D_NEOPOOL_CELL_RUNTIME "Cel looptijd" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 39f51bf3d..f9db22207 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 3ae74fa20..921f11098 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionização" #define D_NEOPOOL_HYDROLYSIS "Hidrólise" #define D_NEOPOOL_RELAY "Relé" -#define D_NEOPOOL_RELAY_FILTRATION "Filtragem" +#define D_NEOPOOL_RELAY_FILTRATION "Filtragem" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Luz" #define D_NEOPOOL_RELAY_PH_ACID "Bomba de ácidos" #define D_NEOPOOL_RELAY_PH_BASE "Bomba de bases" #define D_NEOPOOL_RELAY_RX "Nível de Redox" #define D_NEOPOOL_RELAY_CL "Bomba de cloro" -#define D_NEOPOOL_RELAY_CD "Bomba de salmora" +#define D_NEOPOOL_RELAY_CD "Condutividade" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Tempo" #define D_NEOPOOL_FILT_MODE "Modo de filtragem" #define D_NEOPOOL_CELL_RUNTIME "Tempo de atividade" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 9fc8cfa78..7ac2efe39 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionização" #define D_NEOPOOL_HYDROLYSIS "Hidrólise" #define D_NEOPOOL_RELAY "Relé" -#define D_NEOPOOL_RELAY_FILTRATION "Filtragem" +#define D_NEOPOOL_RELAY_FILTRATION "Filtragem" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Luz" #define D_NEOPOOL_RELAY_PH_ACID "Bomba de ácidos" #define D_NEOPOOL_RELAY_PH_BASE "Bomba de bases" #define D_NEOPOOL_RELAY_RX "Nível de Redox" #define D_NEOPOOL_RELAY_CL "Bomba de cloro" -#define D_NEOPOOL_RELAY_CD "Bomba de salmora" +#define D_NEOPOOL_RELAY_CD "Condutividade" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Tempo" #define D_NEOPOOL_FILT_MODE "Modo de filtragem" #define D_NEOPOOL_CELL_RUNTIME "Tempo de atividade" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 4328e7c22..4d4fd355f 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index bc5e258f0..9b5d30470 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 04b071f5f..f6082af6b 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index d1a5b2ff0..0afd1b382 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index d08f78e59..b44b39c99 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index e4aec74b5..601f33dc7 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 017d1dd3c..2c4356408 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 1458a367b..2a659da88 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 393588553..9fb378d58 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -1076,13 +1076,17 @@ #define D_NEOPOOL_IONIZATION "Ionization" #define D_NEOPOOL_HYDROLYSIS "Hydrolysis" #define D_NEOPOOL_RELAY "Relay" -#define D_NEOPOOL_RELAY_FILTRATION "Filtration" +#define D_NEOPOOL_RELAY_FILTRATION "Filtration" // Relay assignment #define D_NEOPOOL_RELAY_LIGHT "Light" #define D_NEOPOOL_RELAY_PH_ACID "Acid pump" #define D_NEOPOOL_RELAY_PH_BASE "Base pump" #define D_NEOPOOL_RELAY_RX "Redox level" #define D_NEOPOOL_RELAY_CL "Chlorine pump" -#define D_NEOPOOL_RELAY_CD "Brine pump" +#define D_NEOPOOL_RELAY_CD "Conductivity" +#define D_NEOPOOL_RELAY_HEATING "Heating" +#define D_NEOPOOL_RELAY_UV "UV" +#define D_NEOPOOL_RELAY_VALVE "Valve" +#define D_NEOPOOL_RELAY_AUX "Aux" #define D_NEOPOOL_TIME "Time" #define D_NEOPOOL_FILT_MODE "Filtration mode" #define D_NEOPOOL_CELL_RUNTIME "Cell runtime" diff --git a/tasmota/xsns_83_neopool.ino b/tasmota/xsns_83_neopool.ino index 76a978ba0..2261e3e08 100644 --- a/tasmota/xsns_83_neopool.ino +++ b/tasmota/xsns_83_neopool.ino @@ -64,6 +64,7 @@ #define NEOPOOL_READ_REGISTER 0x04 // Function code used to read register #define NEOPOOL_WRITE_REGISTER 0x10 // Function code used to write register #define NEOPOOL_READ_TIMEOUT 25 // read data timeout in ms +#define NEOPOOL_DATA_TIMEOUT 30000 // directly read data register data discard timout in ms // Pool LED RGB lights with different programs, the individual programs can be selected @@ -612,13 +613,21 @@ struct { {MBF_ION_CURRENT, MBF_NOTIFICATION - MBF_ION_CURRENT + 1, nullptr}, {MBF_CELL_RUNTIME_LOW, MBF_CELL_RUNTIME_POL_CHANGES_HIGH - MBF_CELL_RUNTIME_LOW + 1, nullptr}, {MBF_PAR_VERSION, MBF_PAR_HIDRO_NOM - MBF_PAR_VERSION + 1, nullptr}, - {MBF_PAR_TIME_LOW, MBF_PAR_FILT_GPIO - MBF_PAR_TIME_LOW + 1, nullptr}, + {MBF_PAR_TIME_LOW, MBF_PAR_HEATING_GPIO - MBF_PAR_TIME_LOW + 1, nullptr}, {MBF_PAR_ION, MBF_PAR_FILTRATION_CONF - MBF_PAR_ION + 1, nullptr}, {MBF_PAR_UICFG_MACHINE, MBF_PAR_UICFG_MACH_VISUAL_STYLE - MBF_PAR_UICFG_MACHINE + 1, nullptr}, {MBF_VOLT_24_36, MBF_VOLT_12 - MBF_VOLT_24_36 + 1, nullptr}, {MBF_VOLT_5, MBF_AMP_4_20_MICRO - MBF_VOLT_5 + 1, nullptr} }; +typedef struct { + uint16_t addr; + uint16_t data; + uint32_t ts; +} TNeoPoolData; +uint16_t NeoPoolDataCount = 0; +TNeoPoolData* NeoPoolData = nullptr; + // NeoPool modbus function errors enum NeoPoolModbusCode { NEOPOOL_MODBUS_OK = 0, @@ -1289,20 +1298,57 @@ uint8_t NeoPoolWriteRegisterWord(uint16_t addr, uint16_t data) } -uint16_t NeoPoolGetData(uint16_t addr) +uint16_t NeoPoolGetDataTO(uint16_t addr, uint32_t timeout) { uint16_t data; + uint16_t i; - for (uint32_t i = 0; i < nitems(NeoPoolReg); i++) { + for (i = 0; i < nitems(NeoPoolReg); i++) { if (nullptr != NeoPoolReg[i].data && addr >= NeoPoolReg[i].addr && addr < NeoPoolReg[i].addr+NeoPoolReg[i].cnt) { return NeoPoolReg[i].data[addr - NeoPoolReg[i].addr]; } } + if (timeout < 0) { + timeout = NEOPOOL_DATA_TIMEOUT; + } + // search in temportary data array + for (i = 0; i < NeoPoolDataCount; i++) { + if (nullptr != NeoPoolData && addr == NeoPoolData[i].addr) { + if (millis() < NeoPoolData[i].ts) { + data = NeoPoolData[i].data; + } else { + NeoPoolReadRegister(addr, &data, 1); + NeoPoolData[i].data = data; + NeoPoolData[i].ts = millis() + timeout; + } + return data; + } + } NeoPoolReadRegister(addr, &data, 1); + if (nullptr == NeoPoolData) { + NeoPoolDataCount = 1; + NeoPoolData = (TNeoPoolData*)malloc(sizeof(TNeoPoolData) * NeoPoolDataCount); + } else { + NeoPoolDataCount++; + NeoPoolData = (TNeoPoolData*)realloc(NeoPoolData, sizeof(TNeoPoolData) * NeoPoolDataCount); + } + if (nullptr != NeoPoolData) { + NeoPoolData[NeoPoolDataCount-1].addr = addr; + NeoPoolData[NeoPoolDataCount-1].data = data; + NeoPoolData[NeoPoolDataCount-1].ts = millis() + timeout; + } else { + NeoPoolDataCount = 0; + } return data; } +uint16_t NeoPoolGetData(uint16_t addr) +{ + return NeoPoolGetDataTO(addr, -1); +} + + uint32_t NeoPoolGetDataLong(uint16_t addr) { return ((uint32_t)NeoPoolGetData(addr) + ((uint32_t)NeoPoolGetData(addr+1) << 16)); @@ -1384,7 +1430,11 @@ bool NeoPoolIsIonization(void) #define D_NEOPOOL_JSON_RELAY_PH_BASE "Base" #define D_NEOPOOL_JSON_RELAY_RX "Redox" #define D_NEOPOOL_JSON_RELAY_CL "Chlorine" -#define D_NEOPOOL_JSON_RELAY_CD "Brine" +#define D_NEOPOOL_JSON_RELAY_CD "Conductivity" +#define D_NEOPOOL_JSON_RELAY_HEATING "Heating" +#define D_NEOPOOL_JSON_RELAY_UV "UV" +#define D_NEOPOOL_JSON_RELAY_FILTVALVE "Valve" +#define D_NEOPOOL_JSON_AUX "Aux" #define D_NEOPOOL_JSON_STATE "State" #define D_NEOPOOL_JSON_TYPE "Type" #define D_NEOPOOL_JSON_UNIT "Unit" @@ -1610,6 +1660,11 @@ void NeoPoolShow(bool json) ResponseAppend_P(PSTR("%s%d"), i ? PSTR(",") : PSTR(""), (NeoPoolGetData(MBF_RELAY_STATE) >> i) & 1); } ResponseAppend_P(PSTR("]")); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_AUX "\":[")); + for(uint16_t i = 3; i < NEOPOOL_RELAY_MAX; i++) { + ResponseAppend_P(PSTR("%s%d"), i > 3 ? PSTR(",") : PSTR(""), (NeoPoolGetData(MBF_RELAY_STATE) >> i) & 1); + } + ResponseAppend_P(PSTR("]")); if (0 != NeoPoolGetData(MBF_PAR_PH_ACID_RELAY_GPIO)) { ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_PH_ACID "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_PH_ACID_RELAY_GPIO)-1)) & 1); } @@ -1625,6 +1680,15 @@ void NeoPoolShow(bool json) if (0 != NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)) { ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CD " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)) & 1); } + if (0 != NeoPoolGetData(MBF_PAR_HEATING_GPIO)) { + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_HEATING " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_HEATING_GPIO)) & 1); + } + if (0 != NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)) { + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_UV " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)) & 1); + } + if (0 != NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)) { + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_FILTVALVE " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)) & 1); + } ResponseJsonEndEnd(); @@ -1802,27 +1866,45 @@ void NeoPoolShow(bool json) char sdesc[24]; memset(sdesc, 0, nitems(sdesc)); memset(stemp, 0, nitems(stemp)); - if (0 != NeoPoolGetData(MBF_PAR_PH_ACID_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_PH_ACID_RELAY_GPIO)-1) { + if (0 != NeoPoolGetData(MBF_PAR_PH_ACID_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_PH_ACID_RELAY_GPIO)-1) { strncpy_P(sdesc, PSTR(D_NEOPOOL_RELAY_PH_ACID), sizeof(sdesc)); } else if (0 != NeoPoolGetData(MBF_PAR_PH_BASE_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_PH_BASE_RELAY_GPIO)-1) { strncpy_P(sdesc, PSTR(D_NEOPOOL_RELAY_PH_BASE), sizeof(sdesc)); - } else if (0 != NeoPoolGetData(MBF_PAR_RX_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_RX_RELAY_GPIO)-1) { + } else if (0 != NeoPoolGetData(MBF_PAR_RX_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_RX_RELAY_GPIO)-1) { strncpy_P(sdesc, PSTR(D_NEOPOOL_RELAY_RX), sizeof(sdesc)); - } else if (0 != NeoPoolGetData(MBF_PAR_CL_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_CL_RELAY_GPIO)-1) { + } else if (0 != NeoPoolGetData(MBF_PAR_CL_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_CL_RELAY_GPIO)-1) { strncpy_P(sdesc, PSTR(D_NEOPOOL_RELAY_CL), sizeof(sdesc)); - } else if (0 != NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)-1) { + } else if (0 != NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO) && i == NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)-1) { strncpy_P(sdesc, PSTR(D_NEOPOOL_RELAY_CD), sizeof(sdesc)); - } else if (0 != NeoPoolGetData(MBF_PAR_FILT_GPIO) && i == NeoPoolGetData(MBF_PAR_FILT_GPIO)-1) { + } else if (0 != NeoPoolGetData(MBF_PAR_FILT_GPIO) && i == NeoPoolGetData(MBF_PAR_FILT_GPIO)-1) { char smotorspeed[32]; - // Filtration strncpy_P(sdesc, PSTR(D_NEOPOOL_RELAY_FILTRATION), sizeof(sdesc)); GetTextIndexed(smotorspeed, sizeof(smotorspeed), NeoPoolGetSpeedIndex((NeoPoolGetData(MBF_RELAY_STATE) >> 8) & 0x7), kNeoPoolFiltrationSpeed); snprintf_P(stemp, sizeof(stemp), PSTR("%s%s%s%s"), ((NeoPoolGetData(MBF_RELAY_STATE) & (1< 2) { + // Aux + char sname[(MBF_PAR_UICFG_MACH_NAME_AUX2_0 - MBF_PAR_UICFG_MACH_NAME_AUX1_0) * 2 + 1]; + uint16_t base = MBF_PAR_UICFG_MACH_NAME_AUX1_0 + ((i - 3) * (MBF_PAR_UICFG_MACH_NAME_AUX2_0 - MBF_PAR_UICFG_MACH_NAME_AUX1_0)); + for (uint16_t k = 0; k < (MBF_PAR_UICFG_MACH_NAME_AUX2_0 - MBF_PAR_UICFG_MACH_NAME_AUX1_0); k++) { + uint16_t data = NeoPoolGetData(base + k); + sname[k*2] = (char)(data >> 8); + sname[k*2 + 1] = (char)(data & 0xFF); + } + if (*sname) { + snprintf_P(sdesc, sizeof(sdesc), PSTR(D_NEOPOOL_RELAY_AUX " %d (%s)"), i-2, sname); + } else { + snprintf_P(sdesc, sizeof(sdesc), PSTR(D_NEOPOOL_RELAY_AUX " %d"), i-2); + } } else { - // Relay + // unassigned relay snprintf_P(sdesc, sizeof(sdesc), PSTR(D_NEOPOOL_RELAY " %d"), i+1); } @@ -2366,6 +2448,9 @@ void CmndNeopoolControl(void) ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_RX "\":%d"), NeoPoolGetData(MBF_PAR_RX_RELAY_GPIO)); ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CL "\":%d"), NeoPoolGetData(MBF_PAR_CL_RELAY_GPIO)); ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CD "\":%d"), NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_HEATING "\":%d"), NeoPoolGetData(MBF_PAR_HEATING_GPIO)); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_UV "\":%d"), NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)); + ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_FILTVALVE "\":%d"), NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)); ResponseJsonEndEnd(); }