# Intégration py-agua-iot - Comment accéder à /usr/local/lib/python3.10?

**URL:** <https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393>\
**Category:** Entraide Home Assistant\
**Tags:** integration\
**Created:** [Février 1, 2023, 9:12 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393 "2023-02-01T09:12:32Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![polooo](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/cdc98d/32.png) [@polooo](https://forum.hacf.fr/u/polooo)\
**Post date:** [Février 1, 2023, 9:12 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/1 "2023-02-01T09:12:33Z")

</div>

## Mon problème

Bonjour, je suis en train d’essayer d’intégrer mon poêle Nobis à HA via l’intégration py-agua-iot ([GitHub - vincentwolsink/home\_assistant\_micronova\_agua\_iot: Home Assistant integration controlling heating devices (pellet stoves) connected via the Agua IOT platform of Micronova](https://github.com/vincentwolsink/py-agua-iot)).

Mon poêle apparaît bien (alias + modèle + différents niveaux de puissance), il y a donc bien des informations récupérées via l’api agua mais le poêle est marqué comme indisponible et donc impossible de le piloter.

En cherchant un petit peu dans les logs, je suis tombé là-dessus :

```auto
2023-01-31 12:07:54.269 ERROR (MainThread) [homeassistant.components.climate] Error while setting up aguaiot platform for climate
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 297, in _async_setup_platform
    await asyncio.gather(*pending)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 438, in async_add_entities
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 709, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 804, in add_to_platform_finish
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 556, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 599, in _async_write_ha_state
    attr.update(self.state_attributes or {})
  File "/usr/src/homeassistant/homeassistant/components/climate/ __init__.py", line 297, in state_attributes
    self.current_temperature,
  File "/config/custom_components/aguaiot/climate.py", line 164, in current_temperature
    return self._device.air_temperature
  File "/usr/local/lib/python3.10/site-packages/py_agua_iot/ __init__.py", line 583, in air_temperature
    return float(self.__get_information_item('temp_air_get'))
  File "/usr/local/lib/python3.10/site-packages/py_agua_iot/ __init__.py", line 430, in __get_information_item
    formula = self.__register_map_dict[item]['formula']
KeyError: 'temp_air_get'

```

C’est via le fichier **init**.py situé dans /usr/local/lib/python3.10/site-packages/py\_agua\_iot que ha communique avec l’api agua (ce fichier est aussi présent dans le github py-agua-iot).

Mon poêle Nobis est un poêle hybride (pellet et bois) alors que l’intégration a été développée pour les poêle à pellet uniquement (c’est mon intuition). Les informations renvoyées par l’api d’agua ne sont donc sans doute pas correctement «&nbsp;formatées&nbsp;» par l’intégration dans le cas de mon poêle.

J’en viens donc maintenant à ma question, comment accéder au fichier /usr/local/lib/python3.10/site-packages/py\_agua\_iot/ **init**.py pour débugger tout ça ? J’ai essayé via le terminal intégrée ou via l’explorateur de fichier intégré mais le dossier /usr/local/lib est désespérément vide…

Merci pour vos réponses et bonne journée !!

## Ma configuration

* * *

[center]## System Information

| version | core-2023.1.7 |
| --- | --- |
| installation\_type | Home Assistant OS |
| dev | false |
| hassio | true |
| docker | true |
| user | root |
| virtualenv | false |
| python\_version | 3.10.7 |
| os\_name | Linux |
| os\_version | 5.15.90 |
| arch | x86\_64 |
| timezone | Europe/Brussels |
| config\_dir | /config |

> **Home Assistant Community Store**
>
> | GitHub API | ok |
> | --- | --- |
> | GitHub Content | ok |
> | GitHub Web | ok |
> | GitHub API Calls Remaining | 4989 |
> | Installed Version | 1.30.1 |
> | Stage | running |
> | Available Repositories | 1196 |
> | Downloaded Repositories | 32 |

> **Home Assistant Cloud**
>
> | logged\_in | true |
> | --- | --- |
> | subscription\_expiration | 28 février 2023 à 01:00 |
> | relayer\_connected | true |
> | remote\_enabled | true |
> | remote\_connected | true |
> | alexa\_enabled | true |
> | google\_enabled | true |
> | remote\_server | eu-central-1-3.ui.nabu.casa |
> | can\_reach\_cert\_server | ok |
> | can\_reach\_cloud\_auth | ok |
> | can\_reach\_cloud | ok |

> **Home Assistant Supervisor**
>
> | host\_os | Home Assistant OS 9.5 |
> | --- | --- |
> | update\_channel | stable |
> | supervisor\_version | supervisor-2023.01.1 |
> | agent\_version | 1.4.1 |
> | docker\_version | 20.10.22 |
> | disk\_total | 439.4 GB |
> | disk\_used | 176.5 GB |
> | healthy | true |
> | supported | true |
> | board | generic-x86-64 |
> | supervisor\_api | ok |
> | version\_api | ok |
> | installed\_addons | Terminal & SSH (9.6.1), File editor (5.5.0), MariaDB (2.5.1), phpMyAdmin (0.8.3), Home Assistant Google Drive Backup (0.110.1), SQLite Web (3.7.0), Ring-MQTT with Video Streaming (5.0.5), Mosquitto broker (6.1.3), Filebrowser (2.23.0), Duck DNS (1.15.0) |

> **Dashboards**
>
> | dashboards | 4 |
> | --- | --- |
> | resources | 18 |
> | views | 4 |
> | mode | storage |

> **Recorder**
>
> | oldest\_recorder\_run | 23 janvier 2023 à 11:24 |
> | --- | --- |
> | current\_recorder\_run | 31 janvier 2023 à 15:49 |
> | estimated\_db\_size | 698.48 MiB |
> | database\_engine | sqlite |
> | database\_version | 3.38.5 |

> **Xiaomi Miot Auto**
>
> | component\_version | 0.7.5 |
> | --- | --- |
> | can\_reach\_server | ok |
> | can\_reach\_spec | ok |
> | logged\_accounts | 1 |
> | total\_devices | 7 |

[/center]
* * *

---

<div class="post-metadata">

**Author:** ![Pulpy-Luke](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pulpy-luke/32/137426_2.png) [@Pulpy-Luke](https://forum.hacf.fr/u/Pulpy-Luke)\
**Post date:** [Février 3, 2023, 1:01 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/2 "2023-02-03T13:01:26Z")

</div>

Salut  
Dans HAOS et un environnement container, c’est pas facile de faire du débug.  
A mon avis tu gagnerai ton temps à ouvrir une issue sur le github de l’auteur. S’il est actif et réactif, ça pourrait ne te couter que quelques messages

---

<div class="post-metadata">

**Author:** ![Thomas\_S](https://forum.hacf.fr/user_avatar/forum.hacf.fr/thomas_s/32/21708_2.png) [@Thomas\_S](https://forum.hacf.fr/u/Thomas_S)\
**Post date:** [Février 9, 2023, 1:30 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/4 "2023-02-09T13:30:11Z")

</div>

Bonjour,

Je rencontre le même problème que toi, cependant mon poele est un Nobias A8 V donc pellet exclusif, je joins mes logs qui ressemblent bcp aux tiens.

Je n’ai pas trouver de solution :s

> Logger: homeassistant.components.climate  
> Source: custom\_components/aguaiot/climate.py:164  
> Integration: Thermostat (documentation, issues)  
> First occurred: 8 février 2023 à 21:25:41 (18 occurrences)  
> Last logged: 14:25:03
> 
> Error adding entities for domain climate with platform aguaiot  
> Error while setting up aguaiot platform for climate  
> Traceback (most recent call last):  
> File «&nbsp;/usr/src/homeassistant/homeassistant/helpers/entity\_platform.py&nbsp;», line 442, in async\_add\_entities  
> await asyncio.gather(\*tasks)  
> File «&nbsp;/usr/src/homeassistant/homeassistant/helpers/entity\_platform.py&nbsp;», line 717, in \_async\_add\_entity  
> await entity.add\_to\_platform\_finish()  
> File «&nbsp;/usr/src/homeassistant/homeassistant/helpers/entity.py&nbsp;», line 814, in add\_to\_platform\_finish  
> self.async\_write\_ha\_state()  
> File «&nbsp;/usr/src/homeassistant/homeassistant/helpers/entity.py&nbsp;», line 566, in async\_write\_ha\_state  
> self.\_async\_write\_ha\_state()  
> File «&nbsp;/usr/src/homeassistant/homeassistant/helpers/entity.py&nbsp;», line 609, in \_async\_write\_ha\_state  
> attr.update(self.state\_attributes or {})  
> File «&nbsp;/usr/src/homeassistant/homeassistant/components/climate/ **init**.py&nbsp;», line 297, in state\_attributes  
> self.current\_temperature,  
> File «&nbsp;/config/custom\_components/aguaiot/climate.py&nbsp;», line 164, in current\_temperature  
> return self.\_device.air\_temperature  
> File «&nbsp;/usr/local/lib/python3.10/site-packages/py\_agua\_iot/ **init**.py&nbsp;», line 583, in air\_temperature  
> return float(self.\_\_get\_information\_item(‹&nbsp;temp\_air\_get&nbsp;›))  
> File «&nbsp;/usr/local/lib/python3.10/site-packages/py\_agua\_iot/ **init**.py&nbsp;», line 430, in \_\_get\_information\_item  
> formula = self.\_\_register\_map\_dict[item][‹&nbsp;formula&nbsp;›]  
> KeyError: ‹&nbsp;temp\_air\_get&nbsp;›

---

<div class="post-metadata">

**Author:** ![le\_top](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/l/34f0e0/32.png) [@le\_top](https://forum.hacf.fr/u/le_top)\
**Post date:** [Février 9, 2023, 2:33 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/5 "2023-02-09T14:33:06Z")

</div>

La console ne donne pas accès à toute la fonctionnalité, mais on peut s’en rapprocher en ajoutant pip au conteneur de la console et en y installant les paquets (c.a.d. dans le conteneur de la console).  
Perso, j’ai optimisé la console avec [un script et de la configuration](https://gist.github.com/07918a6a1300fa64f0faf08c7e2a1dd1)

Sinon, l’erreur dans votre script est que la clef 'temp\_air\_get ’ est supposé présente dans une structure or cela ne l’est pas.

Pour déboguer, pour les petits scripts, une execution de type

```plaintext
python3 -m trace --ignore-dir=/usr/lib -t SCRIPT

```

Permets d’avoir le déroulement du programme dans une trace.

Edit: voir aussi [Shell\_command et script python - #13 par le\_top](https://forum.hacf.fr/t/shell-command-et-script-python/20659/13) .

---

<div class="post-metadata">

**Author:** ![polooo](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/cdc98d/32.png) [@polooo](https://forum.hacf.fr/u/polooo)\
**Post date:** [Février 9, 2023, 3:35 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/6 "2023-02-09T15:35:57Z")

</div>

Bonjour,

J’ai fini par réussir à accéder au fichier **init**.py de /usr/local/lib/python3.10/site-packages/py\_agua\_iot et en débugguant un petit peu, j’ai vu que dans le cas de mon poêle Nobis, la clé à consulter était temp\_air2\_get et non temp\_air\_get… Dés que j’ai eu modifié la clé et redémarrer home assistant, mon entité climat apparaissait bien et je pouvais la contrôler comme toute autre entité climat.

La propriété :

```auto
@property
    def air_temperature(self):
        return float(self.__get_information_item('temp_air_get'))

```

doit donc devenir :

```auto
@property
    def air_temperature(self):
        return float(self.__get_information_item('temp_air2_get'))

```

⚠ Attention, la solution ci-dessous est loin d’être la meilleure et ça peut foutre ton home assistant en l’air si tu fais une mauvaise manipulation. Donc, c’est à tes risques et périls ⚠

Pour pouvoir accéder au fichier **init**.py :

1. J’ai installé l’add-on terminal du repository [GitHub - alexbelgium/hassio-addons: My homeassistant addons](https://github.com/alexbelgium/hassio-addons) et j’ai désactivé le mode protégé de cet addon (n’oublie pas d’activer le mode avancé de ton profil utilisateur si jamais). De cette manière, tu vas pouvoir avoir accès à beaucoup plus de commandes notamment de docker. L’addon terminal officiel de homeassistant est bridé et les commandes sont limitées.

2. Via la commande `docker exec -it homeassistant bash`, j’ai lancé un bash sur le container de homeassistant.

3. J’ai copié le fichier `/usr/local/lib/python3.10/site-packages/py_agua_iot/init.py` dans /config (un dossier accessible à la plupart des containers). J’ai modifié ce fichier via file editor en corrigeant le nom de la clé et je suis retourné dans mon bash le copier de nouveau dans le container de home assistant via `cp /config/ __init__.py /usr/local/lib/python3.10/site-packages/py_agua_iot/ __init__.py; chown root:root /usr/local/lib/python3.10/site-packages/py_agua_iot/ __init__.py; chmod 644 /usr/local/lib/python3.10/site-packages/py_agua_iot/ __init__.py`

4. Il ne te reste plus qu’à redémarrer homeassitant.

⚠ Je le répète encore, ce n’est pas une solution propre surtout qu’à la prochaine mise à jour de home assitant core, le fichier **init**.py sera écrasé… Normalement, le mieux à faire est de publier ça dans le github de homeassistant mais je n’ai pas encore les connaissances nécessaires. Dans ce cas et dans mon cas, il faudrait aussi s’assurer d’abord d’avoir affaire à mon poêle nobis (avec un if) avant de modifier la clé temp\_air\_get

---

<div class="post-metadata">

**Author:** ![Thomas\_S](https://forum.hacf.fr/user_avatar/forum.hacf.fr/thomas_s/32/21708_2.png) [@Thomas\_S](https://forum.hacf.fr/u/Thomas_S)\
**Post date:** [Février 10, 2023, 8:19 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/7 "2023-02-10T08:19:24Z")

</div>

Bonjour,

D'abord un grand merci pour ton partage , j'ai réussi à récuperer le "climate" de mon poele mais il va me rester encore du chemin pour pouvoir essayer de le contrôler d'avantage:

Pour information j'ai réussi ta procédure cependant j'ai du trouver les syntaxes compte tenu que je n'ai aucune notion de language informatique, voilà comment je m'y suis pris :

> ~docker exec -it homeassistant bash  
> bash-5.1# #  
> ~docker cp homeassistant:/usr/local/lib/python3.10/site-packages/py\_agua\_iot/ **init**.py /config  
> "J'ai ensuite ouvert et modifier le fichier dans le file editor"  
> ~docker cp /config/ **init**.py homeassistant:/usr/local/lib/python3.10/site-packages/py\_agua\_iot/ **init**.py

Et je me retrouve avec mon entité climate, cependant il va encore falloir creuser pour trouver toutes les autres informations que je peux remonter du module Agua :

 ![image](https://forum.hacf.fr/uploads/default/original/3X/b/f/bfbadd6bde5d3bc409ea02f3b32dee695f811845.png)

Merci pour ton aide, cordialement,

---

<div class="post-metadata">

**Author:** ![polooo](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/cdc98d/32.png) [@polooo](https://forum.hacf.fr/u/polooo)\
**Post date:** [Février 10, 2023, 4:00 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/8 "2023-02-10T16:00:52Z")

</div>

Bonjour,

Bravo pour la manip' mais n'oublie pas qu'à la prochaine mise à jour de ha core, il faudra recommencer...

De mon côté, je suis en train de tester l'intégration de nouveaux contrôles et capteurs. Si ça se concrétise, je publierai une nouvelle version de l'intégration mais je n'ai malheureusement pas beaucoup de temps à disposition.

 ![image](https://forum.hacf.fr/uploads/default/original/3X/1/4/14d9a158b316dc6549ba24be82303b43459066cc.png)

---

<div class="post-metadata">

**Author:** ![thetux](https://forum.hacf.fr/user_avatar/forum.hacf.fr/thetux/32/23734_2.png) [@thetux](https://forum.hacf.fr/u/thetux)\
**Post date:** [Mars 8, 2023, 9:31 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/9 "2023-03-08T09:31:39Z")

</div>

bonjour,  
j'ai forké le git pour faire une installation pour les poeles Nobis est en FR si ça interesse encore quelqu'un:

`https://github.com/thetux07/py-agua-iot`

 ![image](https://forum.hacf.fr/uploads/default/original/3X/5/f/5f1f36022ed7166d9398e796c0126b1540b37749.png)

---

<div class="post-metadata">

**Author:** ![Gauthier\_Crepel](https://forum.hacf.fr/user_avatar/forum.hacf.fr/gauthier_crepel/32/29852_2.png) [@Gauthier\_Crepel](https://forum.hacf.fr/u/Gauthier_Crepel)\
**Post date:** [Avril 27, 2023, 2:41 UTC](https://forum.hacf.fr/t/integration-py-agua-iot-comment-acceder-a-usr-local-lib-python3-10/20393/10 "2023-04-27T14:41:04Z")

</div>

Bonjour tout le monde,

J'ai également un poêle Ravelli avec le module Micronova T009.

J'ai bien réussi à connecter l'intégration en entrant mes identifiants. Mon entité Climate est bien créée avec la possibilité de définir la température cible, la puissance de la ventilation, Allumer/Eteindre le poêle. Cependant, il me manque des infos, je n'ai aucun retour de la température de la pièce. Secondaire j'aimerais connaitre l'état des alarmes...etc.

 ![image](https://forum.hacf.fr/uploads/default/original/3X/1/5/1537d54992aa35ea9ed75c32b1e4a90ec22accc9.png)

Je ne sais pas vraiment comment analyser les logs, et je n'y connais pas grand chose en python et en API Rest.

J'aimerais à minima pouvoir récupérer cette donnée de température, sachant que sur mon appli téléphone elle est bien présente.

J'ai vu dans la doc ces lignes, mais je ne sais pas du tout les mettre en application et ou les insérer :

```auto
# Print the current air temperature for each device
for device in connection.devices:
  print(device.name + ": " + str(device.air_temperature))

```

Si quelqu'un d'un peu plus calé que moi pouvais me venir en aide. Je crois qua ça servirait à bien du monde.

Merci par avance,  
Cordialement,

Gauthier
