Domotisation adoucisseur (alarme fuite)

Mon problème

Bonjour

Je voudrais pouvoir contrôler l’absence de fuite sur mon adoucisseur.
Je voudrais donc installer des débitmètre à turbine pour vérifier l’eau utilisé, mais surtout pouvoir effectuer un contrôle d’absence de fuite.

schema adoucisseur

Principe de fonctionnement :
Après avoir utiliser sa capacité en eau adoucie, l’adoucisseur passe en cycle de régénération.

  • lors de ce cycle le micro switch régénération (3) s’enclenche jusqu’à la fin du cycle complet

  • La durée d’un cycle est d’environ 90 minutes

  • pendant ce cycle de l’eau s’écoule par le rejet et traverse le compteur à turbine (2)

  • Je voudrais donc vérifier qu’il n’y a pas d’eau qui traverse le compteur (2) si l’adoucisseur n’est pas en régénération.
    et donc recevoir une alerte si le compteur tourne.

  • Je voudrais aussi totaliser le nombre de déclenchement de régénération (cycle) (3) afin de recevoir une alerte pour remplir le bac à sel tous les X cycles.

  • Je voudrais que 90 minutes après un déclenchement de cycle de régénération (3), vérifier que l’eau ne coule plus par le compteur (2) et recevoir une alerte si c’est pas le cas.

le compteur a turbine serait de ce type :
https://fr.aliexpress.com/item/4001114496369.html?gatewayAdapt=glo2fra&spm=a2g0o.cart.0.0.46973c00dvGKUI&mp=1

le switch de régénération est un simple contact sec inverseur.

Je sollicite votre aide, votre expérience, ou votre avis pour mener a bien ce projet
Mes questions sont les suivantes :

  • Qu’elle type de matériel je dois utiliser pour pouvoir réaliser un tel montage ?
    (j’ai vu que certains ont utilisé des ESPhome pour domotiser leur adoucisseur, mais je dois bien avouer que je n’y connais rien.)

  • Pensez vous que ce soit réalisable pour un débutant ?

  • Ceci est il intégrable à Home Assistant ?

Merci par avance a tous ceux qui m’apporteront leur aide, ou qui auront pris le temps de me lire. :grin:

Ma configuration


System Health

version core-2022.3.5
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.9
os_name Linux
os_version 5.10.92-v8
arch aarch64
timezone Europe/Paris
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4742
Installed Version 1.23.0
Stage running
Available Repositories 1080
Downloaded Repositories 41
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 7.5
update_channel stable
supervisor_version supervisor-2022.03.5
docker_version 20.10.9
disk_total 219.4 GB
disk_used 18.1 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.3.0), Samba share (9.5.1), File editor (5.3.3), Duck DNS (1.14.0), Mosquitto broker (6.0.1), MariaDB (2.4.0), NGINX Home Assistant SSL proxy (3.1.1), Nginx Proxy Manager (0.11.0), Simple Scheduler (0.40), Check Home Assistant configuration (3.10.0), Node-RED (11.1.0), Studio Code Server (4.1.0), Plex Media Server (2.8.0)
Lovelace
dashboards 2
resources 33
views 17
mode storage
Xiaomi MIoT
logged_in true
can_reach_micloud_server ok
accounts_count 1
account_devices_count 1
added_devices 1
___

hello
pour ma part je mesure ma conso heure par heure
compteur avec reset.
de 2h à 4h (chez moi on dort hi )
ma conso doit être égale à 0.
si <> il y a fuite
notification sms free (fuite eau)
bye

Le problème, c’est que l’adoucisseur se nettoie automatiquement au bout d’un certain volume d’eau consommé, et donc le cycle de nettoyage peut être n’importe quel jour (entre les 7 à 10jours ), mais toujours à partir 2H et jusqu’à 4H maxi.
Donc le contrôle d’absence de fuite ne doit se faire que en dehors de cet horaire.

Mon Projet avance…un peu

  • Je viens de recevoir le capteur de passage pour mettre sur la vidange de l’adoucisseur
    https://fr.aliexpress.com/item/4000933130112.html?gatewayAdapt=glo2fra&spm=a2g0o.order_list.0.0.21ef5e5bhqgJOI

  • J’ai récupérer un switch contact pour l’information de régénération.

  • Pour Alimentation je vais récuperer le 24V sur l’alimentation de l’adoucisseur

  • Je voulais partie sur ESP… mais comme je n’y connais rien, je me suis plutôt tourné vers un shelly Uni (en attente de réception). Une fois que j’aurai testé et si sa fonctionne, je verrais avec les experts de HACF pour faire installation avec un ESP.

Voila ou en est ce projet,
J’ai installé le shelly uni, le switch et le capteur de débit sur un banc d’essai avant de le mettre en place sur adoucisseur.
Le câblage des différent élément est le suivant :

Dans HA j’ai crée quelques automatismes qui sont :

  • Si switch cycle à l’arrêt (OFF) et contact de débit rejet (ON) pendant + 30 secondes alors Notification et fermeture électrovanne eau
  • Si contact de débit rejet (ON) pendant plus de 80 minutes alors notification et fermeture électrovanne eau
  • Si switch cycle en marche (ON) pendant plus de 80 minutes alors notification et fermeture électrovanne eau

Maintenant je voudrais ajouter quelques options. C’est la que j’ai besoin de votre aide car je ne sais pas trop comment faire

  • Comptabiliser le nombre de cycle et garder un historique (édit: J’ai trouvé pour le compteur…)

  • Avoir la date du dernier cycle (édit: J’ai trouvé pour la date…)

Bouton pour afficher l’état de adoucisseur

Carte bouton Cycle : (le bouton change d’apparence en fonction de l’état)
cycle offcycle oncycle alerte

code bouton cycle
type: custom:button-card
entity: binary_sensor.switch_cycle_input
aspect_ratio: 5/2
show_state: false
show_last_changed: true
styles:
  card:
    - background-color: white
    - border-radius: 10%
    - filter: opacity(100%)
    - padding: 2px
    - text-transform: null
    - font-size: 12px
state:
  - value: 'on'
    icon: |
      [[[
       if (states['timer.adoucisseur_minuteur_cycle'].state == 'active')
         return 'mdi:sync-circle'; return 'mdi:sync-alert'   
      ]]]
    name: |
      [[[
        if (states['timer.adoucisseur_minuteur_cycle'].state == 'active')
         return 'Régénration'; return 'Defaut cycle'
       ]]] 
    styles:
      card:
        - background-color: white
        - border: |
            [[[
             if (states['timer.adoucisseur_minuteur_cycle'].state == 'active')
               return '2px solid var(--google-grenn)'; return '2px solid var(--google-red)'   
             ]]]
        - color: red
      icon:
        - color: |
            [[[
             if (states['timer.adoucisseur_minuteur_cycle'].state == 'active')
               return 'green'; return 'red'   
             ]]]
      name:
        - color: black
  - value: 'off'
    icon: mdi:water-sync
    name: En Service
    styles:
      card:
        - background-color: white
        - border: 2px solid var(--google-grey)
        - color: grey
      icon:
        - color: grey
      name:
        - color: black

Carte bouton rejet: (le bouton change d’apparence en fonction de l’état)
rejet_1rejet_2rejet_3

Code bouton rejet
type: custom:button-card
entity: binary_sensor.debit_rejet_input
aspect_ratio: 5/2
show_state: false
show_last_changed: true
styles:
  card:
    - background-color: white
    - border-radius: 10%
    - filter: opacity(100%)
    - padding: 2px
    - text-transform: null
    - font-size: 12px
state:
  - value: 'on'
    icon: |
      [[[
       if (states['binary_sensor.switch_cycle_input'].state == 'off')
         return 'mdi:water-alert'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
         return 'mdi:water-alert'; return 'mdi:water'   
      ]]]
    name: |
      [[[
       if (states['binary_sensor.switch_cycle_input'].state == 'off')
         return 'Fuite Adoucisseur'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
         return 'Fuite Adoucisseur '; return 'Regeneration'   
      ]]]
    styles:
      card:
        - background-color: white
        - border: |
            [[[
             if (states['binary_sensor.switch_cycle_input'].state == 'off')
               return '2px solid var(--google-red)'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
               return '2px solid var(--google-red)'; return '2px solid var(--google-green)'   
             ]]]
        - color: red
      icon:
        - color: |
            [[[
             if (states['binary_sensor.switch_cycle_input'].state == 'off')
               return 'red'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
               return 'red'; return 'green'   
             ]]]
      name:
        - color: black
  - value: 'off'
    icon: mdi:water-check
    name: Pas de Fuite
    styles:
      card:
        - background-color: white
        - border: 2px solid var(--google-grey)
        - color: grey
      icon:
        - color: grey
      name:
        - color: black

Carte Gestion Adoucisseur

La partie Suivi des phases de cycle n’est pas opérationnel :face_with_head_bandage:

Je viens de finir la partie suivi des phases de cycle à l’aide d’automatisme :exploding_head:.

Ce qui me donne une carte de ce type

Bon après cette période d’essai j’ai du modifier un peu le système.

En effet certaine impureté (micro bille) venait bloquer le détecteur de fuite.
J’ai donc du mettre un filtre tamis devant pour le protéger

La carte finale a aussi un peu évolué :
AD

Bonjour a tous

J’ai domotiser mon adoucisseur, il y a quelque temps avec un Shelly uni ou je récupère la position service de l’appareil et les fuites au rejet de mon adoucisseur. Sa fonctionne plutôt bien (sauf que le shelly perd sa connexion au réseau de temps en temps).

J’ai donc décider de basculer sur un ESP32, car je veux regrouper mes deux contact cycle et fuite et y joindre un capteur a effet hall (compteur eau adoucie) et une sonde de température. (et peut être de récupérer le comptage de mon adoucisseur fleck)

Je débute sur ESPHome et esp32. Je ne suis ni electronicien, ni devellopeur donc c’est pas facile et je galère un peu…beaucoup…passionnément… :sweat_smile:

pour m’aider je me suis inspiré de ce projet :
https://forum.hacf.fr/t/connecter-un-adoucisseur-deau-et-recuperation-info-debitmetre/4870 et de quelques autres sur le forum.

**Pour le schema : **

le capteur à effet hall est branché sur GPIO23 et le 3,3V
la sonde de température est branché sur GPIO35 et le 3,3V

le premier Micro Switch (GPIO14) sert pour mon adoucisseur a m’indiquer la position service. une Led Jaune (GPIO18 ) indiquera que l’appareil est en nettoyage
le second micro switch (GPIO13) servira pour indiquer une fuite au rejet. Une Led Rouge (GPIO19) indiquera qu’il y a un écoulement d’eau au rejet

Je ne suis pas électronicien, donc les valeurs de résistances sont celle que j’avais de disponnible. (je n’ai que des 10Kohm ou des 330 ohm)

J’ai fait un premier essais pour la détection de fuite OK
Position de régénération et la température c’est OK.
Pour le compteur sa ne fonctionne pas…probablement le capteur qui est HS suite a une erreur de branchement.

Pour le code ESP :

Résumé
esphome:
  name: "esphome-esp1-water"

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
#  password: !secret api_password

ota:
#  password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # ...
  manual_ip:
    # Set this to the IP of the ESP
    static_ip: !secret ip_esp1
    # Set this to the IP address of the router. Often ends with .1
    gateway: !secret gateway_esp1
    # The subnet of the network. 255.255.255.0 works for most home networks.
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: !secret ap_ssid  
    password: !secret ap_password  

captive_portal:


# Example configuration entry


time:
  #- platform: sntp
  #  id: my_time
    
  - platform: homeassistant
    id: homeassistant_time  
    
    on_time:
      - seconds: 57
        minutes: 59
        hours: 23
        then:  
          - sensor.template.publish:
              id: esp1_template_water_veille
              state: !lambda return id(esp1_daily_water).state;

# reboot              
switch:
  - platform: restart
    name: "Esp1_restart"       


# sensor

# Mesure Temperature eau
sensor:  
  - platform: adc
    pin: GPIO35
    name: "esp1_water_temperature_raw_volts"
    id: esp1_water_temperature_raw_volts
    update_interval: 15s
    accuracy_decimals: 5
    attenuation: auto

  - platform: resistance
    sensor: esp1_water_temperature_raw_volts
    configuration: DOWNSTREAM
    resistor: 50kOhm
    reference_voltage: 3.3V
    name: "esp1_water_temperature_resistance_sensor"
    id: esp1_water_temperature_resistance_sensor

  - platform: ntc
    sensor: esp1_water_temperature_resistance_sensor
    calibration:
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 10kOhm
#    calibration:
#        - 200.720kOhm -> 6.0°C
#        - 57.094kOhm -> 22.0°C  
#        - 28.766kOhm -> 37.0°C
#    unit_of_measurement: "°C" 
#    accuracy_decimals: 2
    name: "esp1_water_temperature_ntc"
    id: esp1_water_temperature_ntc

# Mesure de pression non utilisé

#  - platform: adc
#    pin: A0
#    name: "esp1 - water_pression"
#    update_interval: 10s
#    unit_of_measurement: "bar"
#    icon: mdi:gauge
#    accuracy_decimals: 3
#    filters:
#    - sliding_window_moving_average:
#        window_size: 7
#        send_every: 1
#    - lambda: return ((x - 0.1)*1.333333*10);
    #- lambda: return ((x - 0.1)*1.49993*10);


# Definition du flow meter (en cours de test)

# pulse meter Jybi89    
#  - platform: pulse_counter
#    id: water_flow_meter
#    pin: GPIO22
#    name: "debit_chaude_water_flow_meter"    
#    update_interval: 1s
#    icon: mdi:water
#    filters:
#     - lambda: return (x / 5.48);
#    unit_of_measurement: "l"

# Pulse meter Aliexpress    
  - platform: pulse_meter
    pin: GPIO23
    name: "esp1_water_litres_par_min"
    id: esp1_water_flow_meter
    unit_of_measurement: "L/min"
    timeout: 10s
    filters:
      - multiply: 0.001818

# Consommation eau du jour
  - platform: total_daily_energy
    name: "esp1_water_conso_du_jour"
    power_id: esp1_water_flow_meter  
    unit_of_measurement: "l"
    accuracy_decimals: 2
    id: esp1_daily_water

# Consommation eau de la veille
  - platform: template
    name: "esp1_water_conso_veille"
    id: esp1_template_water_veille
    unit_of_measurement: "l"
    accuracy_decimals: 2
    icon: mdi:water
    update_interval: 10s
    


# capteur numerique

# Signal Wifi
  - platform: wifi_signal
    name: "esp1_wifi_puissance"
    update_interval: 10s

# ESP Durée fonctionnement    
  - platform: uptime
    name: "esp1_uptime"
    update_interval: 10s
    id: esp1_uptime_sec

# Status ESP connexion   
binary_sensor:
  - platform: status
    name: "esp1_status"

# Flow meter     
  - platform: template
    name: "esp1_water_instantanée"
    id: esp1_template_isflowing
    lambda: |-
     if (id(esp1_water_flow_meter).state > 0) {
       // Water flowing
       return true;
     } else {
       // Water not flowing
       return false;
     } 
     
# Définition du bouton physique Cycle adoucisseur
  - platform: gpio
    name: "esp1_cycle_adoucisseur"
    pin:
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
# commande de la led Jaune
    on_press:
      then:
        - output.turn_on: esp1_cycle_led_jaune_output
         
    on_release:
      then:
        - output.turn_off: esp1_cycle_led_jaune_output
        

# Définition du bouton physique fuite rejet
  - platform: gpio
    name: "esp1_debit_rejet_adoucisseur"
    pin:
      number: GPIO13
      mode: INPUT_PULLUP
      inverted: True
# commande de la led rouge
    on_press:
      then:
        - output.turn_on: esp1_fuite_led_rouge_output 
    on_release:
      then:
        - output.turn_off: esp1_fuite_led_rouge_output  


# Leds  cycle et fuite (D18 et D19)
# Switch test led
light:
  - platform: binary
    name: "esp1_cycle_led_jaune_switch"
    output: esp1_cycle_led_jaune_output
  
  - platform: binary
    name: "esp1_fuite_led_rouge_switch"
    output: esp1_fuite_led_rouge_output  

# Sortie Leds GPIO 18 & 19
output:
  - id: esp1_cycle_led_jaune_output
    platform: gpio
    pin: GPIO18

  - id: esp1_fuite_led_rouge_output
    platform: gpio
    pin: GPIO19


# Transformation des secondes en jours
text_sensor:
  - platform: template
    name: "esp1 Allumé depuis (j)"
    lambda: |-
      int seconds = (id(esp1_uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
    icon: mdi:clock-start
    update_interval: 60s   
    

La carte Home Assistant :

Ce qu’il reste a faire :

  • Faire fonctionner le capteur a effet hall compteur eau de ville et le placer sur arrivée d’eau.
  • Raccorder le capteur a effet hall compteur eau adoucie sur ESP (en attente des résistances et des connecteurs)
  • Faire la gestion des compteurs
  • intégrer un relais pour piloter une vanne de coupure

Bonjour à tous

Voilà 2 ans que j’ai démarré ce projet et voici la solution (quasi) finale retenue pour la domotisation de mon adoucisseur (Fleck 5600SXT) et relever des compteurs d’eau.

Celle-ci est basée sur un esp32 qui gère :

  • comptage eau de ville
  • comptage eau adoucie
  • capteur de fuite adoucisseur
  • capteur cycle adoucisseur
  • 2 leds indication cycle et fuite (optionnelle)
  • en cours détection du niveau de sel

le schéma :

Le code:

Résumé code ESP32
# ESPHOME ESP1 WATER
# Date: 25112023_V1
esphome:
  name: "esphome-esp1-water"

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_key

ota:
  password: !secret ota_password 

# Enable Web server (optional).
web_server:
  port: 80
  auth:
    username: !secret auth_login
    password: !secret auth_password
    
#############################
# Wifi
#############################

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # ...
  manual_ip:
    # Set this to the IP of the ESP
    static_ip: !secret ip_esp1
    # Set this to the IP address of the router. Often ends with .1
    gateway: !secret ip_gateway
    # The subnet of the network. 255.255.255.0 works for most home networks.
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid:  "Esphome-Web-xxxxxxxx" #!secret ap_ssid_esp1  
    password: !secret ap_password_esp1 


captive_portal:

############################
# Device Specific Config
############################

# Name device mask
substitutions:
  name: adoucisseur
  friendly_name: "Fleck"
  friendly_name1: "Sensor EF"
  friendly_name2: "Compteur EF"
  friendly_name3: "Sensor EA"
  friendly_name4: "Compteur EA"
  friendly_name5: "ESP WATER"  

globals:
    
  - id: ef_pulse_counter
    type: float #Le counter n'est pas integer car il sert aussi pour la division m3
    initial_value: "0" 

  - id: ea_pulse_counter
    type: float #Le counter n'est pas integer car il sert aussi pour la division m3
    initial_value: "0" 

#################
# Binary Sensor #
#################

# binary sensor comptage impulsion eau froide et adoucie
binary_sensor:

# EAU FROIDE
  - platform: gpio
    pin:
      number: GPIO32
      allow_other_uses: true
      mode: INPUT_PULLUP
      inverted: True
    filters:
      - delayed_on: 50ms
      - delayed_off: 50ms 
    name: "${friendly_name1} counter state"
    id: ef_counter_state

    on_press:
      then:

        - lambda: |-
            // increment le compteur EF puis publish mqtt
            id(ef_pulse_counter) += 1;
            id(ef_counter_pulse).publish_state(id(ef_pulse_counter));
            id(ef_counter_l).publish_state(id(ef_pulse_counter)/1);
            id(ef_counter_m3).publish_state(id(ef_pulse_counter)/1000);
#        - light.turn_on: led_impulsion_ef

#    on_release:
#      then:
#        - light.turn_off: led_impulsion_ef           


# EAU ADOUCIE
  - platform: gpio
    pin:
      number: GPIO33
      allow_other_uses: true
      mode: INPUT_PULLUP
      inverted: True
    filters:
      - delayed_on: 50ms
      - delayed_off: 50ms 
    name: "${friendly_name3} counter state"
    id: ea_counter_state

    on_press:
      then:
        - lambda: |-
            // increment le compteur EA puis publish mqtt
            id(ea_pulse_counter) += 1;
            id(ea_counter_pulse).publish_state(id(ea_pulse_counter));
            id(ea_counter_l).publish_state(id(ea_pulse_counter)/1);
            id(ea_counter_m3).publish_state(id(ea_pulse_counter)/1000);
#        - light.turn_on: led_impulsion_ea

#    on_release:
#      then:
#        - light.turn_off: led_impulsion_ea           


#####################################################
##                  ADOUCISSEUR                    ##  
#####################################################
# Définition du bouton physique Cycle adoucisseur
  - platform: gpio
    name: ${friendly_name} cycle adoucisseur
    pin:
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
# commande de la led Cycle
    on_press:
      then:
        - output.turn_on: cycle_led_output       
    on_release:
      then:
        - output.turn_off: cycle_led_output
        
# Définition du bouton physique fuite rejet
  - platform: gpio
    name: ${friendly_name} debit rejet adoucisseur
    pin:
      number: GPIO13
      mode: INPUT_PULLUP
      inverted: True
# commande de la led Fuite
    on_press:
      then:
        - output.turn_on: fuite_led_output 
    on_release:
      then:
        - output.turn_off: fuite_led_output 

##  Status ESP connexion   
  - platform: status
    name: ${friendly_name5} status

##########
# sensor #
##########
sensor:

# EAU FROIDE
# Débit d'eau instantané (0 après 10s)
# Ne pas utiliser pour comptage (comptage erroné)
  - platform: pulse_meter
    name: "${friendly_name1} pulse"
    id: pulse_id_ef
    pin:
      number: GPIO32
      allow_other_uses: true
      inverted: true
      mode:
        input: true
        pullup: true
    internal_filter: 100ms    
    icon: mdi:water
    timeout: 100s
    unit_of_measurement: 'l/mn'
    filters:
      - multiply: 1

# Comptage impulsion  
  - platform: template
    name: "${friendly_name2} counter pulse"
    id: ef_counter_pulse
    unit_of_measurement: ''
    accuracy_decimals: 0  # Précision en entiers
    icon: "mdi:counter"
    #update_interval: 5s  # Mise à jour sur changement de valeur
 
# Comptage litres 
  - platform: template
    name: "${friendly_name2} counter l"
    id: ef_counter_l
    unit_of_measurement: 'L'
    accuracy_decimals: 0  # Précision en entiers
    state_class: total_increasing    
    device_class: water

# Comptage m³ (utilisé pour le compteur services HA)
  - platform: template
    name: "${friendly_name2} counter m3"
    id: ef_counter_m3
    unit_of_measurement: 'm³'
    accuracy_decimals: 3  # Précision en entiers
    state_class: total_increasing
    device_class: water    

# EAU ADOUCIE
# Débit d'eau instantané (0 après 10s)
# Ne pas utiliser pour comptage (comptage erroné)
  - platform: pulse_meter
    name: "${friendly_name3} pulse"
    id: pulse_id_ea
    pin:
      number: GPIO33
      allow_other_uses: true
      inverted: true
      mode:
        input: true
        pullup: true
    internal_filter: 100ms    
    icon: mdi:water
    timeout: 100s
    unit_of_measurement: 'l/mn'
    filters:
      - multiply: 1

# Comptage impulsion  
  - platform: template
    name: "${friendly_name4} counter pulse"
    id: ea_counter_pulse
    unit_of_measurement: ''
    accuracy_decimals: 0  # Précision en entiers
    icon: "mdi:counter"
    #update_interval: 5s  # Mise à jour sur changement de valeur
 
# Comptage litres 
  - platform: template
    name: "${friendly_name4} counter l"
    id: ea_counter_l
    unit_of_measurement: 'L'
    accuracy_decimals: 0  # Précision en entiers
    state_class: total_increasing    
    device_class: water

# Comptage m³ (utilisé pour le compteur services HA)
  - platform: template
    name: "${friendly_name4} counter m3"
    id: ea_counter_m3
    unit_of_measurement: 'm³'
    accuracy_decimals: 3  # Précision en entiers
    state_class: total_increasing
    device_class: water    

### Sensors with general information.
## Signal Wifi
  - platform: wifi_signal
    name: ${friendly_name5} Wifi signal
    update_interval: 10min

## ESP Durée fonctionnement    
  - platform: uptime
    name: ${friendly_name5} uptime
    update_interval: 10min
    id: esp1_uptime_sec 
    

##########    
# Switch #
########## 
switch:

## reboot esp            
  - platform: restart
    name: ${friendly_name5} restart   

 
#########
# LIGHT #
#########
# cycle et fuite ( D18 et D19)
# Impulsion ef et ea (D21, D22)
#light:

# Light Cycle LED
  - platform: output #binary
    name: ${friendly_name} cycle led
    output: cycle_led_output
# Light Fuite LED  
  - platform: output #binary
    name: ${friendly_name} fuite led
    output: fuite_led_output  
# Light ef impulsion LED
#  - platform: binary
#    name: ${friendly_name2} ef impulsion led
#    id: led_impulsion_ef    
#    output: ef_impulsion_led_output  
# Light ea impulsion LED
#  - platform: binary
#    name: ${friendly_name4} ea impulsion led
#    id: led_impulsion_ea    
#    output: ea_impulsion_led_output  


##########
# OUTPUT #
##########
## Sortie Leds GPIO 18 & 19
output:
#  - id: cpt_led_output

# LED Cycle adoucisseur
  - id: cycle_led_output
    platform: gpio
    pin: GPIO18
# LED Fuite adoucisseur
  - id: fuite_led_output
    platform: gpio
    pin: GPIO19
# LED Impulsion Compteur EF
#  - id: ef_impulsion_led_output
#    platform: gpio
#    pin: GPIO21
# LED Impulsion Compteur EA
#  - id: ea_impulsion_led_output
#    platform: gpio
#    pin: GPIO22

###############
# Text Sensor #
###############
# Transformation des secondes en jours
text_sensor:
  - platform: template
    name: ${friendly_name5} Allumé depuis (j)
    lambda: |-
      int seconds = (id(esp1_uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
    icon: mdi:clock-start
    update_interval: 30min  

# Info Wifi IP
  - platform: wifi_info
    ip_address:
      name: "${friendly_name5} IP"
      update_interval: 60min
#####################################
# END

Le dashboard :

Résumé code dashboard
title: ADOUCISSEUR
square: false
columns: 1
type: grid
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: binary_sensor.fleck_cycle_adoucisseur
        aspect_ratio: 5/2
        show_state: false
        show_last_changed: true
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 12px
        state:
          - value: 'on'
            icon: |
              [[[
               if (states['timer.adoucisseur_minuteur_cycle'].state == 'active')
                 return 'mdi:sync-circle'; return 'mdi:sync-alert'   
              ]]]
            name: |
              [[[
                if (states['timer.adoucisseur_minuteur_cycle'].state == 'active')
                 return 'Adoucisseur Régénération'; return 'Adoucisseur Defaut cycle'
              ]]] 
            styles:
              card:
                - background-color: white
                - border: |
                    [[[
                     if (states['timer.adoucisseur_minuteur_cycle'].state == 'active')
                       return '2px solid var(--google-green)'; return '2px solid var(--google-red)'   
                    ]]]
                - color: red
              icon:
                - color: |
                    [[[
                     if (states['timer.adoucisseur_minuteur_cycle'].state == 'active')
                       return 'green'; return 'red'   
                    ]]]
              name:
                - color: black
          - value: 'off'
            icon: mdi:water
            name: Adoucisseur Service
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
                - color: grey
              icon:
                - color: blue
              name:
                - color: auto
      - type: custom:button-card
        entity: binary_sensor.fleck_debit_rejet_adoucisseur
        aspect_ratio: 5/2
        show_state: false
        show_last_changed: true
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 12px
            - border: 2px solid grey
        state:
          - value: 'on'
            icon: |
              [[[
               if (states['binary_sensor.fleck_cycle_adoucisseur'].state == 'off')
                 return 'mdi:water-alert'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
                 return 'mdi:water-alert'; return 'mdi:water-sync'   
              ]]]
            name: |
              [[[
               if (states['binary_sensor.fleck_cycle_adoucisseur'].state == 'off')
                 return 'Fuite Adoucisseur'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
                 return 'Fuite Adoucisseur '; return 'Regeneration'   
              ]]]
            styles:
              card:
                - background-color: white
                - border: |
                    [[[
                     if (states['binary_sensor.fleck_cycle_adoucisseur'].state == 'off')
                       return '2px solid var(--google-red)'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
                       return '2px solid var(--google-red)'; return '2px solid var(--google-green)'   
                    ]]]
                - color: red
              icon:
                - color: |
                    [[[
                     if (states['binary_sensor.fleck_cycle_adoucisseur'].state == 'off')
                       return 'red'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
                       return 'red'; return 'green'   
                    ]]]
              name:
                - color: black
          - value: 'off'
            icon: mdi:water-check
            name: Pas de Fuite
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
                - color: grey
              icon:
                - color: blue
              name:
                - color: auto
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: input_boolean.cycle_dettasage
        aspect_ratio: 5/2
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 8px
        state:
          - value: 'on'
            icon: mdi:sync-circle
            name: Detassage en cours
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: 'off'
            icon: mdi:water-sync
            name: Detassage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
      - type: custom:button-card
        entity: input_boolean.cycle_aspiration
        aspect_ratio: 5/2
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 8px
        state:
          - value: 'on'
            icon: mdi:sync-circle
            name: Aspiration en cours
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: 'off'
            icon: mdi:water-opacity
            name: Aspiration
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
      - type: custom:button-card
        entity: input_boolean.cycle_rinsage
        aspect_ratio: 5/2
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 8px
        state:
          - value: 'on'
            icon: mdi:sync-circle
            name: Rinsage en cours
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: 'off'
            icon: mdi:water-percent
            name: Rinsage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
      - type: custom:button-card
        entity: input_boolean.cycle_rve
        aspect_ratio: 5/2
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 8px
        state:
          - value: 'on'
            icon: mdi:sync-circle
            name: Saumurage
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: 'off'
            icon: mdi:water-outline
            name: Saumurage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: timer.detassage_timer
        aspect_ratio: 5/2
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        show_name: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 6px
        state:
          - value: active
            icon: mdi:sync-circle
            name: Detassage en cours
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: idle
            icon: mdi:water-sync
            name: Detassage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
          - value: paused
            icon: mdi:pause
            name: Detassage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: black
              name:
                - color: auto
      - type: custom:button-card
        entity: timer.aspiration_timer
        aspect_ratio: 5/2
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        show_name: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 6px
        state:
          - value: active
            icon: mdi:sync-circle
            name: Aspiration en cours
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: idle
            icon: mdi:water-opacity
            name: Aspiration
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
          - value: paused
            icon: mdi:pause
            name: Aspiration
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: black
              name:
                - color: auto
      - type: custom:button-card
        entity: timer.rinsage_timer
        aspect_ratio: 5/2
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        show_name: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 6px
        state:
          - value: active
            icon: mdi:sync-circle
            name: Rinsage en cours
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: idle
            icon: mdi:water-percent
            name: Rinsage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
          - value: paused
            icon: mdi:pause
            name: Rinsage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: black
              name:
                - color: auto
      - type: custom:button-card
        entity: timer.renvoi_eau_timer
        aspect_ratio: 5/2
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        show_name: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 6px
        state:
          - value: active
            icon: mdi:sync-circle
            name: Saumurage
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: idle
            icon: mdi:water-outline
            name: Saumurage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
          - value: paused
            icon: mdi:pause
            name: Saumurage
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: black
              name:
                - color: auto
  - square: false
    columns: 1
    type: grid
    cards:
      - type: custom:button-card
        entity: timer.adoucisseur_minuteur_cycle
        aspect_ratio: 8/1
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        show_name: true
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(70%)
            - padding: 2px
            - text-transform: null
            - font-size: 6px
        state:
          - value: active
            icon: mdi:sync-circle
            name: Cycle en cours
            styles:
              card:
                - border: 2px solid var(--google-green)
              icon:
                - color: green
              name:
                - color: red
          - value: idle
            icon: mdi:clock-check
            name: null
            styles:
              card:
                - border: 2px solid grey
              icon:
                - color: grey
          - value: paused
            icon: mdi:pause
            name: null
            styles:
              card:
                - border: 2px solid grey
              icon:
                - color: grey
  - square: false
    columns: 1
    type: grid
    cards:
      - type: custom:button-card
        entity: counter.compteur_ad_volume
        name: Volume Fleck (L)
        icon: mdi:counter
        aspect_ratio: 6/1
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 1px
            - text-transform: null
            - font-size: 18px
            - color: auto
            - border: 2px solid grey
          icon:
            - color: blue
          name:
            - color: auto
            - font-size: 15px
  - square: false
    columns: 1
    type: grid
    cards:
      - type: custom:button-card
        entity: input_text.eau_regeneration_fin
        name: Volume regeneration (L)
        icon: mdi:counter
        aspect_ratio: 6/1
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 1px
            - text-transform: null
            - font-size: 18px
            - color: auto
            - border: 2px solid grey
          icon:
            - color: blue
          name:
            - color: auto
            - font-size: 15px
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: input_boolean.bac_sel_vide
        aspect_ratio: 8/1
        tap_action:
          action: null
        show_state: false
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 10px
        state:
          - value: 'on'
            icon: mdi:battery-30
            name: Bac à Sel vide <10% !!
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-red)
                - color: red
              icon:
                - color: red
              name:
                - color: red
          - value: 'off'
            icon: mdi:shaker-outline
            name: |
              [[[
               if (states['input_boolean.bac_sel_remplir'].state == 'on')
                 return 'Bac a remplir <30%'; return 'Niveau sel OK'   
              ]]]
            styles:
              card:
                - background-color: auto
                - border: |
                    [[[
                     if (states['input_boolean.bac_sel_remplir'].state == 'on')
                       return '2px solid var(--google-yellow)'; return '2px solid grey'   
                    ]]]
                - color: auto
              icon:
                - color: |
                    [[[
                     if (states['input_boolean.bac_sel_remplir'].state == 'on')
                       return 'orange'; return 'blue'   
                    ]]]
              name:
                - color: auto
  - square: false
    columns: 3
    type: grid
    cards:
      - type: custom:button-card
        entity: counter.compteur_adoucisseur_sel
        name: Compteur Sel
        aspect_ratio: 3/1
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 1%
            - text-transform: null
            - font-size: 10px
            - border: 2px solid grey
          icon:
            - color: blue
          name:
            - color: auto
      - type: custom:button-card
        entity: counter.compteur_cycle_adoucisseur
        name: Compteur cycle
        aspect_ratio: 3/1
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 1%
            - text-transform: null
            - font-size: 10px
            - border: 2px solid grey
          icon:
            - color: blue
          name:
            - color: auto
      - type: custom:button-card
        entity: counter.compteur_cycle_adoucisseur_total
        name: Cycle Total
        aspect_ratio: 3/1
        tap_action:
          action: null
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 1%
            - text-transform: null
            - font-size: 10px
            - border: 2px solid grey
          icon:
            - color: blue
          name:
            - color: auto
  - square: false
    columns: 2
    type: grid
    cards:
      - type: custom:button-card
        entity: sensor.sensor_ea_pulse
        name: L/mm
        icon: mdi:speedometer
        aspect_ratio: 3/1
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 1px
            - text-transform: null
            - font-size: 18px
            - border: 2px solid grey
          icon:
            - color: blue
          name:
            - color: auto
            - font-size: 15px
      - type: custom:button-card
        entity: sensor.eau_adoucie_litres_jour_imp_cpt
        name: (L/Jour)
        icon: mdi:counter
        aspect_ratio: 3/1
        show_state: true
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 1px
            - text-transform: null
            - font-size: 18px
            - border: 2px solid grey
          icon:
            - color: blue
          name:
            - color: auto
            - font-size: 15px
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: input_boolean.adoucisseur_maintenance
        aspect_ratio: 3/1
        tap_action:
          action: toggle
        show_state: false
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(100%)
            - padding: 2px
            - text-transform: null
            - font-size: 8px
        state:
          - value: 'on'
            icon: mdi:gesture-double-tap
            name: Maintenance
            styles:
              card:
                - background-color: white
                - border: 2px solid var(--google-green)
                - color: red
              icon:
                - color: green
              name:
                - color: black
          - value: 'off'
            icon: mdi:gesture-double-tap
            name: Reset Maintenance
            styles:
              card:
                - background-color: auto
                - border: 2px solid grey
              icon:
                - color: grey
              name:
                - color: auto
        lock:
          enabled:
            - - - return entity.state === 'on';
          duration: 3
          unlock: double_tap
      - type: custom:button-card
        entity: input_boolean.adoucisseur_maintenance
        name: Maintenance Adoucisseur
        aspect_ratio: 3/1
        show_state: false
        show_last_changed: false
        styles:
          card:
            - background-color: auto
            - border-radius: 10%
            - filter: opacity(80%)
            - padding: 1%
            - color: auto
            - text-transform: null
            - font-size: 10px
        state:
          - value: 'on'
            icon: mdi:wrench-clock
            name: Maintenance à faire
            styles:
              card:
                - border: 2px solid var(--google-red)
                - color: red
              icon:
                - color: red
                - animation: rotating 1.5s ease-in-out alternate-reverse infinite
              name:
                - color: red
          - value: 'off'
            icon: mdi:wrench-clock
            name: Maintenance en attente
            styles:
              card:
                - border: 2px solid grey
                - filter: opacity(80%)
              icon:
                - color: grey
  - type: custom:button-card
    entity: input_boolean.depannage_adoucisseur
    aspect_ratio: 6/1
    tap_action:
      action: toggle
    show_state: false
    show_last_changed: false
    styles:
      card:
        - background-color: auto
        - border-radius: 10%
        - filter: opacity(70%)
        - padding: 2px
        - text-transform: null
        - font-size: 8px
    state:
      - value: 'on'
        icon: mdi:gesture-double-tap
        name: Maintenance
        styles:
          card:
            - border: 2px solid var(--google-green)
            - color: red
          icon:
            - color: green
          name:
            - color: red
      - value: 'off'
        icon: mdi:gesture-double-tap
        name: blocage compteur
        styles:
          card:
            - border: 2px solid grey
          icon:
            - color: grey
    lock:
      enabled:
        - - - return entity.state === 'on';
      duration: 3
      unlock: double_tap
  - square: false
    columns: 1
    type: grid
    cards:
      - type: entities
        entities:
          - entity: binary_sensor.fleck_debit_rejet_adoucisseur
            secondary_info: last-changed
            name: Débit rejet (switch)
          - entity: binary_sensor.fleck_cycle_adoucisseur
            secondary_info: last-changed
            name: Régénération (switch)
          - entity: counter.compteur_cycle_adoucisseur
            secondary_info: last-changed
            name: 'Nombre de régénération '
          - entity: input_text.eau_regeneration_fin
        title: ADOUCISSEUR
        show_header_toggle: false

La gestion des temps de cycles et des phases de régénération, de la maintenance est effectuée avec NODERED. Il est certainement possible de faire la même chose avec HA, mais pour moi, c’était le plus simple pour mon niveau. (et je n’ai pas pris le temps (ou le courage) de m’y atteler).

Résumé code nodered
[{"id":"599bb4f6eb82e957","type":"tab","label":"Flux 1","disabled":false,"info":"","env":[]},{"id":"5ae7ba878e824074","type":"group","z":"599bb4f6eb82e957","name":"GESTION DES PHASES DE CYCLES ADOUCISSEUR","style":{"label":true,"fill":"#a4a4a4","fill-opacity":"0.15","color":"#000000"},"nodes":["d57e9ee890609cab","e80e9dba5f599e6e","39af163403b95b8d","2383b02e4c56dba6"],"x":88,"y":33,"w":1124,"h":1074},{"id":"d57e9ee890609cab","type":"group","z":"599bb4f6eb82e957","g":"5ae7ba878e824074","name":"PHASE DETASSAGE","style":{"label":true,"color":"#000000","fill":"#7fb7df","fill-opacity":"0.4","stroke":"#0070c0"},"nodes":["3f5fb50b7128b099","29ab892d5ed921b6","9f886b47275ae44d","35a0ef9f8516653f"],"x":114,"y":59,"w":1072,"h":122},{"id":"e80e9dba5f599e6e","type":"group","z":"599bb4f6eb82e957","g":"5ae7ba878e824074","name":"PHASE ASPIRATION","style":{"fill":"#7fb7df","fill-opacity":"0.4","label":true,"color":"#000000","stroke":"#0070c0"},"nodes":["c39e2f9ce740ded7","f62d247bfaa4288d","e0331f521a7395c5","f1dbcf0e327608a0","4f1fcc2fd928d29b","ea3505b769d73148"],"x":114,"y":319,"w":1072,"h":202},{"id":"39af163403b95b8d","type":"group","z":"599bb4f6eb82e957","g":"5ae7ba878e824074","name":"PHASE RINSAGE","style":{"stroke":"#0070c0","fill":"#7fb7df","fill-opacity":"0.4","label":true,"color":"#000000"},"nodes":["932a8cfe63d0f19f","165393dc5b3f554f","663b662dc1ca9117","f8b2e507071d7b65","49c655805fb09f54","809db3c8417ea82d"],"x":114,"y":599,"w":1062,"h":182},{"id":"2383b02e4c56dba6","type":"group","z":"599bb4f6eb82e957","g":"5ae7ba878e824074","name":"PHASE RENVOI D'EAU","style":{"stroke":"#0070c0","fill":"#7fb7df","fill-opacity":"0.4","label":true,"color":"#000000"},"nodes":["f2e15ee47183789a","dd75a27fc8b93f3b","ef612cc1252635a3","2f61bb483dec240c","5d002c7f30ac57a1","da84006bd5b4d104"],"x":114,"y":879,"w":1052,"h":202},{"id":"d59cbc7494d2ca22","type":"group","z":"599bb4f6eb82e957","name":"COMPTEUR REJET / CYCLE","style":{"stroke":"#001f60","fill":"#bfc7d7","fill-opacity":"0.4","label":true,"color":"#000000"},"nodes":["c108f8cb84f6cceb","6e746f502770f238","ca45112eb5213abc","356e6c2981499da4","09a82651ac5215e2","963e3ff65f933438","d9f6bd2a80e4a648","625a3e52755b72d2","00d570206d4c2222","476c9577481bee5e","b7f61df47560e8de","f489119594dffa09","31b4d1596da8e111"],"x":84,"y":1259,"w":1102,"h":362},{"id":"b8b39033ad391ef2","type":"group","z":"599bb4f6eb82e957","name":"RESET CYCLE / SEL","style":{"stroke":"#6f2fa0","fill":"#bfdbef","fill-opacity":"0.4","label":true,"color":"#000000"},"nodes":["7f1e5967da3474a5","c2f28774e79afefe","6469d7beb390a78e","9479405756d0787b"],"x":84,"y":1639,"w":1102,"h":162},{"id":"a61c7818418c2317","type":"group","z":"599bb4f6eb82e957","name":"COMPTEUR SEL / MAINTENANCE","style":{"stroke":"#001f60","fill":"#bfc7d7","fill-opacity":"0.4","label":true,"color":"#000000"},"nodes":["9e2479c6d73b5e90","e2c72293d5fef57a","46a202a6323f3b69","2471ecc6c1c15484","a7defdf44728931a","2b30383fb27c37df","b9e6faa76bfa525d","52dbb48318c647ef","58d64ca49ab18fe3","047b8d3c11b4548b","6c83dfeeffdaeedc","a08e95100cd0dc93","b6fea36d3471643d","8adda9701331f538","c4c53348af643d29","50896e08ad4f6a80"],"x":84,"y":1819,"w":1112,"h":442},{"id":"6e0390af3afde772","type":"group","z":"599bb4f6eb82e957","name":"TIMER CYCLE","style":{"stroke":"#6f2fa0","fill":"#7fb7df","fill-opacity":"0.4","label":true,"color":"#000000"},"nodes":["751f5bc442784a3f","32808d61c37427d9","d36efc5c4fa2e263","0fbc8671e96f7ee9","a09c973b30722d33","7297b22b49c0d629","9807795079f429a7","a80bb2c1f60442c1","b52f404eb673cb53","bcd6b3fefd0a2c4d","ade1514c1aa86880"],"x":94,"y":2319,"w":1022,"h":742},{"id":"42c364bda7328948","type":"group","z":"599bb4f6eb82e957","name":"Decomptage Volume Adoucisseur","style":{"stroke":"#0070c0","label":true,"color":"#000000","fill":"#bfdbef","fill-opacity":"0.4"},"nodes":["fd73d56c220956a4","e7a95de6deded184","da890c40bd0a5527","da170fa98b7ad3b1","38f28f96449fc664","375a4097cfeff30b","d02da87b3bf6d181","81c8b1c55a6ba5fd"],"x":84,"y":3119,"w":1202,"h":262},{"id":"7a9a2999dbc2d2f2","type":"group","z":"599bb4f6eb82e957","name":"NOTIFICATIONS DES ALARMES ADOUCISSEUR","style":{"stroke":"#ffC000","fill":"#ffffbf","fill-opacity":"0.4","label":true,"color":"#000000"},"nodes":["4fc2511ac7f9bb49","f0d5e205e048f681","aea23cb01f74c7e2","77f7066efcc69e96","b44a8d5699972dcc","331296354a77f59f","00656768aec48844","ced6c2c35d56aab9","683a4cd81f03f662","a9560ddfc5574b10","c3c9c652e2b42927","9ec58df8b26d3450","f172df64a704f149","a197f8d0f244f6e1","3d449e46e77eeae8","4e61a1462680a924"],"x":84,"y":3459,"w":1442,"h":682},{"id":"3f5fb50b7128b099","type":"trigger-state","z":"599bb4f6eb82e957","g":"d57e9ee890609cab","name":"compteur rejet on de 0 à 1","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"1"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"0"},{"targetType":"entity_id","targetValue":"binary_sensor.fleck_cycle_adoucisseur","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_debit_rejet","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":250,"y":140,"wires":[["29ab892d5ed921b6"],[]]},{"id":"29ab892d5ed921b6","type":"api-call-service","z":"599bb4f6eb82e957","g":"d57e9ee890609cab","name":"Detassage ON","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_dettasage"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":560,"y":140,"wires":[["9f886b47275ae44d"]]},{"id":"9f886b47275ae44d","type":"api-call-service","z":"599bb4f6eb82e957","g":"d57e9ee890609cab","name":"Timer Detassage","server":"64fc7b21.810404","version":5,"debugenabled":true,"domain":"timer","service":"start","areaId":[],"deviceId":[],"entityId":["timer.detassage_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1070,"y":120,"wires":[[]]},{"id":"35a0ef9f8516653f","type":"comment","z":"599bb4f6eb82e957","g":"d57e9ee890609cab","name":"DETASSAGE","info":"","x":210,"y":100,"wires":[]},{"id":"c39e2f9ce740ded7","type":"trigger-state","z":"599bb4f6eb82e957","g":"e80e9dba5f599e6e","name":"compteur rejet on de 1 à 2","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"2"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"1"},{"targetType":"entity_id","targetValue":"binary_sensor.fleck_cycle_adoucisseur","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_debit_rejet","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":250,"y":400,"wires":[["f62d247bfaa4288d","e0331f521a7395c5"],[]]},{"id":"f62d247bfaa4288d","type":"api-call-service","z":"599bb4f6eb82e957","g":"e80e9dba5f599e6e","name":"Aspiration ON","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_aspiration"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":560,"y":480,"wires":[["f1dbcf0e327608a0"]]},{"id":"e0331f521a7395c5","type":"api-call-service","z":"599bb4f6eb82e957","g":"e80e9dba5f599e6e","name":"Detassage OFF","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_dettasage"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":560,"y":400,"wires":[["4f1fcc2fd928d29b"]]},{"id":"f1dbcf0e327608a0","type":"api-call-service","z":"599bb4f6eb82e957","g":"e80e9dba5f599e6e","name":"Timer Aspiration","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"timer","service":"start","areaId":[],"deviceId":[],"entityId":["timer.aspiration_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1020,"y":460,"wires":[[]]},{"id":"4f1fcc2fd928d29b","type":"api-call-service","z":"599bb4f6eb82e957","g":"e80e9dba5f599e6e","name":"Timer Finish Detassage","server":"64fc7b21.810404","version":5,"debugenabled":true,"domain":"timer","service":"finish","areaId":[],"deviceId":[],"entityId":["timer.detassage_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1050,"y":400,"wires":[[]]},{"id":"ea3505b769d73148","type":"comment","z":"599bb4f6eb82e957","g":"e80e9dba5f599e6e","name":"ASPIRATION","info":"","x":210,"y":360,"wires":[]},{"id":"932a8cfe63d0f19f","type":"trigger-state","z":"599bb4f6eb82e957","g":"39af163403b95b8d","name":"compteur rejet on de 2 à 3","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"3"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"2"},{"targetType":"entity_id","targetValue":"binary_sensor.fleck_cycle_adoucisseur","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_debit_rejet","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":250,"y":680,"wires":[["165393dc5b3f554f","663b662dc1ca9117"],[]]},{"id":"165393dc5b3f554f","type":"api-call-service","z":"599bb4f6eb82e957","g":"39af163403b95b8d","name":"Rinsage ON","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_rinsage"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":550,"y":740,"wires":[["f8b2e507071d7b65"]]},{"id":"663b662dc1ca9117","type":"api-call-service","z":"599bb4f6eb82e957","g":"39af163403b95b8d","name":"Aspiration OFF","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_aspiration"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":560,"y":680,"wires":[["49c655805fb09f54"]]},{"id":"f8b2e507071d7b65","type":"api-call-service","z":"599bb4f6eb82e957","g":"39af163403b95b8d","name":"Timer Rinsage","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"timer","service":"start","areaId":[],"deviceId":[],"entityId":["timer.rinsage_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1020,"y":740,"wires":[[]]},{"id":"49c655805fb09f54","type":"api-call-service","z":"599bb4f6eb82e957","g":"39af163403b95b8d","name":"Timer Finish Aspiration","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"timer","service":"finish","areaId":[],"deviceId":[],"entityId":["timer.aspiration_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1040,"y":680,"wires":[[]]},{"id":"809db3c8417ea82d","type":"comment","z":"599bb4f6eb82e957","g":"39af163403b95b8d","name":"RINSAGE","info":"","x":200,"y":640,"wires":[]},{"id":"f2e15ee47183789a","type":"trigger-state","z":"599bb4f6eb82e957","g":"2383b02e4c56dba6","name":"compteur rejet off de 2 à 3","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"3"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"2"},{"targetType":"entity_id","targetValue":"binary_sensor.fleck_cycle_adoucisseur","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_debit_rejet_off","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":250,"y":960,"wires":[["dd75a27fc8b93f3b","ef612cc1252635a3"],[]]},{"id":"dd75a27fc8b93f3b","type":"api-call-service","z":"599bb4f6eb82e957","g":"2383b02e4c56dba6","name":"Renvoi d'eau ON","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_rve"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":570,"y":1040,"wires":[["2f61bb483dec240c"]]},{"id":"ef612cc1252635a3","type":"api-call-service","z":"599bb4f6eb82e957","g":"2383b02e4c56dba6","name":"Rinsage OFF","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_rinsage"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":550,"y":960,"wires":[["5d002c7f30ac57a1"]]},{"id":"2f61bb483dec240c","type":"api-call-service","z":"599bb4f6eb82e957","g":"2383b02e4c56dba6","name":"Timer RVE","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"timer","service":"start","areaId":[],"deviceId":[],"entityId":["timer.renvoi_eau_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1010,"y":1040,"wires":[[]]},{"id":"5d002c7f30ac57a1","type":"api-call-service","z":"599bb4f6eb82e957","g":"2383b02e4c56dba6","name":"Timer Finish Rinsage","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"timer","service":"finish","areaId":[],"deviceId":[],"entityId":["timer.rinsage_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1040,"y":960,"wires":[[]]},{"id":"da84006bd5b4d104","type":"comment","z":"599bb4f6eb82e957","g":"2383b02e4c56dba6","name":"RENVOI D'EAU","info":"","x":220,"y":920,"wires":[]},{"id":"c108f8cb84f6cceb","type":"api-call-service","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"CPT ON rejet","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"increment","areaId":[],"deviceId":[],"entityId":["counter.compteur_debit_rejet"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":500,"y":1500,"wires":[[]]},{"id":"6e746f502770f238","type":"api-call-service","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"CPT OFF rejet","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"increment","areaId":[],"deviceId":[],"entityId":["counter.compteur_debit_rejet_off"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":500,"y":1580,"wires":[[]]},{"id":"ca45112eb5213abc","type":"api-call-service","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"Reset CPT ON rejet","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"reset","areaId":[],"deviceId":[],"entityId":["counter.compteur_debit_rejet"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1060,"y":1520,"wires":[[]]},{"id":"356e6c2981499da4","type":"api-call-service","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"Reset CPT OFF rejet","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"reset","areaId":[],"deviceId":[],"entityId":["counter.compteur_debit_rejet_off"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1060,"y":1580,"wires":[[]]},{"id":"09a82651ac5215e2","type":"server-state-changed","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"Switch Cycle régénération ON (regé en cours)","server":"64fc7b21.810404","version":4,"outputs":2,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.fleck_cycle_adoucisseur","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","output_only_on_state_change":true,"x":290,"y":1360,"wires":[["31b4d1596da8e111"],[]]},{"id":"963e3ff65f933438","type":"api-call-service","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"CPT  Cycle","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"increment","areaId":[],"deviceId":[],"entityId":["counter.compteur_cycle_adoucisseur"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1030,"y":1400,"wires":[[]]},{"id":"d9f6bd2a80e4a648","type":"api-call-service","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"CPT  Sel","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"increment","areaId":[],"deviceId":[],"entityId":["counter.compteur_adoucisseur_sel"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1020,"y":1340,"wires":[[]]},{"id":"625a3e52755b72d2","type":"trigger-state","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"Debit rejet Off à On","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.fleck_debit_rejet_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":210,"y":1500,"wires":[["c108f8cb84f6cceb"],[]]},{"id":"00d570206d4c2222","type":"trigger-state","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"Debit rejet On à Off","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.fleck_debit_rejet_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":210,"y":1580,"wires":[["6e746f502770f238"],[]]},{"id":"476c9577481bee5e","type":"api-call-service","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"CPT  CycleTotal","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"increment","areaId":[],"deviceId":[],"entityId":["counter.compteur_cycle_adoucisseur_total"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1040,"y":1460,"wires":[[]]},{"id":"b7f61df47560e8de","type":"comment","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"Gestion des compteurs pour Cycle et Sel","info":"","x":280,"y":1300,"wires":[]},{"id":"f489119594dffa09","type":"trigger-state","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"Switch Cycle régénération  de ON à OFF (Fin de cycle)","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.fleck_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":320,"y":1440,"wires":[["ca45112eb5213abc","356e6c2981499da4"],[]]},{"id":"31b4d1596da8e111","type":"api-current-state","z":"599bb4f6eb82e957","g":"d59cbc7494d2ca22","name":"Depannage adoucisseur Blocage compteur","server":"64fc7b21.810404","version":3,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_boolean.depannage_adoucisseur","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":690,"y":1360,"wires":[["963e3ff65f933438","d9f6bd2a80e4a648","476c9577481bee5e"],[]]},{"id":"7f1e5967da3474a5","type":"trigger-state","z":"599bb4f6eb82e957","g":"b8b39033ad391ef2","name":"Reset manuel timer cycle","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"Press"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_button.reset_compteur_cycle","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":230,"y":1760,"wires":[["c2f28774e79afefe"],[]]},{"id":"c2f28774e79afefe","type":"api-call-service","z":"599bb4f6eb82e957","g":"b8b39033ad391ef2","name":"Timer cycle","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"timer","service":"finish","areaId":[],"deviceId":[],"entityId":["timer.adoucisseur_minuteur_cycle"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1030,"y":1760,"wires":[[]]},{"id":"6469d7beb390a78e","type":"api-call-service","z":"599bb4f6eb82e957","g":"b8b39033ad391ef2","name":"Reset comptage sel","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"reset","areaId":[],"deviceId":[],"entityId":["counter.compteur_adoucisseur_sel"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1060,"y":1680,"wires":[[]]},{"id":"9479405756d0787b","type":"trigger-state","z":"599bb4f6eb82e957","g":"b8b39033ad391ef2","name":"Reset manuel compteur sel","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"Press"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_button.reset_compteur_sel","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":230,"y":1680,"wires":[["6469d7beb390a78e"],[]]},{"id":"9e2479c6d73b5e90","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Sel = 30","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"30"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_adoucisseur_sel","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":750,"y":1980,"wires":[["e2c72293d5fef57a"],[]]},{"id":"e2c72293d5fef57a","type":"api-call-service","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"Reset automatique CPT  Sel","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"reset","areaId":[],"deviceId":[],"entityId":["counter.compteur_adoucisseur_sel"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1040,"y":1980,"wires":[[]]},{"id":"46a202a6323f3b69","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Sel 10 cycle","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"10"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_adoucisseur_sel","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":200,"y":1920,"wires":[["2471ecc6c1c15484"],[]]},{"id":"2471ecc6c1c15484","type":"api-call-service","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"Bac à Remplir","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.bac_sel_remplir"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":500,"y":1920,"wires":[[]]},{"id":"a7defdf44728931a","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Sel 25 cycle","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"25"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_adoucisseur_sel","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":200,"y":1980,"wires":[["2b30383fb27c37df"],[]]},{"id":"2b30383fb27c37df","type":"api-call-service","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"Bac Vide","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.bac_sel_vide"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":480,"y":1980,"wires":[[]]},{"id":"b9e6faa76bfa525d","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Sel <1","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"<","comparatorValueDatatype":"num","comparatorValue":"1"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_adoucisseur_sel","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":750,"y":1920,"wires":[["52dbb48318c647ef"],[]]},{"id":"52dbb48318c647ef","type":"api-call-service","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"Turn off Bac à remplir/vide","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.bac_sel_remplir","input_boolean.bac_sel_vide"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1050,"y":1920,"wires":[[]]},{"id":"58d64ca49ab18fe3","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Cycle 45","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"45"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":190,"y":2040,"wires":[["047b8d3c11b4548b"],[]]},{"id":"047b8d3c11b4548b","type":"api-call-service","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"Maintenance turn ON","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.adoucisseur_maintenance"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":520,"y":2100,"wires":[[]]},{"id":"6c83dfeeffdaeedc","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Cycle 90","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"90"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":190,"y":2100,"wires":[["047b8d3c11b4548b"],[]]},{"id":"a08e95100cd0dc93","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Cycle 135","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"135"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":200,"y":2160,"wires":[["047b8d3c11b4548b"],[]]},{"id":"b6fea36d3471643d","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Cycle 180","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"180"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":200,"y":2220,"wires":[["047b8d3c11b4548b"],[]]},{"id":"8adda9701331f538","type":"api-call-service","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"Reset automatique CPT  Cycle","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"reset","areaId":[],"deviceId":[],"entityId":["counter.compteur_cycle_adoucisseur"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1030,"y":2220,"wires":[[]]},{"id":"c4c53348af643d29","type":"trigger-state","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"CPT Cycle >180","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"num","comparatorValue":"181"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"counter.compteur_adoucisseur_sel","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"num","x":680,"y":2220,"wires":[["8adda9701331f538"],[]]},{"id":"50896e08ad4f6a80","type":"comment","z":"599bb4f6eb82e957","g":"a61c7818418c2317","name":"Gestion compteur pour Sel et Maintenance","info":"","x":280,"y":1860,"wires":[]},{"id":"751f5bc442784a3f","type":"trigger-state","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Switch Cycle regeneration de OFF à ON (debut de cycle)","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.fleck_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":330,"y":2960,"wires":[["32808d61c37427d9","9807795079f429a7"],[]]},{"id":"32808d61c37427d9","type":"api-call-service","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Timer cycle start","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"timer","service":"start","areaId":[],"deviceId":[],"entityId":["timer.adoucisseur_minuteur_cycle"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":960,"y":2940,"wires":[[]]},{"id":"d36efc5c4fa2e263","type":"api-call-service","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Timer phase cycle finish","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"timer","service":"finish","areaId":[],"deviceId":[],"entityId":["timer.aspiration_timer","timer.detassage_timer","timer.adoucisseur_minuteur_cycle","timer.rinsage_timer","timer.renvoi_eau_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":790,"y":2420,"wires":[[]]},{"id":"0fbc8671e96f7ee9","type":"trigger-state","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Switch Cycle sur OFF (fin de cycle)","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.fleck_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":260,"y":2420,"wires":[["d36efc5c4fa2e263","7297b22b49c0d629","a09c973b30722d33","a80bb2c1f60442c1","bcd6b3fefd0a2c4d"],[]]},{"id":"a09c973b30722d33","type":"api-call-service","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Renvoi d'eau OFF","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_rve"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":790,"y":2640,"wires":[[]]},{"id":"7297b22b49c0d629","type":"api-call-service","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Service ON","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_service"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":750,"y":2480,"wires":[[]]},{"id":"9807795079f429a7","type":"api-call-service","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Service OFF","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_service"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":950,"y":3020,"wires":[[]]},{"id":"a80bb2c1f60442c1","type":"api-call-service","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Phase Cycle OFF","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.cycle_aspiration","input_boolean.cycle_dettasage","input_boolean.cycle_rinsage"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":770,"y":2560,"wires":[[]]},{"id":"b52f404eb673cb53","type":"api-call-service","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Timer phase cancel ","server":"64fc7b21.810404","version":5,"debugenabled":true,"domain":"timer","service":"cancel","areaId":[],"deviceId":[],"entityId":["timer.aspiration_timer","timer.detassage_timer","timer.rinsage_timer","timer.renvoi_eau_timer"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":990,"y":2800,"wires":[[]]},{"id":"bcd6b3fefd0a2c4d","type":"delay","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":560,"y":2800,"wires":[["b52f404eb673cb53"]]},{"id":"ade1514c1aa86880","type":"comment","z":"599bb4f6eb82e957","g":"6e0390af3afde772","name":"Gestion des Temps de Cycle","info":"","x":240,"y":2360,"wires":[]},{"id":"fd73d56c220956a4","type":"api-call-service","z":"599bb4f6eb82e957","g":"42c364bda7328948","name":"Compteur Volume eau adoucie","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"decrement","areaId":[],"deviceId":[],"entityId":["counter.compteur_ad_volume"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1090,"y":3200,"wires":[[]]},{"id":"e7a95de6deded184","type":"trigger-state","z":"599bb4f6eb82e957","g":"42c364bda7328948","name":"Compteur eau adoucie impulsion","server":"64fc7b21.810404","version":4,"inputs":0,"outputs":2,"exposeAsEntityConfig":"","entityId":"binary_sensor.sensor_ea_counter_state","entityIdType":"exact","debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"}],"customOutputs":[],"outputInitially":false,"stateType":"str","enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":250,"y":3200,"wires":[["38f28f96449fc664"],[]]},{"id":"da890c40bd0a5527","type":"api-call-service","z":"599bb4f6eb82e957","g":"42c364bda7328948","name":"Compteur Volume eau adoucie reset","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"counter","service":"reset","areaId":[],"deviceId":[],"entityId":["counter.compteur_ad_volume"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1110,"y":3340,"wires":[[]]},{"id":"da170fa98b7ad3b1","type":"trigger-state","z":"599bb4f6eb82e957","g":"42c364bda7328948","name":"Switch regeneration  de ON à  OFF (Fin de Cycle)","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.fleck_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":300,"y":3340,"wires":[["da890c40bd0a5527"],[]]},{"id":"38f28f96449fc664","type":"api-current-state","z":"599bb4f6eb82e957","g":"42c364bda7328948","name":"Switch cycle off","server":"64fc7b21.810404","version":3,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.fleck_cycle_adoucisseur","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":610,"y":3200,"wires":[["fd73d56c220956a4"],[]]},{"id":"375a4097cfeff30b","type":"comment","z":"599bb4f6eb82e957","g":"42c364bda7328948","name":"Decomptage Capacité Adoucisseur","info":"","x":270,"y":3160,"wires":[]},{"id":"d02da87b3bf6d181","type":"trigger-state","z":"599bb4f6eb82e957","g":"42c364bda7328948","name":"Compteur eau AD volume","server":"64fc7b21.810404","version":4,"inputs":0,"outputs":2,"exposeAsEntityConfig":"","entityId":"counter.compteur_ad_volume","entityIdType":"exact","debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"<","comparatorValueDatatype":"num","comparatorValue":"10"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"11"}],"customOutputs":[],"outputInitially":false,"stateType":"num","enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":230,"y":3280,"wires":[["81c8b1c55a6ba5fd"],[]]},{"id":"81c8b1c55a6ba5fd","type":"api-call-service","z":"599bb4f6eb82e957","g":"42c364bda7328948","name":"Adoucisseur : fin de capacité - Regeneration à 15H","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"notify","service":"telegram_pascal_ha","areaId":[],"deviceId":[],"entityId":[],"data":"{\t   \"message\":\"Adoucisseur : fin de capacité - Regeneration à 15H\",\t   \"title\":\"\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1040,"y":3280,"wires":[[]]},{"id":"4fc2511ac7f9bb49","type":"trigger-state","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Switch Debit rejet  sur ON &  cycle sur OFF","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"},{"targetType":"entity_id","targetValue":"binary_sensor.fleck_cycle_adoucisseur","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.fleck_debit_rejet_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":280,"y":3700,"wires":[["c3c9c652e2b42927"],[]]},{"id":"f0d5e205e048f681","type":"trigger-state","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Switch Cycle sur OFF & debit rejet sur ON","server":"64fc7b21.810404","version":2,"inputs":0,"outputs":2,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"},{"targetType":"entity_id","targetValue":"binary_sensor.fleck_debit_rejet_adoucisseur","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.fleck_cycle_adoucisseur","entityidfiltertype":"exact","debugenabled":false,"customoutputs":[],"outputinitially":false,"state_type":"str","x":280,"y":3560,"wires":[["a9560ddfc5574b10"],[]]},{"id":"aea23cb01f74c7e2","type":"server-state-changed","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Switch Bac à Remplir Input Boolean","server":"64fc7b21.810404","version":4,"outputs":2,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.bac_sel_remplir","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","output_only_on_state_change":true,"x":990,"y":3940,"wires":[["a197f8d0f244f6e1"],[]]},{"id":"77f7066efcc69e96","type":"server-state-changed","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Switch Bac vide Input Boolean","server":"64fc7b21.810404","version":4,"outputs":2,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.bac_sel_vide","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","output_only_on_state_change":true,"x":240,"y":3960,"wires":[["f172df64a704f149"],[]]},{"id":"b44a8d5699972dcc","type":"trigger-state","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Switch Cycle Input Binary","server":"64fc7b21.810404","version":4,"inputs":0,"outputs":2,"exposeAsEntityConfig":"","entityId":"binary_sensor.esp1_fleck_cycle_adoucisseur","entityIdType":"exact","debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"}],"customOutputs":[],"outputInitially":false,"stateType":"str","enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":230,"y":4100,"wires":[["3d449e46e77eeae8"],[]]},{"id":"331296354a77f59f","type":"server-state-changed","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Depassement temps de cycle >90mm","server":"64fc7b21.810404","version":4,"outputs":2,"for":"95","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"timer.adoucisseur_minuteur_cycle","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"active","halt_if_type":"str","halt_if_compare":"is","output_only_on_state_change":true,"x":270,"y":3820,"wires":[["00656768aec48844"],[]]},{"id":"00656768aec48844","type":"api-current-state","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Debit rejet ON","server":"64fc7b21.810404","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.fleck_debit_rejet_adoucisseur","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"4","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":620,"y":3820,"wires":[["c3c9c652e2b42927"],["9ec58df8b26d3450"]]},{"id":"ced6c2c35d56aab9","type":"trigger-state","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Switch  Maintenance Input Boolean","server":"64fc7b21.810404","version":4,"inputs":0,"outputs":2,"exposeAsEntityConfig":"","entityId":"input_boolean.adoucisseur_maintenance","entityIdType":"exact","debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on"},{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off"}],"customOutputs":[],"outputInitially":true,"stateType":"str","enableInput":false,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":940,"y":4100,"wires":[["4e61a1462680a924"],[]]},{"id":"683a4cd81f03f662","type":"comment","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"Gestion des alarmes Adoucisseur","info":"","x":260,"y":3500,"wires":[]},{"id":"a9560ddfc5574b10","type":"api-call-service","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"⚠️ Adoucisseur : Fuite rejet adoucisseur apres cycle","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"notify","service":"telegram_pascal_ha","areaId":[],"deviceId":[],"entityId":[],"data":"{\t   \"message\":\"⚠️ Adoucisseur : Fuite rejet adoucisseur apres cycle\",\t   \"title\":\"\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1050,"y":3500,"wires":[[]]},{"id":"c3c9c652e2b42927","type":"api-call-service","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"⚠️ Adoucisseur : Fuite rejet adoucisseur ","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"notify","service":"telegram_pascal_ha","areaId":[],"deviceId":[],"entityId":[],"data":"{\t   \"message\":\"⚠️ Adoucisseur : Fuite rejet adoucisseur \",\t   \"title\":\"\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1070,"y":3740,"wires":[[]]},{"id":"9ec58df8b26d3450","type":"api-call-service","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"⚠️ Adoucisseur Alerte : Depassement temps de cycle","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"notify","service":"telegram_pascal_ha","areaId":[],"deviceId":[],"entityId":[],"data":"{\t   \"message\":\"⚠️ Adoucisseur Alerte : Depassement temps de cycle\",\t   \"title\":\"\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1090,"y":3820,"wires":[[]]},{"id":"f172df64a704f149","type":"api-call-service","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"⚠️ Adoucisseur Alerte : Bac a sel vide","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"notify","service":"telegram_pascal_ha","areaId":[],"deviceId":[],"entityId":[],"data":"{\t   \"message\":\"⚠️ Adoucisseur Alerte : Bac a sel vide\",\t   \"title\":\"\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":620,"y":3900,"wires":[[]]},{"id":"a197f8d0f244f6e1","type":"api-call-service","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"⚠️ Adoucisseur  : Bac a sel à remplir","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"notify","service":"telegram_pascal_ha","areaId":[],"deviceId":[],"entityId":[],"data":"{\t   \"message\":\"⚠️ Adoucisseur  : Bac a sel à remplir\",\t   \"title\":\"\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1350,"y":3940,"wires":[[]]},{"id":"3d449e46e77eeae8","type":"api-call-service","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"⚠️ Adoucisseur  : Régeneration","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"notify","service":"telegram_pascal_ha","areaId":[],"deviceId":[],"entityId":[],"data":"{\t   \"message\":\"⚠️ Adoucisseur  : Régeneration\",\t   \"title\":\"\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":570,"y":4100,"wires":[[]]},{"id":"4e61a1462680a924","type":"api-call-service","z":"599bb4f6eb82e957","g":"7a9a2999dbc2d2f2","name":"🛠 Adoucisseur  : Faire la maintenance","server":"64fc7b21.810404","version":5,"debugenabled":false,"domain":"notify","service":"telegram_pascal_ha","areaId":[],"deviceId":[],"entityId":[],"data":"{\t   \"message\":\"🛠 Adoucisseur  : Faire la maintenance\",\t   \"title\":\"\"\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1340,"y":4100,"wires":[[]]},{"id":"64fc7b21.810404","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

Voila pour ce projet qui est en cours depuis 2 ans ou presque. commencant de zero (voir en dessous), je suis partie sur diverse solution que j’ai modifié et améliorée au cours du temps.

Il me reste à améliorer la detection de niveau de sel, mais en 2 ans avec le systeme actuel l’adoucisseur n’a jamais manqué de sel !

Merci à tous ceux qui m’ont apporté leur aide.

2 « J'aime »