Smart Thermostat - le chauffage contrôlé par PID

Bonjour à tous,
Merci ScratMan pour le travail sur ce plugin, c’est vraiment top !

je migre doucement de mon installation jeedom vers home assistant et je suis souvent perdu.

j’ai mis en place un 1er thermostat dans ma sale de bain dont le petit sèche serviette est piloté par un relais (sonoff pow), pas de problème pour l’entité heater puisque c’est un toggle switch ON/OFF.

Mais maintenant j’aimerai piloter les radiateurs de mes 3 chambres avec des modules fil pilote zigbee de ce type : ADEO SIN-4-FP-21_EQU control via MQTT | Zigbee2MQTT
c’est là que je sèche…
comment configurer mon entité heater de manière à ce quelle puisse switcher entre son mode « comfort » ou « stop ».

je ne comprend pas dans la doc du plugin comment configurer ça.
dois-je passer par une entrée crée manuellement ?

merci d’avance.

C’est ce que je fais dans ma salle de bain. J’ai créé un input_boolean dans lequel mon thermostat envoie les commandes on/off, et j’ai une automatisation qui, à chaque changement de cette input, fait basculer mon fil pilote entre confort et hors-gel.

Parfait, merci de la réponse, c’est donc bien ce que je pensais.

J’avais fait ça :

- platform: template
  switches:
    pilot_wire_1:
      friendly_name: 'Convecteur : Salle de Bain'
      value_template: "{{ is_state('switch.shelly1_f39b46', 'off') }}" # fake switch is on when real switch reports off, and vice versa
      turn_on:
        service: switch.turn_off
        data:
          entity_id: switch.shelly1_f39b46
      turn_off:
        service: switch.turn_on
        data:
          entity_id: switch.shelly1_f39b46
1 « J'aime »

Merci aussi, ce système avec appel aux services c’est plutôt pour activer ou désactiver l’entité climate du smart thermostat elle même non ?

Non, c’est pour faire un switch qui fonctionne à l’envers, utilise pour commander un fil pilote avec une diode ou il faut passer en ON si on veut passer OFF le convecteur…

Il y a plein d’articles sur ce sujet ici, par exemple : Chauffage electrique avec ou sans fil pilote

Merci @mycanaletto pour la précision.
Je reviens à l’attaque, j’aimerai appliquer un smart thermostat à un humidificateur d’air.

à priori, je me dis que le concept est totalement identique, seules les valeurs changent.
je suis en cour de test et je n’ai pas encore de retour sur l’efficacité du truc mais je note déjà une paire de soucis (dont un qui n’en est pas vraiment un)

ma config :

  - platform: smart_thermostat
    name: Humidifier Nous
    unique_id: smart_humidifier_nous
    heater: switch.0xa4c138711e0148f9
    target_sensor: sensor.humidity_158d0002391d90
    min_temp: 35
    max_temp: 65
    min_cycle_duration: 60
    ac_mode: False
    target_temp: 50
    cold_tolerance: 1
    hot_tolerance: 1
    keep_alive:
      seconds: 60
    kp: 5
    ki: 0.01
    kd: 500
    ke: 0.6
    pwm: 00:10:00
    away_temp: 35 # commented out or set to 35
    eco_temp: 45
    comfort_temp: 50
    boost_temp: 55

1 - que je paramètre ou non une valeur away_temp j’ai toujours un mode absent à 14,
est ce normal ? car je lis dans la doc que si non spécifié, le away_mode ne devrait pas être disponible.

2 - l’historique veut me m’afficher des valeurs en °C et comme mon sensor est une % d’humidité, évidement il reste à 0 :

Pouvez vous me dire s’il est possible de forcer une unité ? avec un input peut être ?
// Réglé avec un template

Je suppose que le composant s’appuie sur un climate HA standard et qu’il est donc impossible de le génériser au point de le faire fonctionner autrement qu’avec des températures ? ou est-ce possible ?
ce serait super puisque les PID peuvent s’appliquer à autre chose que les températures.

merci par avance et bonnes fêtes.

Le système est déclaré comme faisant partie du domaine climate de HA, du coup l’unité est forcée sur l’unité de température du système (°C ou °F).
Pour le mode absent, le preset est peut-être forcé par la classe climate dont le smart thermostat hérite.

Il vaudrait peut être mieux utiliser un hygrostat … (intégré ou via une intégration)

Bonjour à tous
Lu pas mal de chose ici et sur les posts de @ScratMan
J’ai actuellement un thermostat Secure Zwave qui n’est je pense pas complètement PID et réglé sur le parametre inertie le plus fort mais qui fonctionne tout de meme pas trop mal.
J’ai environ 1° ou max 1,5° d’ecart entre le min et le max. Donc 0.7° autour de la consigne.
Mon plancher chauffant est electrique a tres forte inertie. Au minimum 1/2j pour montée en temperature…
Particularité les jours rouge edf je baisse la consigne de 1°. Pas sur que ca soit une bonne chose car le temps de remontée est tres long apres. C’est difficile a dire car la journee le soleil tape sur les vitres et ca chauffe…

