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

Please show the packages section of your config.yaml

it’s your package : “ha_neopool_mqtt_package.yaml”

# HA NeoPool MQTT v3.5
# Tasmota NeoPool module integration via MQTT
# by @alexdelprete
# repo: https://github.com/alexdelprete/HA-NeoPool-MQTT
# starting discussion: https://github.com/arendst/Tasmota/discussions/19811

mqtt:
  sensor:
    - unique_id: "neopool_mqtt_system_model"
      name: "NeoPool MQTT System Model"
      state_topic: "tele/SmartPool/SENSOR"
      icon: mdi:information-outline
      value_template: "{{ value_json.NeoPool.Type }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_water_temperature"
      name: "NeoPool MQTT Water Temperature"
      device_class: temperature
      state_class: measurement
      unit_of_measurement: "°C"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Temperature }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_ph_data"
      name: "NeoPool MQTT pH Data"
      device_class: ph
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.pH.Data }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_ph_state"
      name: "NeoPool MQTT pH State"
      icon: mdi:ph
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set values = { 0:'No Alarm', 1:'pH too high', 2:'pH too low', 3:'Pump exceeded working time', 4:'pH high', 5:'pH low', 6:'Tank level low' } %}
        {{ values[value_json.NeoPool.pH.State] if value_json.NeoPool.pH.State in values.keys() }}
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_ph_pump"
      name: "NeoPool MQTT pH Pump"
      icon: mdi:ph
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set values = { 0:'Control Off', 1:'Active', 2:'Not Active' } %}
        {{ values[value_json.NeoPool.pH.Pump] if value_json.NeoPool.pH.Pump in values.keys() }}
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_redox_data"
      name: "NeoPool MQTT Redox Data"
      device_class: voltage
      unit_of_measurement: "mV"
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Redox.Data }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_data"
      name: "NeoPool MQTT Hydrolysis Data"
      unit_of_measurement: "%"
      icon: mdi:water-opacity
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Hydrolysis.Percent.Data | round(0) }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_data_gh"
      name: "NeoPool MQTT Hydrolysis Data (g/h)"
      unit_of_measurement: "g/h"
      icon: mdi:water-opacity
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Hydrolysis.Data | round(1) }}"
      availability_topic: "tele/SmartPool/SENSOR"
      availability_template: >-
        {% if value_json.NeoPool.Hydrolysis.Unit == "g/h" and states('sensor.neopool_mqtt_system_model') != 'unavailable' %}
          Online
        {% else %}
          Offline
        {% endif %}
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_state"
      name: "NeoPool MQTT Hydrolysis State"
      icon: mdi:water-opacity
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set values = { 'OFF':'Cell Inactive', 'FLOW':'Flow Alarm', 'POL1':'Pol1 active', 'POL2':'Pol2 active' } %}
        {{ values[value_json.NeoPool.Hydrolysis.State | upper] | string if value_json.NeoPool.Hydrolysis.State | upper in values.keys() }}
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_powerunit_version"
      name: "NeoPool MQTT Powerunit Version"
      icon: mdi:information-outline
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Powerunit.Version }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_powerunit_nodeid"
      name: "NeoPool MQTT Powerunit NodeID"
      icon: mdi:information-outline
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Powerunit.NodeID }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_powerunit_5v"
      name: "NeoPool MQTT Powerunit 5V"
      device_class: voltage
      state_class: measurement
      unit_of_measurement: "V"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Powerunit['5V'] }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_powerunit_12v"
      name: "NeoPool MQTT Powerunit 12V"
      device_class: voltage
      state_class: measurement
      unit_of_measurement: "V"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Powerunit['12V'] }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_powerunit_24v"
      name: "NeoPool MQTT Powerunit 24-30V"
      device_class: voltage
      state_class: measurement
      unit_of_measurement: "V"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Powerunit['24-30V'] }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_powerunit_4ma"
      name: "NeoPool MQTT Powerunit 4-20mA"
      device_class: current
      state_class: measurement
      unit_of_measurement: "mA"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Powerunit['4-20mA'] }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_runtime_total"
      name: "NeoPool MQTT Hydrolysis Runtime Total"
      device_class: duration
      state_class: measurement
      unit_of_measurement: "h"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set duration = value_json.NeoPool.Hydrolysis.Runtime.Total %}
        {{ (duration.split('T')[0] | int * 24) + (duration.split('T')[1].split(':')[0] | int) + (duration.split('T')[1].split(':')[1] | int / 60) | round(1) }}
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_runtime_part"
      name: "NeoPool MQTT Hydrolysis Runtime Part"
      device_class: duration
      state_class: measurement
      unit_of_measurement: "h"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set duration = value_json.NeoPool.Hydrolysis.Runtime.Part %}
        {{ (duration.split('T')[0] | int * 24) + (duration.split('T')[1].split(':')[0] | int) + (duration.split('T')[1].split(':')[1] | int / 60) | round(1) }}
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_runtime_pol1"
      name: "NeoPool MQTT Hydrolysis Runtime Pol1"
      device_class: duration
      state_class: measurement
      unit_of_measurement: "h"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set duration = value_json.NeoPool.Hydrolysis.Runtime.Pol1 %}
        {{ (duration.split('T')[0] | int * 24) + (duration.split('T')[1].split(':')[0] | int) + (duration.split('T')[1].split(':')[1] | int / 60) | round(1) }}
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_runtime_pol2"
      name: "NeoPool MQTT Hydrolysis Runtime Pol2"
      device_class: duration
      state_class: measurement
      unit_of_measurement: "h"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set duration = value_json.NeoPool.Hydrolysis.Runtime.Pol2 %}
        {{ (duration.split('T')[0] | int * 24) + (duration.split('T')[1].split(':')[0] | int) + (duration.split('T')[1].split(':')[1] | int / 60) | round(1) }}
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_runtime_pol_changes"
      name: "NeoPool MQTT Hydrolysis Runtime Polarity Changes"
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Hydrolysis.Runtime.Changes }}"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    # Connection diagnostic sensors
    - unique_id: "neopool_mqtt_conndiag_system_requests"
      name: "NeoPool MQTT Connection System Requests"
      icon: mdi:source-branch-check
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Connection.MBRequests }}"
      availability_topic: "tele/SmartPool/SENSOR"
      availability_template: >-
        {% if value_json.NeoPool.Connection.MBRequests is defined and states('sensor.neopool_mqtt_system_model') != 'unavailable' %}
          Online
        {% else %}
          Offline
        {% endif %}
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_conndiag_system_responses"
      name: "NeoPool MQTT Connection System Responses"
      icon: mdi:source-branch-check
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Connection.MBNoError }}"
      availability_topic: "tele/SmartPool/SENSOR"
      availability_template: >-
        {% if value_json.NeoPool.Connection.MBNoError is defined and states('sensor.neopool_mqtt_system_model') != 'unavailable' %}
          Online
        {% else %}
          Offline
        {% endif %}
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_conndiag_missed_system_responses"
      name: "NeoPool MQTT Connection Missed System Responses"
      icon: mdi:source-branch-check
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Connection.MBNoResponse }}"
      availability_topic: "tele/SmartPool/SENSOR"
      availability_template: >-
        {% if value_json.NeoPool.Connection.MBNoResponse is defined and states('sensor.neopool_mqtt_system_model') != 'unavailable' %}
          Online
        {% else %}
          Offline
        {% endif %}
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_conndiag_outofrange_system_responses"
      name: "NeoPool MQTT Connection Out of Range System Responses"
      icon: mdi:source-branch-check
      state_class: measurement
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Connection.DataOutOfRange }}"
      availability_topic: "tele/SmartPool/SENSOR"
      availability_template: >-
        {% if value_json.NeoPool.Connection.DataOutOfRange is defined and states('sensor.neopool_mqtt_system_model') != 'unavailable' %}
          Online
        {% else %}
          Offline
        {% endif %}
      payload_available: "Online"
      payload_not_available: "Offline"

  binary_sensor:
    - unique_id: "neopool_mqtt_modules_ph"
      name: "NeoPool MQTT pH Module"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Modules.pH }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_modules_redox"
      name: "NeoPool MQTT Redox Module"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Modules.Redox }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_modules_hydrolysis"
      name: "NeoPool MQTT Hydrolysis Module"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Modules.Hydrolysis }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_modules_chlorine"
      name: "NeoPool MQTT Chlorine Module"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Modules.Chlorine }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_modules_conductivity"
      name: "NeoPool MQTT Conductivity Module"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Modules.Conductivity }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_modules_ionization"
      name: "NeoPool MQTT Ionization Module"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Modules.Ionization }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_relay_ph_state"
      name: "NeoPool MQTT Relay pH State"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Relay.State[0] }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_relay_filtration_state"
      name: "NeoPool MQTT Relay Filtration State"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Relay.State[1] }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_relay_light_state"
      name: "NeoPool MQTT Relay Light State"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Relay.State[2] }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_relay_aux1_state"
      name: "NeoPool MQTT Relay AUX1 State"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Relay.State[3] }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_relay_aux2_state"
      name: "NeoPool MQTT Relay AUX2 State"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Relay.State[4] }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_relay_aux3_state"
      name: "NeoPool MQTT Relay AUX3 State"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Relay.State[5] }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_relay_aux4_state"
      name: "NeoPool MQTT Relay AUX4 State"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Relay.State[6] }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_relay_acid_state"
      name: "NeoPool MQTT Relay Acid State"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Relay.Acid }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_ph_ctrl_fl1"
      name: "NeoPool MQTT pH FL1"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.pH.FL1 }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_ctrl_fl1"
      name: "NeoPool MQTT Hydrolysis FL1"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Hydrolysis.FL1 }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_ctrl_fl1_water_flow"
      name: "NeoPool MQTT Hydrolysis Water Flow"
      icon: mdi:air-filter
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Hydrolysis.FL1 }}"
      payload_on: "0"
      payload_off: "1"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_ph_tank_level"
      name: "NeoPool MQTT pH Tank Level"
      device_class: problem
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.pH.Tank }}"
      payload_on: "0"
      payload_off: "1"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_cover"
      name: "NeoPool MQTT Hydrolysis Cover"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Hydrolysis.Cover }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_low_production"
      name: "NeoPool MQTT Hydrolysis Low Production"
      device_class: problem
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Hydrolysis.Low }}"
      payload_on: "1"
      payload_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

  switch:
    - unique_id: "neopool_mqtt_filtration_switch"
      name: "NeoPool MQTT Filtration Switch"
      device_class: switch
      command_topic: "cmnd/SmartPool/NPFiltration"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Filtration.State }}"
      optimistic: false
      retain: false
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_light_switch"
      name: "NeoPool MQTT Light Switch"
      device_class: switch
      command_topic: "cmnd/SmartPool/NPLight"
      state_topic: "tele/SmartPool/SENSOR"
      optimistic: false
      retain: false
      value_template: "{{ value_json.NeoPool.Light }}"
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_aux1_switch"
      name: "NeoPool MQTT AUX1 Switch"
      device_class: switch
      command_topic: "cmnd/SmartPool/NPAux1"
      state_topic: "tele/SmartPool/SENSOR"
      optimistic: false
      retain: false
      value_template: "{{ value_json.NeoPool.Relay.Aux[0] }}"
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_aux2_switch"
      name: "NeoPool MQTT AUX2 Switch"
      device_class: switch
      command_topic: "cmnd/SmartPool/NPAux2"
      state_topic: "tele/SmartPool/SENSOR"
      optimistic: false
      retain: false
      value_template: "{{ value_json.NeoPool.Relay.Aux[1] }}"
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_aux3_switch"
      name: "NeoPool MQTT AUX3 Switch"
      device_class: switch
      command_topic: "cmnd/SmartPool/NPAux3"
      state_topic: "tele/SmartPool/SENSOR"
      optimistic: false
      retain: false
      value_template: "{{ value_json.NeoPool.Relay.Aux[2] }}"
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_aux4_switch"
      name: "NeoPool MQTT AUX4 Switch"
      device_class: switch
      command_topic: "cmnd/SmartPool/NPAux4"
      state_topic: "tele/SmartPool/SENSOR"
      optimistic: false
      retain: false
      value_template: "{{ value_json.NeoPool.Relay.Aux[3] }}"
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

  select:
    - unique_id: "neopool_mqtt_filtration_mode"
      name: "NeoPool MQTT Filtration Mode"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set values = { 0:'Manual', 1:'Auto', 2:'Heating', 3:'Smart', 4:'Intelligent', 13:'Backwash' } %}
        {{ values[value_json.NeoPool.Filtration.Mode] if value_json.NeoPool.Filtration.Mode in values.keys() }}
      command_topic: "cmnd/SmartPool/NPFiltrationmode"
      command_template: >-
        {% set values = { 'Manual':0, 'Auto':1, 'Heating':2, 'Smart':3, 'Intelligent':4, 'Backwash':13 } %}
        {{ values[value] | string if value in values.keys() }}
      optimistic: false
      retain: false
      options: ["Manual", "Auto", "Heating", "Smart", "Intelligent", "Backwash"]
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_filtration_speed"
      name: "NeoPool MQTT Filtration Speed"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set values = { 1:'Slow', 2:'Medium', 3:'Fast' } %}
        {{ values[value_json.NeoPool.Filtration.Speed] if value_json.NeoPool.Filtration.Speed in values.keys() }}
      command_topic: "cmnd/SmartPool/NPFiltrationSpeed"
      command_template: >-
        {% set values = { 'Slow':1, 'Medium':2, 'Fast':3 } %}
        {{ values[value] | string if value in values.keys() }}
      optimistic: false
      retain: false
      options: ["Slow", "Medium", "Fast"]
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_boost_mode"
      name: "NeoPool MQTT Boost Mode"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: >-
        {% set values = { 0:'Off', 1:'On', 2:'On (Redox)' } %}
        {{ values[value_json.NeoPool.Hydrolysis.Boost] if value_json.NeoPool.Hydrolysis.Boost in values.keys() }}
      command_topic: "cmnd/SmartPool/NPBoost"
      command_template: >-
        {% set values = { 'Off':0, 'On':1, 'On (Redox)':2 } %}
        {{ values[value] | string if value in values.keys() }}
      optimistic: false
      retain: false
      options: ["Off", "On", "On (Redox)"]
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

  number:
    - unique_id: "neopool_mqtt_ph_min"
      name: "NeoPool MQTT pH Min"
      device_class: ph
      min: 0
      max: 14
      step: 0.1
      mode: "slider"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.pH.Min }}"
      command_topic: "cmnd/SmartPool/NPpHMin"
      optimistic: false
      retain: false
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_ph_max"
      name: "NeoPool MQTT pH Max"
      device_class: ph
      min: 0
      max: 14
      step: 0.1
      mode: "slider"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.pH.Max }}"
      command_topic: "cmnd/SmartPool/NPpHMax"
      optimistic: false
      retain: false
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_redox_setpoint"
      name: "NeoPool MQTT Redox Setpoint"
      device_class: voltage
      unit_of_measurement: "mV"
      min: 0
      max: 1000
      step: 1
      mode: "slider"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Redox.Setpoint }}"
      command_topic: "cmnd/SmartPool/NPRedox"
      optimistic: false
      retain: false
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_hydrolysis_setpoint"
      name: "NeoPool MQTT Hydrolysis Setpoint"
      unit_of_measurement: "%"
      min: 0
      max: 100
      step: 1
      mode: "slider"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Hydrolysis.Percent.Setpoint }}"
      command_topic: "cmnd/SmartPool/NPHydrolysis"
      command_template: "{{ value|string + ' %' }}"
      optimistic: false
      retain: false
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

  button:
    - unique_id: "neopool_mqtt_clear_error_state"
      name: "NeoPool MQTT Clear Error State"
      command_topic: "cmnd/SmartPool/NPEscape"
      entity_category: "config"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

