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

Hi All,

i’m triying to get this running. I ordered from m5 stack their AtomPoe / EspLite and tail485.

However, i can’t get the eth interface up and running, does somebody has some advice? I tried setting the pins correctly, and also enabling eth0 trough the console…

if that’s what you ordered is the ATOM PoE Kit (ATOM PoE / ATOM LITE EspLite), it uses the W5500 for ethernet. Then have a look under Tasmota support for ESP32 - Ethernet based on W5500 chip discussion.

Can anyone recommend a salt water generator model # that works with this/I can flash? The Tasmota docs aren’t much help in this regard.

I’m looking to add a SWG to my 9k gallon inground pool. I don’t have a pool automation system today, I use HA instead to control my pumps & heater. I’d like to do the same with an SWG so I can, for example, have my variable speed pump kick up the rpms when the SWG is generating, etc, but hard to find what model to get off Amazon.

Did you read the title of this thread?

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

Sugar Valley is the producer, the others (Hayward, Bayrol, etc.) rebrand the Sugar Valley devices, customize the fw a little bit etc. But basically, they’re all Sugar Valley inside.

I got myself an Aquarite+, but if I had to buy a new device, I’d order s SugarValley Aquascenic today.

Check here for documentation etc. https://sugar-valley.net/en/comparaciones/

There are good and honest resellers online, but you need to contact them directly and talk to them. I found my reseller in Spain, and it was a very good experience, good discount and good support.

Of course I did, that’s why I asked specifically about model #, sorry if that wasn’t clear. Basically, looking for suggestions on the best model available on Amazon that would work with this.

If all or most Hayward models are supported by this I could get one of those, but as I’ve never had a SWG before I thought I would ask folks here for advice. Appreciate the time.

Edit: I’m in the US, and gathering that the Hayward brand is what’s common here, the rest I would have to go with overseas resellers.

I took a look at US hayward site: I see old systems there…don’t see all new models we have in europe. Also, one important thing: don’t forget to choose a system that supports at least double the volume of your pool, e.g.: 9k gallons? get a system sized for 18k gallons.

many thanks , can you share the CLI commands of these one you’ve set in tasmota?
Currently running similar to this through HA. I have also implemented that hydrolisis setpoint goes to 0% when defrost mode is active.

About the AUX switches, i’ve realized that i cannot activate them from HA (mqtt) so i’ve my UV lamp hooked to aux 1 which i cannot control.
Is it because of the config i’ve done on the controller ( i believe is linked to flow) and should i put it to manual ?

thank you

Marco

I’ll do it in the next few days (I have to summarize it with some description, otherwise it might be hard to understand).

for this to work with HA (mqtt), Tasmota AUX cmnds must be implemented on the Tasmota side, see #330,

many thanks as always for your valuable support.
Did the procedure and activated persistent Berry commands.
Now i see fully the tasmota button, but clicking on it do not change the state, nor works from HA neopool dashboard…what am i doing wrong ?

Also tried to launch some userdefined command after, from the consol, such as NPVersion and they return correct info . But as you could see below, if i toggle one AUX with NPaux4 it shows it toggles, but the status do not change

unfortunately you tested it with the worse case (still on some Sugar Valley Aux4 not working), is AUX1 working?
And can you tell what Sugar Valley system you have (model and version)?