Est ce que selon vous je peux ameliorer en passant sur ce thermostat PID ?
Y a t il des cas sur du plancher chauffant elec avec des ecarts types ou des exemples de courbes. Je n’en ai pas trouvé .

Mon objectif et double ameliorer le confort pour que la temperature soit la plus constante possible et voir si je peux economiser quelques sous EDF avec une regulation
plus constante.
Voici une petite courbe .
On voit pas sur le graph mais c est bien du PWM. La largeur des periodes varie mais peu…

Et la en orange la moyenne de la puissance du plancher chauffant avec en orange plus clair les puissances max.
On voit tout de meme bien la variation sur la courbe de moyenne de la puissance du plancher chauffant

Merci

Ca ressemble à du PI, tu devrais pouvoir gagner en stabilité en utilisant le PID.

Pas sûr par contre que tu puisses économiser sur la facture d’électricité. Personnellement je n’ai pas vu d’évolution sur ma conso de gaz lorsque j’ai mis en place le PID sur mes radiateurs, par contre niveau confort c’est le jour et la nuit.

Merci pour ton retour.
Allez on va le tester.
Tiens voici qq courbes plus explicites.
A ton sens, la précision des sondes temperatures sont elles assez bonnes ?
J’ai une Oregon RFXCOM et un Aqara Airmonitor Zigbee

Du coup j’ai regardé ton post sur le réglage manuel, pour choisir les bons diviseurs comment fais tu pour choisir la bonne méthode @ScratMan ? Il y a 6 ou 7 méthodes différentes
Est ce que la ziegler-nichols est celle par défaut ?

L’important c’est que les sondes aient des retours de température réguliers.si elles passent des heures sans envoyer de mesure, ça peut perturber les calculs. Les miens renvoient une mesure toutes les 15mn, qu’elle ait bougé ou non ; c’est pas mal.

Pour la règle de calcul de l’autotune, la Ziegler-Nichols est un bon compromis.

Ta courbe est intéressante, on dirait que la puissance de chauffe du plancher est modulée dans le temps, mais la logique derrière semble étrange. En tout cas, ça confirme qu’il n’y a pas de dérivée, ou alors qu’elle est mal gérée, on le voit bien le 25 février entre 4:00 et 8:00, la température se met à monter très vite avant 4:00 mais le thermostat (ou le plancher lui-même ? ) augmente quand même la puissance au lieu de la réduire. Du coup, ça dépasse fortement la consigne.

Un point me chiffonne quand même, je vois que le plancher est déjà piloté par une modulation on/off à 50/50, avec 6 périodes en 2h soit une période PWM de 20mn.
La question est « qui gère cette modulation » ?
Est-ce le thermostat directement qui fait ça ? Ou bien le thermostat pilote-t-il un système de contrôle en on/off et le système de contrôle module la puissance et la modulation on/off du plancher chauffant pendant la période de chauffe demandée par le thermostat ?
Parce que si tu mets directement le smart thermostat sur le relais du plancher chauffant, avec un PWM à 20mn, si le PID dit qu’il faut 100% de puissance, tu vas avoir un plancher allumé en permanence, est-ce que ça ne risque pas de le faire surchauffer ?
Si ton thermostat pilote un système de contrôle qui gère la puissance et la modulation PWM, alors y’aura pas de souci.

Actuellement c’est le thermostat Secure. Il pilote directement un relais Zwave. Il n’y a pas d’autres intéraction et pas d’autres intelligence.
Je ne sais pas répondre à ta question…
Le thermostat actuel Secure Zwave ne met jamais 100% en continu. J’ai effectivement vu le PWM à 20 min mais sur cette plage, il y a jamais de 100% ON. Même quand l’écart avec la consigne est important. Je pense de mémoire qu’au mieux il doit etre ON pendant 50% de la plage de 20min.

On voit mieux ici ou j’ai rajouté directement la courbe de mesure de puissance avec une torre

Est ce que le parametre keep_alive ne sert pas justement à appliquer la largeur de l’impulsion ON par rapport au PWM ?
Et justement ces 2 parametres ne permettraient ils pas de protéger

  • min_cycle_duration
  • min_off_cycle_duration

Après c’est sur que je pense que le plancher chauffant ne doit pas etre sur ON en permanence pour la montée en température, même ne serait ce qu’une heure.

EDIT : je confirme, PWM 20 min sur mon thermostat. Sur cette période de 20 min, il n’est jamais à ON plus de 10 min consécutive. Je pense qu’il faut en déduire que quand on lui demande 100% de puisance, ça équivaut à 10 min ON et 10 min OFF.
J’aurais donc tendance à mettre ces parametres

  • pwm : 20m
  • min_cycle_duration: 0m
  • min_off_cycle_duration: 10m

