Oui j'avais compris (de mon côté j'utilise un ESP8266 avec un programme bricolé qui envoie les informations sur un broker mosquitto (mqtt) via WiFi, avec l'avantage de pouvoir distribuer les données a plusieurs clients.
La question est: quelle interface utilisez vous ? Homewizard ? ESP32 ? adaptateur USB/série ?
De façon à pouvoir déterminer le type de module utilisé par HA pour récupérer les données du P1 (Websocket ? mqtt ? lecture série ?), une fois le module connu on peut déterminé si c'est une intégration ou un module complémentaire. La différence entre les deux ?
Une intégration est écrite en python et utilise les librairies homeassistant, c'est étudié pour comme qui dirait.
Un module complémentaire (Add-on) est une application extérieure indépendante de Homeassistant qui n'a pas besoin de HA pour faire son job.
Homeassistant peut être installé de 3 manières différentes:
- HAOS c'est un système complet (avec l'OS Linux) add-on services via le user interface et le mécanisme docker, HA tourne dans l'OS.
- HA avec superviseur utilise des dockers, and-on possibles mais c'est un truc batard, pas certain que ça existe toujours.
- HA container, (ou LXC sur proxmox) juste le docker HA, dans ce cas HA tourne dans un docker qui tourne lui même dans l'OS, comme le docker ne peut pas tourner d'autres dockers pas de add-on possibles car ceux-ci sont eux même dans des dockers.
Les intégrations tournent dans HA et donc sont toujours disponibles (code natif). On peut soi même rajouter des intégrations, celles-ci sont écrites en Python, HA fournit des librairies que l'on peut utiliser pour interagir avec e core HA.
Les modules complémentaires (add-on) ont leur propre code et les bibliothèques nécessaires au bon fonctionnement, prenons par exemple zigbee2mqtt qui est écrit en javascript et requiert node manager pour pouvoir s'exécuter, pour simplifier la vie des utilisateur on a tout mis dans un docker et donc c'est plus simple pour tout le monde.
Autre exemple, Mosquitto (broker mqtt) qui devrait être écrit en C ou C++, est aussi fournit pour HA dans un broker avec toutes les ficelles nécessaire à son exécution.
Et c'est pareil pour les autre, le Language utilisé n'est plus important car tout ce qui est nécessaire se trouve dans le docker.
Le gros inconvénient c'est qu'un docker ne peut pas faire tourner un autre docker, donc ceux-ci tournent en parallèle et pour communiquer avec eux il faut utiliser les mécanisme Unix de communication interprocess, en général on utilise la couche réseau pour des raisons de facilité. Quant à la communication entre les docker eux-même là on entre dans la science-fiction (c'est possible, mais à quel prix et pour quel avantage).
S'il faut tout mettre dans un docker alors autant créer une machine virtuelle qui sera elle beaucoup plus efficace au niveau exécution. Mais théoriquement cela devrait être possible (usine à gaz ?)