14:42:21.376 MQT: stat/SmartPool/RESULT = {"NPAux2":"ON"} 14:42:25.909 MQT: tele/SmartPool/SENSOR = {"Time":"2025-02-08T14:42:25","NeoPool":{"Time":"2025-02-08T14:42:24","Type":"Oxilife","Modules":{"pH":1,"Redox":0,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":6.8,"Powerunit":{"Version":"V4.3","NodeID":"XXXX XXXX XXXX XXXX XXXX 3631","5V":5,"12V":12,"24-30V":33,"4-20mA":0.040},"pH":{"Data":7.2,"Min":7.0,"Max":7.2,"State":0,"Pump":0,"FL1":0,"Tank":1},"Hydrolysis":{"Data":0,"Unit":"%","Setpoint":30,"Max":100,"Percent":{"Data":0,"Setpoint":30},"Runtime":{"Total":"69T00:10:09","Part":"69T00:10:09","Pol1":"34T12:43:13","Pol2":"34T11:26:56","Changes":281},"State":"Pol2","Cover":0,"Boost":0,"Low":0,"FL1":0,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":3},"Light":0,"Relay":{"State":[0,0,0,1,0,0,0],"Aux":[1,0,0,0],"Acid":0},"Connection":{"Time":"2025-02-07T23:35:52","MBRequests":207215,"MBNoError":204278,"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":2937,"DataOutOfRange":0}}} (retained) 14:42:27.911 MQT: tele/SmartPool/SENSOR = {"Time":"2025-02-08T14:42:27","NeoPool":{"Time":"2025-02-08T14:42:26","Type":"Oxilife","Modules":{"pH":1,"Redox":0,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":6.8,"Powerunit":{"Version":"V4.3","NodeID":"XXXX XXXX XXXX XXXX XXXX 3631","5V":5,"12V":14,"24-30V":33,"4-20mA":0.050},"pH":{"Data":7.2,"Min":7.0,"Max":7.2,"State":0,"Pump":0,"FL1":0,"Tank":1},"Hydrolysis":{"Data":0,"Unit":"%","Setpoint":30,"Max":100,"Percent":{"Data":0,"Setpoint":30},"Runtime":{"Total":"69T00:10:09","Part":"69T00:10:09","Pol1":"34T12:43:13","Pol2":"34T11:26:56","Changes":281},"State":"Flow","Cover":0,"Boost":0,"Low":0,"FL1":1,"Redox":0},"Filtration":{"State":0,"Speed":1,"Mode":3},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0},"Connection":{"Time":"2025-02-07T23:35:52","MBRequests":207223,"MBNoError":204286,"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":2937,"DataOutOfRange":0}}} (retained) 14:42:48.771 MQT: stat/SmartPool/RESULT = {"NPFiltration":"OFF","Speed":"1"} 14:42:48.798 MQT: stat/SmartPool/RESULT = {"NPFiltrationmode":"Smart"} 14:42:51.446 MQT: stat/SmartPool/RESULT = {"NPAux":"Error"}

This is what I got, apparently blinks on for a while, but also switch on my pump and the gives error and switches off.

Sorry, but can you pls simply tell me which Model Number of the Oxilfie you have?

The issue (AUX not switching) you have has nothing to do with HA or this integration via MQTT so you have to set up all tests using commands NPAux1 on Tasmota Console without using HA or this integration.

Again: Is NPAux1 ON/NPAux1 OFF switches Aux1 on your system? You have to test this with Aux1, not with Aux2 and not with Aux3 and not with Aux4.

Also tell me which Aux do you are using for which function (you can use Tasmota cmnd NPControl to get these information).

Oxilife ox1
I sent you the log to show that aux2 toggle for a sec, but as result also toggle filtration on for a sec only.

The aux 1 is for the UV lamp and it’s automated with flow. Tried to manual toggle on but no success. It won’t toggle.

I think we are only making slow progress here:

If I write that you should use NPAux(x) ON (1) and OFF (0) (and not 2 for toggle), there are also certain reasons for this. Toggle (2) works differently than ON (1)/OFF (0). I would also like to know whether the relay switches physically, no log tells me that.

What does NPControl provide?

To make some progress here, I would like to ask you to carry out the following steps exactly as described here.

We already know that your AUX are not working as they should. To analyze the problem, you should do the following on the Tasmota WebUI under “Tools/Console” (without own modification)

  1. Please share what NPControl delivers, e. g.
11:01:38.646 CMD: NPControl
11:01:38.653 RSL: NPCONTROL = {"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}}
  1. Prepare the follwoing for step 3 to 6
    To exclude all side effects, we disable temporarly MQTT on Tasmota with command SO3 0 and switch filtration mode to manual:
10:58:09.965 CMD: NPFiltrationmode Manual
10:58:09.968 MQT: stat/SmartPool/NPFILTRATIONMODE = {"NPFiltrationmode":"Manual"}
10:58:11.965 CMD: SO3 0
10:58:11.968 RSL: SO = {"SetOption3":"OFF"}

The system reboots.

  1. Now get the current status auf Aux
11:03:29.534 CMD: NPAux1
11:03:29.629 RSL: NPAUX = {"NPAux1":"OFF"}
  1. Then switch Aux on and off, wait at min. 10 seconds between each command:
11:04:09.337 CMD: NPAux1 ON
11:04:09.526 RSL: NPAUX = {"NPAux1":"ON"}
11:04:25.493 CMD: NPAux1 OFF
11:04:25.683 RSL: NPAUX = {"NPAux1":"OFF"}
  1. does the associated aux relay switch on physically for the given time?

  2. does the Oxilife display show this on the main screen (status line at the bottom)?

Repeat step 3 to 6 with AUX2 to AUX4. It is very important start the test with AUX1 followed by AUX2-AUX4

  1. Finally, reactivate MQTT and filtration mode:
11:05:42.550 NPFiltrationmode Smart
11:05:42.553 MQT: stat/SmartPool/RESULT = {"NPFiltrationmode":"Smart"}
11:05:43.550 CMD: SO3 1
11:05:43.553 RSL: SO = {"SetOption3":"ON"}

The system reboots.

I’m curious…

Edit: Insert set filtration mode to manual for tests ion step 2 and 7

Here it is

Setup

The following Tasmota setup must be done via the Tasmota WebUI “Tools/Console”.

If you use a detailed authorization for your mqtt users (like me), note that the rules are subscribed to their own stat/# topic. The Tasmota MQTT user must have the authorization to do this.

1. First disable rules during setup

Backlog Rule1 0;Rule2 0;Rule3 0`

2. Set default values
Set up each mem value according to your own requirements, see

Tasmota var/mem mapping
# Antifreeze example conditions
#        T  >3.0    :Set Mode to Mem4 settings (e.g. AUTO)
# >-0.5  T  <1.5    :INTERVAL-Mode (interval times see Mem6 and Mem7)
# <-1.5  T          :PERMANENT

# Variables (persistent, stored in flash memory)
# ----------------------------------------------
#  Mem1:  PERMANENT temperature upper limit (e.g. -1.5)
#  Mem2:  INTERVAL temperature lower limit (e.g. -0.5)
#  Mem3:  INTERVAL temperature upper limit (e.g. 1.5)
#  Mem4:  AUTO temperature lower limit (e.g. 3)
#  Mem6:  INTERVAL runtime <sec> (e.g. 300 for 5 minutes)
#  Mem7:  INTERVAL pause <sec> (e.g. 6900 for 115 minutes)
#  Mem8:  AUTO filtration mode (e.g. "Auto")
#  Mem9:  Filtration run mode (e.g. "1,1" means ON and slow)
#  Mem10: Tasmota own status topic

# Variables (non-persistent, used during runtime)
# ----------------------------------------------
#  Var1: Mode (OFF|ON)
#  Var2: Status (AUTO|INTERVAL|PERMANENT)
#  Var3: Pause ruletimer (current)
#  Var4: Run ruletimer (current)
#  Var5: Pause ruletimer (set)
#  Var6: Run ruletimer (set)
Backlog
  Mem1 -1.5;
  Mem2 -0.5;
  Mem3 1.5;
  Mem4 3;
  Mem6 300;
  Mem7 6900;
  Mem8 Auto;
  Mem9 1,1;
  Mem10 stat/SmartPool/

3. Set rules
Please adjust the desired measuring sensor for the temperature here (here DS18B20-1).

Rule1
  ON DS18B20-1#Temperature>%Mem4% DO Event AUTO ENDON
  ON DS18B20-1#Temperature<%Mem3% DO IF (%value%>%Mem2%) Event INTERVAL ENDIF ENDON
  ON DS18B20-1#Temperature>%Mem2% DO IF (%value%<%Mem3%) Event INTERVAL ENDIF ENDON
  ON DS18B20-1#Temperature<%Mem1% DO Event PERMANENT ENDON

For example, if you want to use the NeoPool water temperature sensor, the rule rules would be as follows:

Rule1
  ON NeoPool#Temperature>%Mem4% DO Event AUTO ENDON
  ON NeoPool#Temperature<%Mem3% DO IF (%value%>%Mem2%) Event INTERVAL ENDIF ENDON
  ON NeoPool#Temperature>%Mem2% DO IF (%value%<%Mem3%) Event INTERVAL ENDIF ENDON
  ON NeoPool#Temperature<%Mem1% DO Event PERMANENT ENDON

Rule2 must entered in two parts because the input buffer of the console is too small to handle the entire rule at once:

Rule2
  ON System#Boot DO Backlog Var3 0;Var4 0;Var5 0;Var6 0;Var7 ";Rule1;Event Sub ENDON
  ON Time#Minute|30 DO Event Sub ENDON
  ON Rule1#State=OFF DO Backlog Var1 OFF;RuleTimer1 0;Var5 0;RuleTimer2 0;Var6 0 ENDON
  ON Rule1#State=ON DO Var1 ON ENDON
  ON Rules#Timer=1 DO NPFiltration 0 ENDON
  ON Rules#Timer=1 DO RuleTimer2 %Mem7% ENDON
  ON Rules#Timer=1 DO Var6 %Mem7% ENDON
  ON Rules#Timer=2 DO NPFiltration %Mem9% ENDON
  ON Rules#Timer=2 DO RuleTimer1 %Mem6% ENDON
  ON Rules#Timer=2 DO Var5 %Mem6% ENDON
  ON Event#AUTO DO Backlog Var2 AUTO;RuleTimer1 0;Var5 0;RuleTimer2 0;Var6 0;NPFiltrationMode %Mem8% ENDON
  ON Event#INTERVAL DO Backlog Var2 INTERVAL;NPFiltration %Mem9%;Ruletimer2 0;RuleTimer1 %Mem6%;Var5 %Mem6% ENDON
  ON Event#PERMANENT DO Backlog Var2 PERMANENT;RuleTimer1 0;Var5 0;RuleTimer2 0;Var6 0;NPFiltration %Mem9% ENDON
  ON Event#Sub DO Backlog Subscribe Ruletimers,%Mem10%RULETIMER ENDON
Rule2 +
  ON Event#Ruletimers#T1 DO Var3 %value% ENDON
  ON Event#Ruletimers#T1 DO IF (%Var3%!=0) Ruletimer3 1 ENDIF ENDON
  ON Event#Ruletimers#T2 DO Var4 %value% ENDON
  ON Event#Ruletimers#T2 DO IF (%Var4%!=0) Ruletimer4 1 ENDIF ENDON
  ON Rules#Timer=3 DO Ruletimer ENDON
  ON Rules#Timer=4 DO Ruletimer ENDON
Rule3
  ON Var1#State DO Event Pub ENDON
  ON Var2#State DO Event Pub ENDON
  ON Var3#State DO Event Pub ENDON
  ON Var4#State DO Event Pub ENDON
  ON Var5#State DO Event Pub ENDON
  ON Var5#State DO IF (%Var5%!=0) Var7 ,"RunSet":%Var5% ELSE Var7 " ENDON
  ON Var6#State DO Event Pub ENDON
  ON Var6#State DO IF (%Var6%!=0) Var7 ,"PauseSet":%Var6% ELSE Var7 " ENDON
  ON Mem1#State DO Event Pub ENDON
  ON Mem2#State DO Event Pub ENDON
  ON Mem3#State DO Event Pub ENDON
  ON Mem4#State DO Event Pub ENDON
  ON Mem6#State DO Event Pub ENDON
  ON Mem7#State DO Event Pub ENDON
  ON Mem8#State DO Event Pub ENDON
  ON Mem9#State DO Event Pub ENDON
  ON Event#Pub DO Publish2 %Mem10%ANTIFREEZE {"Mode":"%Var1%","State":"%Var2%","Timer":{"Run":%Var3%,"Pause":%Var4%%Var7%},"Auto":{"Upper":%Mem4%,"FiltrationMode":"%Mem8%"},"Interval":{"Lower":%Mem2%,"Upper":%Mem3%,"Filtration":"%Mem9%","Run":%Mem6%,"Pause":%Mem7%},"Permanent":{"Lower":%Mem1%}} ENDON

To add the auto time sync functionalty add these to Rule3:

Rule3 +
  ON Time#Initialized DO NPTime 0 ENDON
  ON Time#Set DO NPTime 0 ENDON

4. Enable rules

Note: It is important that we set Rule1 to ONCE mode (Rule1 5) and do not add any other actions to rule 1 that are to be executed continuously, otherwise the temperature sensor values will trigger the rule continuously several times per second, which is not desirable.

Backlog
  Rule1 5;Rule1 1;
  Rule2 4;Rule2 1;
  Rule3 4;Rule3 1

Finally, to control the whole thing via HA, here is an example for the HA MQTT integration:

NeoPool Antifreeze HA MQTT Integration
mqtt:
  switch:
    - unique_id: "mqtt_oxilfe_antifreeze_mode"
      name: "MQTT Oxilife Antifreeze Mode"
      device_class: switch
      state_topic: "stat/SmartPool/RULE"
      value_template: >-
        {{ value_json.Rule1.State if value_json.Rule1.State is defined else this.state }}
      state_on: "ON"
      state_off: "OFF"
      command_topic: "cmnd/SmartPool/Rule1"
      payload_on: "ON"
      payload_off: "OFF"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

  number:
    - unique_id: "mqtt_oxilfe_antifreeze_auto_upper"
      name: "MQTT Oxilife Antifreeze Auto Upper"
      device_class: temperature
      unit_of_measurement: "°C"
      min: 0
      max: 12
      step: 0.1
      mode: slider
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {{ value_json.Auto.Upper }}
      command_topic: "cmnd/SmartPool/Mem4"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "mqtt_oxilfe_antifreeze_interval_upper"
      name: "MQTT Oxilife Antifreeze Interval Upper"
      device_class: temperature
      unit_of_measurement: "°C"
      min: 0
      max: 12
      step: 0.1
      mode: slider
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {{ value_json.Interval.Upper }}
      command_topic: "cmnd/SmartPool/Mem3"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "mqtt_oxilfe_antifreeze_interval_lower"
      name: "MQTT Oxilife Antifreeze Interval Lower"
      device_class: temperature
      unit_of_measurement: "°C"
      min: -5
      max: 0
      step: 0.1
      mode: slider
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {{ value_json.Interval.Lower }}
      command_topic: "cmnd/SmartPool/Mem2"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "mqtt_oxilfe_antifreeze_interval_run"
      name: "MQTT Oxilife Antifreeze Interval Run"
      device_class: duration
      unit_of_measurement: "s"
      min: 0
      max: 86400
      mode: box
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {{ value_json.Interval.Run }}
      command_topic: "cmnd/SmartPool/Mem6"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "mqtt_oxilfe_antifreeze_interval_pause"
      name: "MQTT Oxilife Antifreeze Interval Pause"
      device_class: duration
      unit_of_measurement: "s"
      min: 0
      max: 86400
      step: 60
      mode: box
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {{ value_json.Interval.Pause }}
      command_topic: "cmnd/SmartPool/Mem7"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "mqtt_oxilfe_antifreeze_timer_run"
      name: "MQTT Oxilife Antifreeze Timer Run"
      device_class: duration
      unit_of_measurement: "s"
      min: 0
      max: 86400
      step: 60
      mode: box
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {{ value_json.Timer.Run }}
      command_topic: "cmnd/SmartPool/Ruletimer1"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "mqtt_oxilfe_antifreeze_timer_pause"
      name: "MQTT Oxilife Antifreeze Timer Pause"
      device_class: duration
      unit_of_measurement: "s"
      min: 0
      max: 86400
      step: 60
      mode: box
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {{ value_json.Timer.Pause }}
      command_topic: "cmnd/SmartPool/Ruletimer2"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "mqtt_oxilfe_antifreeze_permanent_lower"
      name: "MQTT Oxilife Antifreeze Permanent Lower"
      device_class: temperature
      unit_of_measurement: "°C"
      min: -10
      max: 0
      step: 0.1
      mode: slider
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {{ value_json.Permanent.Lower }}
      command_topic: "cmnd/SmartPool/Mem1"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"


  select:
    - unique_id: "mqtt_oxilfe_antifreeze_auto_filtrationmode"
      name: "MQTT Oxilife Antifreeze Auto Filtration Mode"
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {% set values = { "Manual":'Manuell', "Auto":'Auto', "Heating":'Heizung', "Smart":'Smart', "Intelligent":'Intelligent' } %}
        {{ values[value_json.Auto.FiltrationMode] if value_json.Auto.FiltrationMode in values.keys() }}
      command_topic: "cmnd/SmartPool/Mem8"
      command_template: >-
        {% set values = { "Manual":'Manuell', "Auto":'Auto', "Heating":'Heizung', "Smart":'Smart', "Intelligent":'Intelligent' } %}
        {% set setvalue = values[value] | string if value in values.keys() %}
        {{ setvalue }}
      options: ['Manuell', 'Auto', 'Heizung', 'Smart', 'Intelligent']
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "mqtt_oxilfe_antifreeze_interval_filtration"
      name: "MQTT Oxilife Antifreeze Interval Filtration"
      state_topic: "stat/SmartPool/ANTIFREEZE"
      value_template: >-
        {% set values = { "0":'OFF', "1,1":'Slow', "1,2":'Medium', "1,3":'Fast' } %}
        {{ values[value_json.Interval.Filtration] if value_json.Interval.Filtration in values.keys() }}
      command_topic: "cmnd/SmartPool/Mem9"
      command_template: >-
        {% set values = { "0":'OFF', "1,1":'Slow', "1,2":'Medium', "1,3":'Fast' } %}
        {% set setvalue = values[value] | string if value in values.keys() %}
        {{ setvalue }}
      options: ["OFF", "Slow", "Medium", "Fast"]
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

  sensor:
    - unique_id: "mqtt_oxilfe_antifreeze_state"
      name: "MQTT Oxilife Antifreeze State"
      state_topic: "stat/SmartPool/ANTIFREEZE"
      icon: mdi:state-machine
      value_template: >-
        {{ value_json.State }}
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

Hi everyone,

does anyone know if NeoPool is working with my years old Bayrol Automatic Salt? There is no extern and no wifi port, but a RS485 port (with no pins connected). Some Pics here.

Thank you very much, Stefano

AFAIK Bayrol Automatic Salt (especially the current AS5/AS7) was/is based on a different platform than Sugar Valley, that was just the Bayrol Salt Relax (Pro). It also doesn’t look like a typical Sugar Valley layout - so I don’t think that will work.

Ok, thank you

Interesting. @hidry Let me know if you find a local integration for automatic Salt. Mine appears to be a different version