Adoucisseur Domao et domotique

Partager
Adoucisseur Domao et domotique
Photo by Lucas Sankey / Unsplash

J'ai fait installer un adoucisseur Domao 100. Distribué principalement par Cédeo, Brossette et le groupe Saint-Gobain), c'est un appareil vendu en marque blanche. Il s'agit en réalité d'un modèle fabriqué par la société américaine WaterBoss (ou sa maison mère Hague Quality Water / AO Smith), et on le retrouve sous d'autres marques selon les canaux de distribution (AEG, EcoWater, ...). Rien d'original pour cet appareil somme toute assez archaïque.

Il ne s'agit pas d'un appareil connecté, ça existe, mais d'une part c'est bien plus onéreux, et d'autre par propriétaire, souvent inexploitable, avec une application verrouillée et probablement collectrice de données. Un mode connecté pourrait remonter le volume d'eau perdu lors de la régénération, d'éventuelles fuites, le niveau de sel et les phases actives.

Outre les réglages liés à la dureté de l'eau qui doivent êtres réalisées par l'installateur après mesure on peu régler sur ces adoucisseurs l'heure de la régénération et surtout le mode.

  • Auto (position -—) + Mode 97% ON : l'adoucisseur attend le dernier moment pour lancer la régénération. Très économique en eau, mais peut avoir une incidence sur la prolifération bactérienne.
  • Auto (position -—) + Mode 97% OFF : l'adoucisseur régénère à l'heure programmée (02:00 par défaut) dès que la réserve estimée est insuffisante.
  • Tous les x jours + Mode 97% ON ou OFF : l'adoucisseur forcera la régénération tous les x jours, même en absence. Ca peut être une réponse face à une possible prolifération bactérienne

Les différentes documentations que j'ai trouvées (rien n'est livré) sur ces produits et leur DHM ne sont pas claires et très mal traduites. Tout ceci reste donc de la déduction.

En préalable à toute manipulation, je vous invite à lire cet avertissement important.

Afin de remonter toutes les informations il faudrait installer un débitmètre pour l'eau et un capteur de niveau pour le sel. Ces adoucisseurs consomment quasi pas d'électricité et peu de sel, par contre une centaine de litres d'eau par régénération. Je ne vais pas traiter ces deux sujets pour l'instant, mais uniquement remonter les périodes de régénération, et ce sans souder quoi que ce soit afin de ne pas perdre la garantie du produit.

Information de régénération

Sur la carte électronique (très accessible) il existe une sortie auxiliaire (J4) et dans les menus une option pour commander cette sortie qui est annoncée pour 28 volts CC et ou le + et le - ne sont pas repérés ⚠. Il s'agit de deux bornes Faston de taille différente

  • J4.1 = 4.8 mm. : ➕ (positif)
  • J4.2 = 6.3 mm. : ➖ (négatif)

Le fait qu'elles ne soient pas repérées mais de taille différente laisse à penser qu'il s'agit ici que le technicien ne puisse se tromper en connectant un équipement maison. Mais aussi d'éviter tout équipement externe. Faire et fournir un schéma en CC (courant continu) sans indications c'est vraiment n'importe quoi.

Mon idée est d'utiliser cette sortie pour y connecter un optocoupleur et ensuite remonter l'information à Home Assistant via un simple détecteur de fuite Zigbee détourné (un ESP ou un Shelly Uni aurait pu faire le job). Pour cela il faut dans le menu aller configurer l'état de cette sortie en interprétant la documentation qui a du être traduite à l'arrache.

En fait je pense que c'est prévu pour activer des équipements (vannes, etc.) et que la description indique la fonction, ainsi le OFF n'envie aucune tension sur la sortie J4 alors que BP envoie 24 volts CC pendant la régénération. Je n'ai pas testé les autres modes car c'est celui ci qui m'intéresse afin de remonter cette indication.

Le reste est un jeu d'enfant, on découpe les bornes du capteur de fuite afin de les insérer dans l'optocoupleur, on respecte la polarité et on prépare un câble avec les connecteurs Faston et leur isolant, le 4.8 mm sur le rouge (+) et le 6.3 mm sur le noir (-).

Ensuite on teste le montage avec une simple pile de 9 volts, la led doit s'allumer et le binary_sensor: de notre détecteur de fuite, préalablement appairé et configuré, doit passer de OFF à ON (not running / running, ça se configure dans ses paramètres).

A partit de cet état il est bien sur possible d'envoyer des notifications mais surtout de produire des statistiques.

On crée deux sensor: de type history_stats :

sensor:
  - platform: history_stats
    name: "Durée régénération aujourd'hui"
    entity_id: binary_sensor.adoucisseur_regeneration
    state: "on"
    type: time
    start: "{{ today_at('00:00') }}"
    end: "{{ now() }}"
    min_state_duration: "00:02:00"
    
  - platform: history_stats
    name: "Nombre régénérations aujourd'hui"
    entity_id: binary_sensor.adoucisseur_regeneration
    state: "on"
    type: count
    start: "{{ today_at('00:00') }}"
    end: "{{ now() }}"
    min_state_duration: "00:02:00"

Ensuite on crée des utility_meter: qui vont nous permettre de conserver des statistiques mensuelles et annuelles (voire plus..) :

utility_meter:
  # ==========================================
  # CUMUL DES DURÉES DE RÉGÉNÉRATION
  # ==========================================
  um_adoucisseur_duree_regeneration_mois:
    source: sensor.adoucisseur_regenerations_time
    name: "Durée régénération (Mois)"
    cycle: monthly

  um_adoucisseur_duree_regeneration_annee:
    source: sensor.adoucisseur_regenerations_time
    name: "Durée régénération (Année)"
    cycle: yearly

  # ==========================================
  # CUMUL DU NOMBRE DE RÉGÉNÉRATIONS
  # ==========================================
  um_adoucisseur_nombre_regenerations_mois:
    source: sensor.adoucisseur_regenerations_count
    name: "Nombre régénérations (Mois)"
    cycle: monthly

  um_adoucisseur_nombre_regenerations_annee:
    source: sensor.adoucisseur_regenerations_count
    name: "Nombre régénérations (Année)"
    cycle: yearly

On peut également faire ça via l'interface pour les réfractaires au YAML

Et en bonus une petite carte basic

type: custom:vertical-stack-in-card
cards:
  - type: history-graph
    entities:
      - binary_sensor.tuya_sensor_02
    show_names: false
    expand_legend: false
  - type: entities
    entities:
      - entities:
          - entity: sensor.adoucisseur_regenerations_time
            name: 'Regénération de nuit :'
            format: duration-h
        entity: binary_sensor.tuya_sensor_02
        name: Etat
        secondary_info: last-changed
        type: custom:multiple-entity-row
        column: true
        toggle: false
      - show_state: false
        entities:
          - entity: sensor.um_adoucisseur_temps_de_regeneration_mensuel
            name: 'Mois :'
            format: duration-h
          - entity: sensor.um_adoucisseur_temps_de_regeneration_annuel
            name: 'Année :'
            format: duration-h
        entity: sensor.adoucisseur_regenerations_time
        name: Temps de regénération
        secondary_info: last-changed
        type: custom:multiple-entity-row
        column: true
        toggle: false
        icon: mdi:timetable
      - show_state: false
        entities:
          - entity: sensor.um_adoucisseur_nombre_de_regenerations_mensuel
            name: 'Mois :'
          - entity: sensor.um_adoucisseur_nombre_de_regenerations_annuel
            name: 'Année :'
        entity: sensor.adoucisseur_regenerations_count
        name: Nombre de regénérations
        secondary_info: last-changed
        type: custom:multiple-entity-row
        column: true
        toggle: false
        icon: mdi:counter
title: Adoucisseur

On peu aussi envoyer une notification (Mobile, Slack, Telegram, SMTP, etc.) et remplir un calendrier (local ou partagé :

alias: GUI - Notification - Adoucisseur
description: ''
triggers:
  - trigger: state
    entity_id: binary_sensor.tuya_sensor_02
    to: 'on'
    from: 'off'
    for: "00:05:00" # Temporisation lors de mes tests
    id: start
  - trigger: state
    entity_id: binary_sensor.tuya_sensor_02
    to: 'off'
    from: 'on'
    for: "00:05:00"
    id: stop
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - start
        sequence:
          - action: notify.send_message
            metadata: {}
            target:
              device_id: 94f3851266509b81c284288c4c48cced
            data:
              message: '{{ states.sensor.date_time.state}} : Début de la régénération'
              title: Adoucisseur
      - conditions:
          - condition: trigger
            id:
              - stop
        sequence:
          - action: notify.send_message
            metadata: {}
            target:
              device_id: 94f3851266509b81c284288c4c48cced
            data:
              message: >-
                {{ states.sensor.date_time.state}} : Fin de la régénération - 
                Durée totale : {{ ((trigger.to_state.last_changed -
                trigger.from_state.last_changed).total_seconds() / 60) |
                round(0) }} minute(s).
              title: Adoucisseur
          - action: calendar.create_event
            target:
              entity_id: calendar.canaletto
            data:
              summary: Régénération
              description: >-
                Durée totale : {{ ((trigger.to_state.last_changed -
                trigger.from_state.last_changed).total_seconds() / 60) |
                round(0) }} minute(s).
              start_date_time: '{{ trigger.from_state.last_changed.isoformat() }}'
              end_date_time: '{{ trigger.to_state.last_changed.isoformat() }}'
mode: single

Ce montage est adaptable à d'autres situations, je l'utilise par exemple comme détecteur de présence électrique avec un optocoupleur AC 230 volts ou pour surveiller plusieurs équipements avec un carte comportant 8 optocoupleurs AC 230 volts, comme je l'avais décrit dans cet article (qui mériterais un rafraichissement).

Documents