Mon raisonnement est il bon ?

Autre question, quand tu donnes l’exemple ci dessous

Exemple avec les mesures que @lulakhub m’a fournies:
Amplitude de l’oscillation `Yosc = 2.1°C`, période de l’oscillation `tosc = 10200 secondes`.
Selon Ziegler-Nichols on a donc :
Ku = 8 * 100 / (2.1 * pi) = 121.261
Kp = 121.261 / 34 = 3.567
Ki = 3.567 / (10200 / 40) = 0.01499
Kd = 3.567 * (10200 / 160) = 227.396

pi c’est quoi pour calculer le Ku ?

Le keep_alive sert à contrôler la réactivité du thermostat et assurer que le module de contrôle soit bien dans l’état attendu (on ou off). Sur un PWM de 20mn, mieux vaut rester sur 1mn

Au vu de la courbe de puissance consommée par le plancher, alors oui, il module. Du coup j’ai l’impression que la hauteur des barres oranges correspond au rapport cyclique du on/ff, non ?

Je pense qu’il serait pas mal de limiter de la même façon la puissance, dans un premier temps, afin d’être sûr de ne pas faire surchauffer le plancher (vu les désagréments que ça cause). Il faudrait d’ailleurs s’assurer que le plancher dispose bien d’une sécurité pour ne pas faire monter la température trop haut en surface du sol (par exemple les chaudières alimentant un plancher chauffant doivent limiter la température de l’eau à 40°C max, et une sonde de sécurité vient couper le circulateur si l’eau est au delà de cette limite).

Il y a un paramètre difference qui n’est plus documenté mais qui existe encore, et qui te permettra de limiter le rapport cyclique max. Dans ton yaml, mets:

difference: 50
pwm: 1200
keep_alive: 60

Ca devrait te permettre de reproduire le même comportement que ton thermostat actuel.

pi, c’est la constante pi = π = 3.14159265359, comme dans 2π

Ah ok pour le pi, j’avais pas fait le rapprochement.
Du coup je laisse tomber le min_off_cycle_duration ?
Ca ressemble à ce que tu me dit du coup pour regler le rapport cyclique
Pourquoi difference n’est il plus documenté ? des chances qu’il disparaisse ?

Concernant les barres Orange, je ne sais pas te dire. Mon thermostat actuel Secure est vu comme un climate dans HA. le haut de la barre correspon à la temperature effective du thermostat (pas la consigne), et le retour n’est pas régulier. Je pense donc qu’il ne faut pas tenir compte de la hauteur de ces barres mais surtout de leur largeur, le rapport cyclique quoi !

Concernant la protection, il n’y en a pas. Le contacteur de puissance est directement sur les résistances chauffantes.

Avec tes calculs, j’obtiens ça. Attention mon Tosc est très long : 10h, même 13h parfois, à priori vu l’inertie de la dalle
Ku = 363.782
Kp = 10.699491
Ki = 0.011888
Kd = 2407, 385475

Ca te parait correct ?

Ah oui, OK, la hauteur des barres est gérée par HA, mais ça va à la température mesurée par le thermostat, qui n’est pas affichée. Elle semble effectivement mise à jour assez lentement comparé aux deux autres capteurs.
Je te recommanderai d’utiliser le capteur nommé « Température » dans tes courbes (le Aqara je suppose) comme référence de ton Smart Thermostat, il m’a l’air plus stable.

Ca me paraît pas déconnant.

C’est parti. Y a plus qu’à attendre.
Combien de temps il faut pour qu’il s’auto apprenne ? OU que la régul commence à faire effet ?
La ma consigne est à 19. Il fait 19,1 et il a toujours pas lancé le switch.
J’en ai profité pour rajouter le capteur outdoor avec le Ke à 0,6.

Est ce que le fait de redémarer HA modifie le comportement du thermostat ? Ou redémrre son cycle d’apprentissage ?

Si tu as déjà calculé tes gains à la main, ne le lance pas en auto-tune, d’expérience c’est beaucoup trop long sur un plancher chauffant.
Et malheureusement les gains ne s’ajustent pas tout seuls, il n’y a pas d’apprentissage. Il faudra corriger tes gains à la main en fonction du comportement du thermostat.

1 « J'aime »

Oui c’est ce que j’avais lu. J’ai pas utilisé l’autotune.
Je vais attendre que ça commence à chauffer :wink:
Je ferais un point ce soir.

Mais je pense qu’il y a quand même une période d’apprentissage notament quand la température baisse afin qu’il anticipe la remontée en température…
La j’ai créé le thermosat alors que la température était en chute libre :wink: