HA NeoPool MQTT: integration of Tasmota NeoPool (for Sugar Valley, Hayward/Aquarite, Bayrol devices)

  • what is exactly the output of Tasmota console cmnd if you use NPAux2-4 (“doesn’t work” is not the right answer :wink:)?

  • pls post the result of Tasmota cmnd “NPControl”, may be your other aux are already assigned to a function

Hi again :grinning:

I think there are some points here:

  1. When I press Aux1 / Aux2 / Aux3 / Aux4 in tasmota menu, console answer is NPAux : Error, so there is something wrong in the buttons, HA buttons send the correct message: stat/SmartPool/RESULT = {“NPAux2”:“ON”}

  2. When I write in console NPAux1 ON, it switchs on the relay and I can see voltage in hayward pinout, the result is correct and tasmota menu shows the aux1 = on
    stat/SmartPool/RESULT = {“NPAux1”:“ON”} the same with OFF.

2.1 When I write in console NPAux2 ON,
it gets the same stat/SmartPool/RESULT = {“NPAux2”:“ON”} but nothing changes in tasmota menu, it shows aux 2 =. off.

It is the same with 3 and 4, ( there are some configuration I missed ? )

This is NPControl:

18:00:17.365 MQT: stat/SmartPool/RESULT = {"Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Relay":{"Acid":1,"Base":0,"Redox":0,"Chlorine":0,"Conductivity":0,"Heating":0,"UV":0,"Valve":0}}

This is the status:

17:56:08.467 MQT: stat/SmartPool/STATUS = {"Status":{"Module":0,"DeviceName":"SmartPool","FriendlyName":["SmartPool"],"Topic":"SmartPool","ButtonTopic":"0","Power":"0","PowerLock":"0","PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":1,"PowerRetain":0,"InfoRetain":0,"StateRetain":0,"StatusRetain":0}}

Thanks

There is a problem with some systems switching Aux2-4 using the Modbus register information I am familiar with.

I would like to analyze the problem together with a user who has a system with this problem. However, I have tried to debug the cause with a few users who have had this problem in the past, but apparently the effort became too much for them after a short time. That was a shame, because I had also invested my time (we have to switch the Aux directly on the device step by step and then read out some registers on the Tasmota console).

If you would be willing to perform manual steps on the Tasmota console and in your Hayward at the same time, we might be able to get to the bottom of the problem.

However, I will only write a step-by-step debugging guide if you are willing to spend the time with me until we find the cause. I can only solve the problem with the help of a user who has a system where this does not work.

That’s perfect for me, I’m grateful for your help and of course I’m available to discover the problem and analyse what is happening.

Thanks again and let’s start.

That sounds good, thx.
When you look at the steps below, which aren’t really complex, you might wonder why some people are unwilling to invest 20 to 30 minutes in an analysis :man_shrugging:.

Anyway, let’s start:

Prerequisites

  • we will do following steps on the Tasmota console (TC) and your Hayward menu only!
  • forget HA and forget Tasmota main GUI for a while, only use Tasmota “Tools/Console”
  • we also need to temporarily disable MQTT on Tasmota to prevent any influence from external MQTT topics. Therefore, pls use SO3 0 on TC (re-enable it with SO3 1 after testing)

Starting with Aux2

To read the Modbus register for AUX2 (below steps “Read Modbus register for AUX2”), we always use the Tasmota cmnd chain

Backlog NPResult 1;NPRead 0x4BB,1;NPReadL 0x4BC,7;NPRead 0x47F,1;NPReadL 0x480,7

An example output (here for 1.1) might be:

stat/SmartPool/NPREAD = {"NPRead":{"Address":"0x04BB","Data":"0x0004"}}
stat/SmartPool/NPREADL = {"NPReadL":{"Address":"0x04BC","Data":["0x00000000","0x00000000","0x00000000","0x00000384","0x00000000","0x00001000","0x00000000"]}}
stat/SmartPool/NPREAD = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
stat/SmartPool/NPREADL = {"NPReadL":{"Address":"0x0480","Data":["0x00013560","0x00000000","0x00093A80","0x00000078","0x00000000","0x00000000","0x00000000"]}}

Now go to Hayward menu “Auxiliary relays” “Auxiliary relay2”

  1. Test manual mode
    1.1 Test OFF

    • set “Mode” to “Man”
    • set “State” to “Off”
    • verify your Hay Aux2 relay is off
    • Read Modbus register for AUX2 (see above a))

    1.2 Test ON

    • set “Mode” to “Man”
    • set “State” to “On”
    • verify your Hay Aux2 relay is on
    • Read Modbus register for AUX2
  2. Test hotkey mode

    • set “Mode” to “Tempo”
    • set “Time” to other than 1 minute, e. g. “2 minutes”
    • set “Key” to “-” (minus)

    2.1 Test Hotkey mode OFF

    • verify your Hay Aux2 relay is off
    • Read Modbus register for AUX2

    2.2 Test Hotkey mode ON

    • go to Hay main menu and press “-” key
    • verify your Hay Aux2 relay is switched to on
    • Read Modbus register for AUX2
  3. Test timer mode

    • set “Mode” to “Auto”
    • set “Timer1” to “12:00” - “12:30”
    • set “Timer2” to “18:00” - “18:30”
      (If a timer conflicts with the current time causing Aux2 to become active - it should be OFF for the moment - select a different time period that does not contain “00:00” and let me know)
    • verify your Hay Aux2 relay is off
    • Read Modbus register for AUX2

What I need are the results of “Read Modbus register for AUX2” Tasmota cmnd for 1.1, 1.2 2.1, 2.2 and 3.

I think that’s enough for now. If I find the problem with Aux2, it could be similar with Aux3 and 4.

Thx for taking the time.

Hi,

I did all what you requested:
I think there is something wrong because the readings are different like yours, maybe when I upgraded to 15.0.1.2 i missed somethinng?

1.1

17:16:25.873 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPLRead 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
17:16:25.897 RSL: RESULT = {"NPResult":1}
17:16:26.140 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0004"}}
17:16:26.373 RSL: RESULT = {"Command":"Unknown","Input":"NPLREAD 0x4BC,7"}
17:16:26.639 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
17:16:26.896 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0x0000","0x0000","0x0000","0x0000","0x0000","0x0000","0x0000"]}}

1.2

CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPLRead 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
17:41:22.178 RSL: RESULT = {"NPResult":1}
17:41:22.424 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0004"}}
17:41:22.659 RSL: RESULT = {"Command":"Unknown","Input":"NPLREAD 0x4BC,7"}
17:41:22.925 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
17:41:23.199 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0x0000","0x0000","0x0000","0x0000","0x0000","0x0000","0x0000"]}}

2.1

17:44:05.953 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPLRead 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
17:44:05.972 RSL: RESULT = {"NPResult":1}
17:44:06.266 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0105"}}
17:44:06.478 RSL: RESULT = {"Command":"Unknown","Input":"NPLREAD 0x4BC,7"}
17:44:06.744 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
17:44:07.001 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0x0000","0x0000","0x0000","0x0000","0x0000","0x0000","0x0000"]}}

2.2

17:55:34.520 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPLRead 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
17:55:34.561 RSL: RESULT = {"NPResult":1}
17:55:34.789 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0105"}}
17:55:35.023 RSL: RESULT = {"Command":"Unknown","Input":"NPLREAD 0x4BC,7"}
17:55:35.289 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
17:55:35.546 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0x0000","0x0000","0x0000","0x0000","0x0000","0x0000","0x0000"]}}

3: Here I changed time from 18:00-18:30 to 17:00-17:30

18:01:12.173 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPLRead 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
18:01:12.192 RSL: RESULT = {"NPResult":1}
18:01:12.440 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0001"}}
18:01:12.673 RSL: RESULT = {"Command":"Unknown","Input":"NPLREAD 0x4BC,7"}
18:01:12.939 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0001"}}
18:01:13.196 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0xEF10","0x0000","0x0000","0x0000","0x5180","0x0001","0x0708"]}}

I realized that your cmnd chain maybe was wrong and I put this one:
Backlog NPResult 1;NPRead 0x4BB,1;NPReadL 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7

Reading NPReadL values

1.1

18:28:22.827 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPReadL 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
18:28:22.848 RSL: RESULT = {"NPResult":1}
18:28:23.093 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0004"}}
18:28:23.358 RSL: RESULT = {"NPReadL":{"Address":"0x04BC","Data":["0x0000A8C0","0x00000000","0x00015180","0x00000000","0x00000000","0x00001000","0x00000000"]}}
18:28:23.547 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
18:28:23.804 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0xEF10","0x0000","0x0000","0x0000","0x5180","0x0001","0x0708"]}}

1.2

18:29:34.611 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPReadL 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
18:29:34.634 RSL: RESULT = {"NPResult":1}
18:29:34.879 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0003"}}
18:29:35.143 RSL: RESULT = {"NPReadL":{"Address":"0x04BC","Data":["0x0000A8C0","0x00000000","0x00015180","0x00000000","0x00000000","0x00001000","0x00000000"]}}
18:29:35.333 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
18:29:35.590 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0xEF10","0x0000","0x0000","0x0000","0x5180","0x0001","0x0708"]}}

2.1

18:31:29.015 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPReadL 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
18:31:29.040 RSL: RESULT = {"NPResult":1}
18:31:29.282 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0105"}}
18:31:29.546 RSL: RESULT = {"NPReadL":{"Address":"0x04BC","Data":["0x00000000","0x00000000","0x00000000","0x00000078","0x00000000","0x00001000","0x00000000"]}}
18:31:29.737 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
18:31:29.994 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0xEF10","0x0000","0x0000","0x0000","0x5180","0x0001","0x0708"]}}

2.2

18:32:41.924 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPReadL 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
18:32:43.930 RSL: RESULT = {"NPResult":1}
18:32:44.167 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0105"}}
18:32:44.433 RSL: RESULT = {"NPReadL":{"Address":"0x04BC","Data":["0x00000000","0x00000000","0x00000000","0x00000078","0x00000000","0x00001000","0x00000000"]}}
18:32:44.629 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0000"}}
18:32:44.886 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0xEF10","0x0000","0x0000","0x0000","0x5180","0x0001","0x0708"]}}

3: Here I changed time from 18:00-18:30 to 17:00-17:30

18:34:48.360 CMD: Backlog NPResult 1;NPRead 0x4BB,1;NPReadL 0x4BC,7;NPRead 0x47F,1;NPRead 0x480,7
18:34:48.379 RSL: RESULT = {"NPResult":1}
18:34:48.626 RSL: RESULT = {"NPRead":{"Address":"0x04BB","Data":"0x0001"}}
18:34:48.891 RSL: RESULT = {"NPReadL":{"Address":"0x04BC","Data":["0x0000A8C0","0x00000000","0x00015180","0x00000708","0x00000000","0x00001000","0x00000000"]}}
18:34:49.079 RSL: RESULT = {"NPRead":{"Address":"0x047F","Data":"0x0001"}}
18:34:49.337 RSL: RESULT = {"NPRead":{"Address":"0x0480","Data":["0xEF10","0x0000","0x0000","0x0000","0x5180","0x0001","0x0708"]}}

Thanks

No, my mistake, I corrected a typo here, but copied the wrong editor content into the instructions above, sorry. NPLRead is an invalid command (see here). I have corrected it in my post above for others.

Everything looks as it should, it seems to be a timing problem so let’s check if we can switch Aux from Tasmota cmnd using direct register read/write.

Pls also give me the result of the cmnd chain. I’m interested in the status of register 0x10E in this chain before the write command – this may differ from yours as I’m using a speed-controlled filter pump, which is also coded in this register.

Example:

CMD: Backlog NPRead 0x10E;NPWrite 0x4BB,3;NPExec
RSL: RESULT = {"NPRead":{"Address":"0x010E","Data":"0x0222"}}
RSL: RESULT = {"NPWrite":{"Address":"0x04BB","Data":"0x0003"}}
RSL: RESULT = {"NPExec":"Done"}

Check if Tasmota/Hayward shows the states also on main screen and Aux is phyiscal switching:

  • Switch Aux2 ON
    Backlog NPRead 0x10E;NPWrite 0x4BB,3;NPExec

  • Switch Aux2 OFF
    Backlog NPRead 0x10E;NPWrite 0x4BB,4;NPExec

  • Switch Aux3 ON
    Backlog NPRead 0x10E;NPWrite 0x4CA,3;NPExec

  • Switch Aux3 OFF
    Backlog NPRead 0x10E;NPWrite 0x4CA,4;NPExec

  • Switch Aux4 ON
    Backlog NPRead 0x10E;NPWrite 0x4D9,3;NPExec

  • Switch Aux4 OFF
    Backlog NPRead 0x10E;NPWrite 0x4D9,4;NPExec

hello to all fellow Neopoolers, sorry for being slightly OT , but i’m trying to fix an issue i’m having at chlorine production, and Hayward support is not much reactive, apparently when i go above 28c the system is producing less chlorine for this reason i took one size up , to fit my 38m3 pool i’m running ox1.

The cell is the The cell RCB16 should be rated 15A therefore a total power of 25v X 15a = 375w.

However when i’m running the cell 100% and i put a CT (amperometer) i’m able to read the difference in power from 0 to 100 % of just 60w.

i run the cell overnight (no UV from sun ) and the calculated production in 10h has been approx 6g/h at 100% with temp approx 28-29 in that period.
So this is rated 16g/h is a reduction of nearly 70% of the production reasonable or not ?

The cell is just being clean, 2500 h approx of lifetime and i’m challenging the support to address if there is a fault on the HW.

I’m not sure if it’s a good idea to hijack this thread for this topic. I think if we keep it short, it’ll be fine.

  • If I understand correctly, you are using a more powerful cell than the standard cell on your Oxi 1. If so, this will not work because the power supply and control system of the Oxi 1 are not designed for this. Oxi 1 can not deliver 375 W.

  • The chlorine production capacity depends on two parameters: the power of the cell and the salt content of the water. Have you measured the salt content?
    It should not be below 1.5 g/l. However, this may already be too low for degenerated cells (I’m using 2,5-2,8 g/l using Oxi 1 with 24 m³, less then 2.2 g/l salt also means too little chlorine for me).

Hi,
I’m having issue with the 4 MQTT Connection entities which are unavailable in HA. It generates thousands of logs in HA like Template variable error: 'dict object' has no attribute 'Connection' when rendering '{{ value_json.NeoPool.Connection.MBNoError }}' and I’m not sure what is the cause of this missing attribute (my hardware, my config …?). Any idea? Thanks

If you are using an ESP32, enable communication statistics using Tasmota equal or greater than v14.2.0 and set NPSetOption1 1 (under Tasmota WebUI Tools/Console).

If you are using an ESP8266 or you use an older Tasmota than v14.2.0 and don’t want to upgrade, delete all entity entries for connection statistics from your ha_neopool_mqtt_package.yaml file:

Search for # Connection diagnostic sensors, it applies to all entities in the yaml that contain value_json.NeoPool.Connection.* in their value_template.

Hi,
this is the log:


19:57:56.488 CMD: Backlog NPRead 0x10E;NPWrite 0x4BB,3;NPExec
19:57:56.524 RSL: RESULT = {"NPRead":{"Address":"0x010E","Data":"0x0000"}}
19:57:56.769 RSL: RESULT = {"NPWrite":{"Address":"0x04BB","Data":"0x0003"}}
19:57:57.005 RSL: RESULT = {"NPExec":"Done"}
19:57:59.927 RSL: SENSOR = {"Time":"2025-07-30T19:57:59","NeoPool":{"Time":"2025-07-30T19:57:35","Type":"Generic","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":25.6,"Powerunit":{"Version":"V6.17","NodeID":"0061 004A 4741 500E 2031 3232","5V":5,"12V":15,"24-30V":31,"4-20mA":0.000},"pH":{"Data":7.4,"Min":7.0,"Max":7.3,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":730,"Setpoint":700,"Tank":1},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":10.7,"Max":22.0,"Percent":{"Data":0,"Setpoint":48},"Runtime":{"Total":"13T10:15:56","Part":"13T10:15:56","Pol1":"6T18:33:28","Pol2":"6T15:42:28","Changes":62},"State":"Flow","Cover":0,"Boost":0,"Low":0,"FL1":1,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":1},"Light":0,"Relay":{"State":[0,0,0,0,1,0,0],"Aux":[0,1,0,0],"Acid":0},"Connection":{"Time":"2025-07-30T19:50:22","MBRequests":1847,"MBNoError":1815,"MBIllegalFunc":0,"MBIllegalDataAddr":0,"MBIllegalDataValue":0,"MBSlaveError":0,"MBAck":0,"MBSlaveBusy":0,"MBNotEnoughData":0,"MBMemParityErr":0,"MBCRCErr":0,"MBGWPath":0,"MBGWTarget":0,"MBRegErr":0,"MBRegData":0,"MBTooManyReg":0,"MBUnknownErr":0,"MBNoResponse":32,"DataOutOfRange":0}}}
19:58:13.073 CMD: Backlog NPRead 0x10E;NPWrite 0x4BB,4;NPExec
19:58:13.109 RSL: RESULT = {"NPRead":{"Address":"0x010E","Data":"0x0010"}}
19:58:13.357 RSL: RESULT = {"NPWrite":{"Address":"0x04BB","Data":"0x0004"}}
19:58:13.593 RSL: RESULT = {"NPExec":"Done"}
19:58:15.942 RSL: SENSOR = {"Time":"2025-07-30T19:58:15","NeoPool":{"Time":"2025-07-30T19:57:51","Type":"Generic","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":25.6,"Powerunit":{"Version":"V6.17","NodeID":"0061 004A 4741 500E 2031 3232","5V":5,"12V":14,"24-30V":31,"4-20mA":0.000},"pH":{"Data":7.4,"Min":7.0,"Max":7.3,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":730,"Setpoint":700,"Tank":1},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":10.7,"Max":22.0,"Percent":{"Data":0,"Setpoint":48},"Runtime":{"Total":"13T10:15:56","Part":"13T10:15:56","Pol1":"6T18:33:28","Pol2":"6T15:42:28","Changes":62},"State":"Flow","Cover":0,"Boost":0,"Low":0,"FL1":1,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":1},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0},"Connection":{"Time":"2025-07-30T19:50:22","MBRequests":1929,"MBNoError":1896,"MBIllegalFunc":0,"MBIllegalDataAddr":0,"MBIllegalDataValue":0,"MBSlaveError":0,"MBAck":0,"MBSlaveBusy":0,"MBNotEnoughData":0,"MBMemParityErr":0,"MBCRCErr":0,"MBGWPath":0,"MBGWTarget":0,"MBRegErr":0,"MBRegData":0,"MBTooManyReg":0,"MBUnknownErr":0,"MBNoResponse":33,"DataOutOfRange":0}}}
19:58:27.201 CMD: Backlog NPRead 0x10E;NPWrite 0x4CA,3;NPExec
19:58:27.241 RSL: RESULT = {"NPRead":{"Address":"0x010E","Data":"0x0000"}}
19:58:27.493 RSL: RESULT = {"NPWrite":{"Address":"0x04CA","Data":"0x0003"}}
19:58:27.729 RSL: RESULT = {"NPExec":"Done"}
19:58:30.920 RSL: SENSOR = {"Time":"2025-07-30T19:58:30","NeoPool":{"Time":"2025-07-30T19:58:06","Type":"Generic","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":25.6,"Powerunit":{"Version":"V6.17","NodeID":"0061 004A 4741 500E 2031 3232","5V":5,"12V":14,"24-30V":31,"4-20mA":0.000},"pH":{"Data":7.4,"Min":7.0,"Max":7.3,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":730,"Setpoint":700,"Tank":1},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":10.7,"Max":22.0,"Percent":{"Data":0,"Setpoint":48},"Runtime":{"Total":"13T10:15:56","Part":"13T10:15:56","Pol1":"6T18:33:28","Pol2":"6T15:42:28","Changes":62},"State":"Flow","Cover":0,"Boost":0,"Low":0,"FL1":1,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":1},"Light":0,"Relay":{"State":[0,0,0,0,0,1,0],"Aux":[0,0,1,0],"Acid":0},"Connection":{"Time":"2025-07-30T19:50:22","MBRequests":1985,"MBNoError":1950,"MBIllegalFunc":0,"MBIllegalDataAddr":0,"MBIllegalDataValue":0,"MBSlaveError":0,"MBAck":0,"MBSlaveBusy":0,"MBNotEnoughData":0,"MBMemParityErr":0,"MBCRCErr":0,"MBGWPath":0,"MBGWTarget":0,"MBRegErr":0,"MBRegData":0,"MBTooManyReg":0,"MBUnknownErr":0,"MBNoResponse":35,"DataOutOfRange":0}}}
19:58:39.195 CMD: Backlog NPRead 0x10E;NPWrite 0x4CA,4;NPExec
19:58:39.235 RSL: RESULT = {"NPRead":{"Address":"0x010E","Data":"0x0020"}}
19:58:39.515 RSL: RESULT = {"NPWrite":{"Address":"0x04CA","Data":"0x0004"}}
19:58:39.747 RSL: RESULT = {"NPExec":"Done"}
19:58:42.904 RSL: SENSOR = {"Time":"2025-07-30T19:58:42","NeoPool":{"Time":"2025-07-30T19:58:19","Type":"Generic","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":25.6,"Powerunit":{"Version":"V6.17","NodeID":"0061 004A 4741 500E 2031 3232","5V":5,"12V":14,"24-30V":31,"4-20mA":0.000},"pH":{"Data":7.4,"Min":7.0,"Max":7.3,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":730,"Setpoint":700,"Tank":1},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":10.7,"Max":22.0,"Percent":{"Data":0,"Setpoint":48},"Runtime":{"Total":"13T10:15:56","Part":"13T10:15:56","Pol1":"6T18:33:28","Pol2":"6T15:42:28","Changes":62},"State":"Flow","Cover":0,"Boost":0,"Low":0,"FL1":1,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":1},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0},"Connection":{"Time":"2025-07-30T19:50:22","MBRequests":2032,"MBNoError":1996,"MBIllegalFunc":0,"MBIllegalDataAddr":0,"MBIllegalDataValue":0,"MBSlaveError":0,"MBAck":0,"MBSlaveBusy":0,"MBNotEnoughData":0,"MBMemParityErr":0,"MBCRCErr":0,"MBGWPath":0,"MBGWTarget":0,"MBRegErr":0,"MBRegData":0,"MBTooManyReg":0,"MBUnknownErr":0,"MBNoResponse":36,"DataOutOfRange":0}}}
19:58:56.290 CMD: Backlog NPRead 0x10E;NPWrite 0x4D9,3;NPExec
19:58:56.328 RSL: RESULT = {"NPRead":{"Address":"0x010E","Data":"0x0000"}}
19:58:56.575 RSL: RESULT = {"NPWrite":{"Address":"0x04D9","Data":"0x0003"}}
19:58:56.811 RSL: RESULT = {"NPExec":"Done"}
19:59:09.441 CMD: Backlog NPRead 0x10E;NPWrite 0x4D9,4;NPExec
19:59:09.478 RSL: RESULT = {"NPRead":{"Address":"0x010E","Data":"0x0000"}}
19:59:09.742 RSL: RESULT = {"NPWrite":{"Address":"0x04D9","Data":"0x0004"}}
19:59:09.978 RSL: RESULT = {"NPExec":"Done"}

aux2,aux3, works well and I can see it in hayward touchpad and also in tasmota but aux4 is not. working. working= it turns on/off with the command sent. :slight_smile:

That was the NPSetOption1 which was disabled. According to the documentation it should be ON by default but nevermind. Thank you!

So Aux4 is a good candidate for debugging. I suspect that some systems need a little more time between commands than others. Let’s check:

Try enabling Aux4 having a delay between register writes by using

Backlog NPWrite 0x4D9,3;Delay 20;NPExec

(if that works, you can disable Aux4 with Backlog NPWrite 0x4D9,4;Delay 20;NPExec)

And if this generally works, try reducing the delay from 20 (meaning 20 x 0.1 seconds = 2 seconds) to 1.5 seconds (Delay 15) and continue reducing it until it stops working again.

Seems to be a bug that occurs in certain circumstances, will fix it. Thx

Hi,

There are no changes, aux4 is not activated:

11:33:33.029 CMD: Backlog NPWrite 0x4D9,3;Delay 20;NPExec
11:33:33.099 MQT: stat/SmartPool/RESULT = {"NPWrite":{"Address":"0x04D9","Data":"0x0003"}}
11:33:33.269 MQT: stat/SmartPool/RESULT = {"Delay":20}
11:33:35.293 MQT: stat/SmartPool/RESULT = {"NPExec":"Done"}
11:33:43.004 MQT: stat/SmartPool/RESULT = {"NPFiltration":"OFF","Speed":"1"}
11:33:43.029 MQT: stat/SmartPool/RESULT = {"NPFiltrationmode":"Auto"}
11:34:36.974 MQT: tele/SmartPool/SENSOR = {"Time":"2025-08-01T11:34:36","NeoPool":{"Time":"2025-08-01T11:34:15","Type":"Generic","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":24.8,"Powerunit":{"Version":"V6.17","NodeID":"0061 004A 4741 500E 2031 3232","5V":5,"12V":15,"24-30V":31,"4-20mA":0.000},"pH":{"Data":7.3,"Min":7.0,"Max":7.2,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":719,"Setpoint":700,"Tank":1},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":22.0,"Max":22.0,"Percent":{"Data":0,"Setpoint":100},"Runtime":{"Total":"13T10:15:56","Part":"13T10:15:56","Pol1":"6T18:33:28","Pol2":"6T15:42:28","Changes":62},"State":"Flow","Cover":0,"Boost":0,"Low":0,"FL1":1,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":1},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0},"Connection":{"Time":"2025-07-30T20:06:45","MBRequests":555093,"MBNoError":549418,"MBIllegalFunc":0,"MBIllegalDataAddr":0,"MBIllegalDataValue":0,"MBSlaveError":0,"MBAck":0,"MBSlaveBusy":0,"MBNotEnoughData":40,"MBMemParityErr":0,"MBCRCErr":16,"MBGWPath":0,"MBGWTarget":0,"MBRegErr":0,"MBRegData":0,"MBTooManyReg":0,"MBUnknownErr":14,"MBNoResponse":5605,"DataOutOfRange":0}}} (retained)
11:34:51.989 MQT: tele/SmartPool/SENSOR = {"Time":"2025-08-01T11:34:51","NeoPool":{"Time":"2025-08-01T11:34:27","Type":"Generic","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":24.9,"Powerunit":{"Version":"V6.17","NodeID":"0061 004A 4741 500E 2031 3232","5V":5,"12V":14,"24-30V":31,"4-20mA":0.000},"pH":{"Data":7.3,"Min":7.0,"Max":7.2,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":718,"Setpoint":700,"Tank":1},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":22.0,"Max":22.0,"Percent":{"Data":0,"Setpoint":100},"Runtime":{"Total":"13T10:15:56","Part":"13T10:15:56","Pol1":"6T18:33:28","Pol2":"6T15:42:28","Changes":62},"State":"Flow","Cover":0,"Boost":0,"Low":0,"FL1":1,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":1},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0},"Connection":{"Time":"2025-07-30T20:06:45","MBRequests":555168,"MBNoError":549492,"MBIllegalFunc":0,"MBIllegalDataAddr":0,"MBIllegalDataValue":0,"MBSlaveError":0,"MBAck":0,"MBSlaveBusy":0,"MBNotEnoughData":40,"MBMemParityErr":0,"MBCRCErr":16,"MBGWPath":0,"MBGWTarget":0,"MBRegErr":0,"MBRegData":0,"MBTooManyReg":0,"MBUnknownErr":14,"MBNoResponse":5606,"DataOutOfRange":0}}} (retained)
11:34:58.020 MQT: tele/SmartPool/SENSOR = {"Time":"2025-08-01T11:34:58","NeoPool":{"Time":"2025-08-01T11:34:34","Type":"Generic","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":24.8,"Powerunit":{"Version":"V6.17","NodeID":"0061 004A 4741 500E 2031 3232","5V":5,"12V":14,"24-30V":31,"4-20mA":0.000},"pH":{"Data":7.3,"Min":7.0,"Max":7.2,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":719,"Setpoint":700,"Tank":1},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":22.0,"Max":22.0,"Percent":{"Data":0,"Setpoint":100},"Runtime":{"Total":"13T10:15:56","Part":"13T10:15:56","Pol1":"6T18:33:28","Pol2":"6T15:42:28","Changes":62},"State":"Flow","Cover":0,"Boost":0,"Low":0,"FL1":1,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":1},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0},"Connection":{"Time":"2025-07-30T20:06:45","MBRequests":555192,"MBNoError":549516,"MBIllegalFunc":0,"MBIllegalDataAddr":0,"MBIllegalDataValue":0,"MBSlaveError":0,"MBAck":0,"MBSlaveBusy":0,"MBNotEnoughData":40,"MBMemParityErr":0,"MBCRCErr":16,"MBGWPath":0,"MBGWTarget":0,"MBRegErr":0,"MBRegData":0,"MBTooManyReg":0,"MBUnknownErr":14,"MBNoResponse":5606,"DataOutOfRange":0}}} (retained)
11:35:03.018 CMD: Backlog NPRead 0x10E;NPWrite 0x4D9,3;NPExec
11:35:03.059 MQT: stat/SmartPool/RESULT = {"NPRead":{"Address":"0x010E","Data":"0x0000"}}
11:35:03.313 MQT: stat/SmartPool/RESULT = {"NPWrite":{"Address":"0x04D9","Data":"0x0003"}}
11:35:03.502 MQT: stat/SmartPool/RESULT = {"NPExec":"Done"}

By other hand how Can i use aux1,aux2,aux3 in tasmota or HA to activate it?

Thanks

I Again:

I’m really scared right now:
After the last post, when I launched what you indicated, I went to hayward touchpad and I saw AL4:


so I couldn’t start chlorine, I saw it was related to external control, I looked for it in service menu and it was indicated as number 1( depending to redox ), I changed to 0 and after to 1. But AL4 remind there.
:scream:

Not sure if it is related or not but What Can I do?

This has nothing to do with these tests.

AL4 is an alarm message (I can’t remember the reason right now, but it’s in your manual); alarm messages must always be confirmed manually, after which the system will return to normal operation.

To reset an ALx message, press the circle that triggered the alarm for 3 seconds.

Alternatively you can send Tasmota cmnd NPEscape or hit the NeoPool "Clear Errors " button within this HA integration

*Edit: Description of reset options completed