I didn’t ask for the package file, but HA’s config file, that should contain the reference to the packages.

Example:

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

homeassistant:
  packages: !include_dir_named packages/

Oups sorry Alessandro

Thanks to your example, I just found the error. I had an extra “merge” in the config.yaml.

I don’t have any feedback.

My config is Atom S3 Lite + Tail485

Probably the GPIO ?. Should I put neopool TX / RX?

Thank you very much for your help.

If you use the Tail485 you should use:

AtomS3 Lite + Tail485: GPIO2: NeoPool TX - GPIO1: NeoPool RX

If used with the Atomic RS485 base:

AtomS3 Lite + Atomic RS485 Base: GPIO6: NeoPool TX - GPIO5: NeoPool RX

Put all the other GPIOs to None, if not needed for other needs.

Further info in this issue on the repo.

@curzon01: what would be the template for S3+Tail485? We’re missing it in the documentation and OP of this thread.

Great! It works.

You’re the best.

Is there another firmware or does it have no effect on the module type selection?

Because it’s not an ATOMIC RS485 but a TAIL485.

It’s just a description. The template you used is not for your hw combination

I asked @curzon01 if he can share the correct template so I can add it to the docs.

Once the template is published you can update it.

It’s simply the same as for AtomS3 Lite + Atomic RS485 Base but moving the 2 GPIOs from position 5/6 to 1/2:

