[Article] Gestion ZEN de sa piscine avec iopool et Home Assistant

Bonjour,

Découvrez dans un article HACF, comment intégrer votre sonde de piscine iopool dans votre Home Assistant ainsi que comment gérer votre filtration avec iopool Pump Manager

Cet article est une évolution de mon tutoriel précédent. L’ensemble des échanges sur ce sujet se feront désormais ici.

5 « J'aime »

C’est nickel pour les beaux jours qui arrivent :slight_smile:

3 « J'aime »

Chouettes article et vidéos pour un joli travail de fond.
Serait il possible de nous expliquer comment faire une carte pour le Dashboard pour piloter / visualiser tout ca (la partie filtration)?
Merci encore pour ton travail.

Bonjour,

Merci.
Dans l’article, il y a un code d’exemple pour la carte ainsi que les types de cartes à installer.
Pour chaque type, il y a le lien de leur documentation qui explique comment l’installer

Et pour la filtration, il n’y a rien à piloter, tout est automatique. Donc à part ajouter le switch de ta pompe, je ne vois pas ce que tu voudrais en plus. Tu peux préciser ?

Bonjour,
dans l’article il y a effectivement un code pour une carte affichant toutes les données de la sonde iopool. Il me semble que ce serait bien d’avoir les informations sur la durée de filtration prévue, la durée effective, les slots…
C’était le cas dans l’ancien Tuto mais les entités ont changées et j’ai un peu de mal.
je m’aperçoit d’un soucis , j’ai un message d’erreur dans le error.log d’appdaemon :


2024-06-15 20:38:22.166044 WARNING iopoolPumpManager: ------------------------------------------------------------
2024-06-15 20:42:43.061903 WARNING iopoolPumpManager: ------------------------------------------------------------
2024-06-15 20:42:43.062057 WARNING iopoolPumpManager: Unexpected error running initialize() for iopoolPumpManager
2024-06-15 20:42:43.062187 WARNING iopoolPumpManager: ------------------------------------------------------------
2024-06-15 20:42:43.062716 WARNING iopoolPumpManager: Traceback (most recent call last):
  File "/homeassistant/appdaemon/apps/appdaemon-iopoolpumpmanager/iopool_pump_manager.py", line 33, in initialize
    self._verify_entities(config=config)
  File "/homeassistant/appdaemon/apps/appdaemon-iopoolpumpmanager/iopool_pump_manager.py", line 156, in _verify_entities
    raise RuntimeError(
RuntimeError: Entity sensor.iopool_recommanded_filtration_duration defined in configuration config.filtration_summer.recommanded_duration does not exist. Please check your configuration.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/appdaemon/app_management.py", line 162, in initialize_app
    await utils.run_in_executor(self, init)
  File "/usr/lib/python3.11/site-packages/appdaemon/utils.py", line 304, in run_in_executor
    response = future.result()
               ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/homeassistant/appdaemon/apps/appdaemon-iopoolpumpmanager/iopool_pump_manager.py", line 37, in initialize
    raise RuntimeError("Invalid configuration. Please check the app logs for more information.") from err
RuntimeError: Invalid configuration. Please check the app logs for more information.

Vois tu d’où cela peux venir?
Merci :slight_smile:

Je vais ajouter une carte pour le temps effectué, restant et cible. Mais la façon dont fonctionne iopool Pump Manager est de faciliter la mise en place. Donc moins d’entités.
Les slots ne sont donc plus disponibles en tant qu’entité.

Pour ton erreur, le problème est indiqué clairement

Tu n’as donc pas créé l’entité sensor.iopool_recommanded_filtration_duration comme expliqué dans l’article et la doc.

Mais il me semble que dans l’article l’entité s’appelle : recommanded_filtration_iopool_pool.
Ou alors je mélange plusieurs choses?
Pour l’interface il faudrait aussi les boost non?Dommage qu’on ne puisse plus manipuler les slots a partir de l’interface pour modifier les horaires de debut sans aller modifier les fichiers de configs.
Pareil pour les durées minimales et maximales…
Après effectivement ce n’est peut etre pas dans l’esprit de ce que tu as fait.
Autre question, a quoi correspondent les modes hivernage actif et passif, je veux dire comment marche la filtration dans ces modes, je ne vois dans le code qu’un seul mode hivers avec une filtration de 2h a 3h30 .
Merci de ton aide

Bonjour,

Non tu as totalement raison. Le nom dans l’exemple de la configuration iopool Pump Manager n’était pas le bon. Ce n’était qu’un exemple. Mais je viens de le modifier dans la doc (l’article était bon). Merci de l’avoir vu :wink:

Oui je vais travailler sur une partie filtration et boost mais les cartes c’est pas mon fort donc j’en profite pour lancer un appel, si quelqu’un est motivé pour travailler sur une carte iopool + iopool Pump Manager, qu’il me fasse signe en MP :email:

Quand j’ai fais l’appdaemon initial, j’avais fais cela sans vraiment savoir si ce serait utile. Au final, je l’ai changé, 1 ou 2 fois depuis sa mise en place mais ca ajoutait des entités à créer et parfois difficile à comprendre pour les utilisateurs. Pour simplifier comme je pense que c’est des valeurs qu’on ne change jamais, je les ai mis uniquement en configuration. Pareil pour les min/max.
L’ancienne version reste fonctionnelle si elle correspond mieux à tes besoins.

Tu peux m’expliquer dans quel contexte tu les changeais régulièrement ou pourquoi tu en avais besoin ?

Il existe en effet 3 modes d’hivernage :

Comme tu peux le voir, seul les 2 premiers ont besoin d’une configuration vu que le dernier ne déclenche pas de filtration. Le simple fait d’être dans ce mode dans input_select.pool_mode fait que iopool Pump Manager sait qu’il ne doit pas lancer de filtration.

Bonjour,
merci pour tes explications.
Pour les slots je ne suis pas sur d’en avoir vraiment besoin, c’est plus « par principe » mais ca m’ira bien sans :slight_smile:
par contre j’ai une autre erreur apres avoir modifié le sensor dans le apps.yaml de appdaemon avec la bonne valeur :

Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/appdaemon/app_management.py", line 162, in initialize_app
    await utils.run_in_executor(self, init)
  File "/usr/lib/python3.11/site-packages/appdaemon/utils.py", line 304, in run_in_executor
    response = future.result()
               ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/homeassistant/appdaemon/apps/appdaemon-iopoolpumpmanager/iopool_pump_manager.py", line 37, in initialize
    raise RuntimeError("Invalid configuration. Please check the app logs for more information.") from err
RuntimeError: Invalid configuration. Please check the app logs for more information.

2024-06-16 17:54:16.367165 WARNING iopoolPumpManager: ------------------------------------------------------------
2024-06-16 17:57:02.071975 WARNING iopoolPumpManager: ------------------------------------------------------------
2024-06-16 17:57:02.072178 WARNING iopoolPumpManager: Unexpected error running initialize() for iopoolPumpManager
2024-06-16 17:57:02.072382 WARNING iopoolPumpManager: ------------------------------------------------------------
2024-06-16 17:57:02.072979 WARNING iopoolPumpManager: Traceback (most recent call last):
  File "/homeassistant/appdaemon/apps/appdaemon-iopoolpumpmanager/iopool_pump_manager.py", line 33, in initialize
    self._verify_entities(config=config)
  File "/homeassistant/appdaemon/apps/appdaemon-iopoolpumpmanager/iopool_pump_manager.py", line 156, in _verify_entities
    raise RuntimeError(
RuntimeError: Entity sensor.rec defined in configuration config.filtration_summer.recommanded_duration does not exist. Please check your configuration.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/appdaemon/app_management.py", line 162, in initialize_app
    await utils.run_in_executor(self, init)
  File "/usr/lib/python3.11/site-packages/appdaemon/utils.py", line 304, in run_in_executor
    response = future.result()
               ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/homeassistant/appdaemon/apps/appdaemon-iopoolpumpmanager/iopool_pump_manager.py", line 37, in initialize
    raise RuntimeError("Invalid configuration. Please check the app logs for more information.") from err
RuntimeError: Invalid configuration. Please check the app logs for more information.

2024-06-16 17:57:02.073174 WARNING iopoolPumpManager: ------------------------------------------------------------

Je n’ai pas l’impression d’avoir vu de sensor config.filtration_summer.recommanded_duration dans les exemples de l’article…

Merci d’avance.

Dans iopool Pump Manager tu peux mettre un seul slot ce qui n’était pas possible dans la version originale. Tu peux aussi en mettre 10 si tu veux (ça aussi c’est nouveau)

Ce n’est pas un sensor. L’erreur t’indique que le sensor que tu as configuré dans config.filtration_summer.recommanded_duration n’existe pas. À priori tu aurais saisir sensor.rec.

Le format config.filtration_summer.recommanded_duration permet de donner l’arborescence de la configuration. Donc c’est le contenu du paramètres recommanded_duration dans filtration_summer qui est pas bon.

Bonjour, effectivement, petites erreurs de copier /coller, tout à l’air bon maintenant.
Merci pour ton aide.

1 « J'aime »

Bonjour javais fait l’installation avec l’ancien tuto et tout est bien fonctionnel, mais j’ai une question, je vais surement avoir une 2 eme sonde pour le spa, au niveau home assistant ca devrait aller mais au niveau du daemon comment dois je proceder ? dupliquer les fichiers avec d autres nom ?

Merci d’avance

Bonjour,

Pour les entités, tu créés un nouveau package iopool et iopool Pump Manager en faisant attention de bien les nommer différemment (pas le name mais la clé de configuration).
Par exemple dans la doc je propose temperature_iopool_pool le dernier _pool peut être personnalisé avec le nom de ton bassin par exemple.

Coté Appdaemon tu créé une nouvelle application dans apps.yaml avec un nom différent :

bassin1:
    module: iopool_pump_manager
    class: iopoolPumpManager
    use_dictionary_unpacking: true
    log: iopoolPumpManager
    config:
      pump_switch: switch.pool_switch
      [...]

bassin2:
    module: iopool_pump_manager
    class: iopoolPumpManager
    use_dictionary_unpacking: true
    log: iopoolPumpManager
    config:
      pump_switch: switch.pool_switch
      [...]

Ca devrait marcher comme il faut.
Seul chose à laquelle j’ai pas pensé dans mon code c’est l’entité créé automatiquement sensor.pool_pump_calculated_duration qui du coup serait la même pour les 2 bassins.

Je vais sortir une nouvelle version dans la semaine qui ajoutera un paramètre optionnel pour gérer cela.
Tu peux suivre l’avancement ici : Managing multiple pool · Issue #25 · mguyard/appdaemon-iopoolpumpmanager · GitHub

Merci pour la réponse, je vais surveillé cà, merci pour le travail :wink:

@Fonzy, un petit teasing de la carte en cours de creation:


Elle s’appui sur Button-Card, Mushroom, Mini Graph Card et Pool Monitor Card
J’utilise le theme Rounded et les couleurs qui seront dedans sont celle de ce template. Il faudra ajuster les couleurs de votre coté lorsque je fournirais le code

@Postelnicolas, la version 2.0.0 est sortie et normalement gère plusieurs sondes sans problèmes mais malheureusement j’ai pas pu tester n’ayant qu’une sonde

Un grand merci pour le tutoriel. Ça semble fonctionner parfaitement.

Hâte d’avoir le code de la carte mise à jour :smile:

Bonjour,

Et tout d’abord un grand merci, c’est génial d’avoir les infos piscine qui remontent dans home assistant, du coup je peux automatiser la filtration en fonction de la température du bassin, de l’heure et de la production des panneaux solaires.

Maintenant j’ai un SPA en plus de la piscine, avec une seconde sonde Iopool qui remonte bien les infos dans l’appli IoPool. Du coup j’ai créé un fichier spa.yaml dans includes/packages, en remplaçant « pool » par « spa ». Mais j’ai 2 problèmes :

  • La ligne
    value_template: "{{ value_json.title }}
    renvoit l’erreur ‹ value_json › is undefined.

Pourtant j’ai bien mis le bon id de bassin du spa, et la clé API est bien dans le x-api-key (qui fonctionne bien pour la piscine). Je ne vois pas où est l’erreur.

  • les échelles de température sont inadaptées : la température normale du spa est de 35°C (et non 27°C). Or, l’échelle est fixée de manière assez complexe dans le dashboard, comment peut-on la modifier ?

Voici le fichier spa.yaml dans includes/packages :

Merci d’avance pour votre aide.
Hervé

Bonjour,

Oui car il faut écrire

value_template: "{{ value_json.title }}"

et non

value_template: "{{ "value_json.title" }}"

Tu parles de cette partie ?
CleanShot 2024-07-14 at 17.24.05
Si c’est le cas, au contraire rien de plus simple.
L’auteur de la carte a prévu cela avec temperature_setpoint et temperature_step.
Par exemple, si tu veux la partie verte entre 32 et 38, tu fais un setpoint a 35 et un step à 3

Si par contre tu parles de cette partie :
CleanShot 2024-07-14 at 17.31.34
C’est toujours très simple, il suffit de changer les paliers, à toi de voir ce qui correspond le mieux pour toi comme par exemple:

color_thresholds:
  - value: 28
    color: '#44739e'
  - value: 32
    color: '#12f33f'
  - value: 36
    color: '#f39c12'
  - value: 38
    color: '#c0392b'