the boiler app now use mqtt instead of relying on an automation on ha side

This commit is contained in:
Pierre committed 2026-10-10 16:19:37 +02:00
1 parent a2f40f81ba
commit 6447d754ca
8 files changed
+261 -77

No files matched your search

+43 -15
View File
@@ -1,23 +1,36 @@
# Chauffage radiateurs — AppDaemon et C6
L'app `radiator_heating` expose `climate.radiator_heating` par MQTT Discovery.
Les publications utilisent le service `mqtt.publish` de Home Assistant, comme
l'ancienne implémentation de SmartObject. Aucun identifiant MQTT supplémentaire
ni plugin MQTT AppDaemon n'est nécessaire.
La version MQTT directe utilise le plugin MQTT d'AppDaemon pour les publications
et les abonnements. Le plugin Home Assistant sert à lire les thermomètres.
Les commandes du climate et les retours C6 restent sur les mêmes topics.
## Configuration MQTT
Le plugin `MQTT` est configuré dans `appdaemon.yaml`, namespace `mqtt`.
Les identifiants du broker sont dans `secrets.yaml` (exclu de Git) et référencés
par `!secret`. Ils doivent être sauvegardés séparément pour une réinstallation.
Un redémarrage complet du conteneur/service AppDaemon est nécessaire pour charger
un nouveau plugin ; le rechargement des apps ne suffit pas.
Le climate et son watchdog exigent ce plugin. Les deux anciennes automatisations
Home Assistant ont été supprimées après vérification des commandes et de la
télémétrie en MQTT direct. Aucun relais MQTT dans Home Assistant n'est nécessaire.
## Fichiers
- `apps/boilerclimate.py` : MQTT Discovery, consigne, mode, mesures et commandes.
- `apps/boilerwatchdog.py` : surveillance indépendante du heartbeat.
- `apps/boilerregulator.py` : calcul indépendant de la température d'eau.
- `apps/global/heating.yaml`, bloc `radiator_heating` : paramètres actifs de l'app.
- `homeassistant/packages/radiator_heating_mqtt.yaml` : copie des deux
automatisations installées via l'API de configuration de Home Assistant.
Ne pas inclure aussi cette copie comme package : les automatisations existent
déjà dans Home Assistant. Leur modification dans cette copie ne les redéploie pas.
- `apps/global/heating.yaml`, blocs `radiator_heating` et
`radiator_heating_watchdog` : paramètres actifs des deux apps.
- `appdaemon.yaml`, plugin `MQTT` : connexion broker, abonnements et Last Will.
## Régulation
Avec S la consigne ambiante, Ti la température du couloir et Te celle de devant :
Avec S la consigne ambiante, Ti la température du couloir et Te la plus basse
des températures extérieures (`sensor.ext_front_temperature` et
`sensor.ext_back_temperature`, configurées dans `outdoor_sensors`) :
courbe = S + pente × (S − Te) + décalage
correction P = kp × (S − Ti)
@@ -42,7 +55,12 @@ Après arrêt, le redémarrage exige Ti <= S + 0,1 °C et une demande suffisante
Les gains sont des valeurs initiales à ajuster après les essais de circulation,
pas des coefficients identifiés pour cette maison.
Les deux capteurs doivent fournir des valeurs finies en °C, entre −40 et 60 °C.
Le capteur intérieur et les deux capteurs extérieurs doivent fournir des valeurs
finies en °C, entre −40 et 60 °C. Le minimum extérieur est recalculé à chaque
mise à jour de l'un des capteurs et à chaque cycle. L'attribut `outdoor_sensors`
liste les sondes utilisées et `outdoor_sensor` identifie celle sélectionnée.
Si l'une des sondes est invalide, le chauffage reste inhibé comme auparavant.
La configuration historique `outdoor_sensor` reste acceptée pour une seule sonde.
Une température inchangée, même ancienne, reste valide : ces sondes peuvent
ne publier qu'en cas de changement. Aucun délai sur l'âge de la mesure n'est
appliqué. Les états indisponibles/inconnus, les valeurs invalides et les unités
@@ -67,11 +85,21 @@ cette app, conserve les accents et le symbole °C.
- État et diagnostics : `appdaemon/radiator_heating/state` et `/attributes`.
- Chaudière : `themaplus-condens/bai/SetMode/set`.
L'automatisation de retour transmet les commandes MQTT et les retours chaudière
à l'événement `APPDAEMON_BOILER_MQTT`, écouté par l'app. Le watchdog marque le
climate indisponible après trois minutes sans heartbeat. Il ne commande PAS
la chaudière : il signale l'arrêt de l'app. Configuration et états sont retenus ;
les commandes utilisateur et chaudière ne doivent jamais être retenues.
Le plugin transmet les commandes MQTT et les retours chaudière à l'événement
`MQTT_MESSAGE` du namespace `mqtt`, écouté directement par l'app. Le watchdog
AppDaemon marque le climate indisponible après trois minutes sans heartbeat
(vérification toutes les dix secondes). Il ne commande PAS la chaudière.
Il utilise un worker distinct du climate. Il publie `offline` au démarrage et
après reconnexion tant qu'aucun heartbeat récent n'est arrivé. Seul le climate
publie `online`, selon la validité de ses mesures.
La disponibilité MQTT Discovery exige simultanément la disponibilité de l'app
(`/availability`) et celle de la connexion MQTT (`/connection`). Le plugin
publie `online` sur `/connection` à la connexion, et le broker publie `offline`
via le Last Will si cette connexion est perdue. Ce mécanisme ne garantit pas
une détection immédiate et ne coupe pas le chauffage. Configuration et états
sont retenus ; les commandes utilisateur et chaudière ne doivent jamais l'être.
Une reconnexion MQTT republie la découverte et renouvelle la commande.
`SetMode` est renouvelé chaque minute et lors d'un changement de demande.
Les retours de télémétrie ne renouvellent pas la commande. Un arrêt ordonné