Template {“NAME”:“AtomS3 Lite + Tail485”,“GPIO”:[0,7008,6976,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,0,0,0],“FLAG”:0,“BASE”:1}

Thanks, I never invested enough time on Tasmota docs regarding template, so I preferred asking the master. :slight_smile:

But wait, looking at Atom Lite + Atomic RS485 template, I see positions 15/18. Is it wrong? :thinking:

Atom Lite + Atomic RS485 Base (GPIO19: NeoPool TX / GPIO22: NeoPool RX)

Template {"NAME":"NeoPool Atom Lite + Atomic RS485 Base","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6976,0,0,7008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}

Also the Atom Lite + Tail485 looks wrong:

Atom Lite + Tail485 (GPIO26: NeoPool TX / GPIO32: NeoPool RX)

Template {"NAME":"NeoPool Atom Lite + Tail485","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,6976,0,0,0,0,0,7008,1,0,0,0,0,0,0],"FLAG":0,"BASE":1}

Yes, I confirm that it works, it’s just a question of perfect
Thank You

I will not recite above, is perfect

That’s correct.

Be careful, Atom Lite is not a MStack S3 and counting of Tasmota GPIO template arrays for GPIOs are different for these chip types. I remember we’d already checked this in the past.

I confirm that it seems to be working

AtomS3 Lite + Tail485

that’s fine, my comment was about the templates we use for other MStack module combinations

calm down. :slight_smile:

we’re discussing about other things.

I didn’t remember. :slight_smile:

It’s not very intuitive to me, that’s why I prefer asking you. The important thing is we didn’t make mistakes in documentation. Thanks.

Hello,
Thanks for this wonderful job, it works perfectly with my new Aquarite plus touch, I see that there is some comment around the conductivity probe, i’m trying to understand how to enable it, I did not find any kit to enable it whereas the notice say it is possible

What I did so far is to put the RX chip card to the CD slot (without U7 on the side) then the screen show the conductivity so I buy a EC probe that I have connected to the CD pin, unfortunately I get a value of 0, so now I wonder if there is a dedicated chip? The probe must be the very expensive sell by hayward?
If you have any hint it would be great :slight_smile:
Thanks a lot :slight_smile:

Hello, great job Alex, it was quite easy to follow and to implement.
I have a Aquarite LT with only one Modbus port for the display. I removed the display and plugged the ESP. All works but unfortunately I am receiveing strange values, see screenshot (temp doesn’t match at all for example
) Any Ideas how to fix it??

that’s one of the hacks I discussed with my friend @Cosmin.FRC. :slight_smile:

I have the Aquarite+ too. And it does not offer the COND option, but on the motherboard there is the card slot. So I asked Cosmin if in principle it would be possible to install it, and he told me that if you look closely, next to each “active” card slot, there’s a small chip next to it. On my Aquarite+, next to the COND card slot, that small chip is not there, so as you noticed even you put in the COND card, it doesn’t work. That small chip is needed. You should try to solder it. It’s the same chip for each card slot, take a picture of it. :slight_smile:

Data seems ok, probably your system is in F° not C°. Simply change the unit of measurement in the package to F° for temperature sensor.

Hi Alex, I don’t think the issue is linked to F° settings (this was also my 1st thought) but my settings are all in C°. Also the Temp is permanently switching between 13° and 71° where in reality I have 21°C.
In addition the other values are also quite strange, for example “Cell runtime” shows 3896 days but my Cell is brand new.