Smart Thermostat - le chauffage contrôlé par PID

Une pompe à chaleur ne se pilote pas en on/off, mais en modulation de puissance. De base le thermostat module via un PWM en faisant des on/off périodiques, mais ça n’est donc pas compatible. Sauf à pouvoir donner un pourcentage de puissance à la pompe à chaleur, et dans ce cas tu peux récupérer l’attribut control_output du thermostat qui correspond au pourcentage de puissance calculé par le PID.

Clair et précis :D. Je n’ai pas accès à un contrôle de puissance (température only);
Merci pour ta réponse.

Je vais m’en donc m’en tenir à une utilisation sur mes radiateurs

Hello @ScratMan !

Peut-on imaginer utiliser ton thermostat par PID avec un poêle à granulés dont on peut piloter :

  • l’allumage & l’extinction
  • la puissance (de 1 à 5)
  • les 3 ventilations (pièce principale + 2 zones), chaque ventilateur de 1 à 6

Hello @ScratMan,

Dit avec l’intégration native du « Scheduler » dans HA, tu pense que ce serait compliqué d’intégrée un mode temporelle dans ton thermostat ?

Le but serait d’anticiper automatiquement l’allumage du chauffage pour arriver à température à l’heure souhaité et ainsi éviter de devoir anticipé l’allumage des chauffages et potentiellement chauffer trop tôt ou trop tard :confused:

Je ne dit pas que c’est facile, mais ce serait tellement bon :stuck_out_tongue:

Hello, désolé pour les délais de réponse. Le développement est en pause pour le moment, il y aurait pas mal de choses à faire mais l’arrivée de bébé n°2 a fait disparaitre mon temps libre.

Ça devrait être possible, en utilisant le control_output comme réglage de la puissance et la force des ventilos, et si control_output > x% on met on le poêle et les ventilos en route. Après les poêles à granulés sont déjà des équipements évolués, je pense que c’est déjà très performant avec le thermostat d’origine, il faut peut-être juste régler les pentes de chauffe.

Je ne sais pas, je n’ai pas remis le nez dans le code depuis un moment donc difficile à dire si c’est faisable.

1 « J'aime »

Hello ! Pas de souci, et plein de bonnes choses avec bébé n°2 :wink:

Pour la gestion du poêle, j’ai mis en place (mais pas encore testé car les températures sont encore clémentes) le système suivant :

  • Thermostat simple_thermostat avec modes confort, éco, vacances actionnés par le Scheduler. Ce thermostat commande l’allumage / extinction du poêle, avec 30 minutes minimum de life cycle pour éviterdes démarrages / extinctions répétitifs.
  • Thermostat « PID » d’Argonaute ( Gestion de bout en bout du chauffage ) qui me sert à calculer une puissance de chauffe. La consigne de ce thermostat PID est changée via une automatisation qui paramètre la consigne selon la consigne du 1er thermostat simple_thermostat. La puissance du thermostat PID (entre 0 et 100%) permet via des automatisation de régler la puissance du poêle.
  • Comme j’ai 3 ventilateurs sur le poêle (et donc 3 zones de chauffe distinctes), j’ai 3 automatisations qui vont régler la vitesse des ventilateurs selon la température des zones.

C’est peut être un peu usine à gaz, mais sur le papier ça a l’air pas mal ! Reste à attendre les test en fonctionnement.

1 « J'aime »

Bonjour !

Merci pour ce superbe travail, j’ai profité pour tester en parallèle du TPI (sur deux pièces différentes).
Voici mon interface :
image

Je sollicite votre aide, j’aurai aimé que le mode en cours soit « coloré », j’ai essayé avec des custom:button-card, mais je n’arrive pas à identifié l’état du mode en cours. Est-ce que quelqu’un aurait déjà réussi quelque chose de similaire à ce que je recherche ?

Merci d’avance !

Dans le code de ton button card, a adapter, mais voici ce que j’ai fait pour ma clim:

styles:
  icon:
    - top: 0%
    - left: 1%
    - width: 35%
    - position: absolute
    - color: |
        [[[
          if (states['climate.sejour'].attributes.hvac_action == "cooling") return '#94EEF9';
          else if (states['climate.sejour'].attributes.hvac_action == "heating") return '#fdd835';
          else if (states['climate.sejour'].attributes.hvac_action == "fan") return '#fdd835'; 
          else if (states['climate.sejour'].attributes.hvac_action == "dry") return '#fdd835';          
          else return '#44739e';
        ]]]

Merci ! Je vais essayer d’intégrer cela dans mes button-cards.

EDIT : Voici le code au cas où

show_name: true
show_icon: true
type: custom:button-card
tap_action:
  action: call-service
  service: climate.set_preset_mode
  service_data:
    preset_mode: eco
    entity_id: climate.smart_thermostat_dressing
show_state: false
hold_action:
  action: none
icon: mdi:leaf
name: Eco
styles:
  icon:
    - top: '-5px'
    - color: |
        [[[
          if (states['climate.smart_thermostat_dressing'].attributes.preset_mode == "eco") return '#FF0000';
          else return '#44739E';
        ]]]
    - padding-bottom: 9px

Et le résultat quand le mode est activé :
image

Il ne reste plus qu’à trouver un jeu de couleur pour mettre en évidence le mode sélectionné.

Bonjour,
Je suis en plein test pour régler mes PID, mais j’ai un petit soucis,
voici ma configuration.yaml
image

On voit bien que le Kp est à 70 pour le climate chambre, mais lorsque je vais vérifier dans l’état :

Même après multiple redémarrage il ne change jamais de valeurs ici, je ne comprend donc pas ce que je fait de mal.

Une idée ?

Merci d’avance

Bonjour à tous,

Je vais tester ce thermostat: le PID me rappelle mes débuts en Industrie. :wink:

J’ai une question comment puis-je sortir les paramètres ki, kp et kp afin de leur donner faire varier leur valeur depuis l’interface ?

Merci par avance.
smilorel

Une fois que le système a démarré une fois, il ne lit plus Kp Ki Kd et Ke depuis la yaml
Donc tu peux modifier le yaml tant que tu veux, ça ne changera pas les valeurs, qui sont stockées dans HA
En fait, une fois démarrer, pour modifier les gains, tu vas dans Developper Tools → Services
Tu choisis le service smart_thermostat: Set PID gains
Ensuite tu choisis ton entité, puis tu coche le (ou les) gain(s) à modifier, tu tape la valeur, et puis le bouton « call service »

Même réponse pour aurelb87-smilorel au dessus :wink:

Pour ceux qui sont fainéants comme moi, un fichier XLS rapide qui permet de rentrer quelques valeurs de mesures d’oscillation, et donc calcule les résultats des autotune

Il suffit de mettre une température de consigne, faire un coup de

service: smart_thermostat.set_pid_mode
data:
  mode: "off"
target:
  entity_id: climate.ton_thermostat_pid

Ensuite, attendre quelques oscillations de la température, en dérangeant la pièce le moins possible. Dans mon cas j’ai même laissé les volets fermés.

Dans le fichier

  • Tup 1 et Tup 2 sont des heures à laquelle la courbe coupe la température de consigne en montant. Le Tup 2 de la première oscillation devient automatiquement le Tup 1 de la seconde
  • ymax et ymin sont les valeurs max et min mesurées sur la courbe de température
  • tosc et yosc sont calculés, puis il y a une moyenne sur les résultats. Ces valeurs seront utilisées dans les calculs de l’autotune

C’est très basique, mais bon, si ça peut éviter à quelqu’un d’autre d’avoir à refaire l’exercice

Vu que je suis une quiche en github, j’ai toujours pas compris comment on y héberge un fichier, donc je l’ai collé là: Free Transfert - Service d'envoi de fichiers

Si quelqu’un a une solution de stockage plus pérenne, aucun souci pour qu’il prenne le fichier et l’héberge ailleurs.

1 « J'aime »

Bonsoir
Le fichier n’est plus dispo mais je suis preneur
Merci

Bonsoir,
Je suis également preneur de ce tableau mais il n’est plus téléchargeable.
Merci en tout cas pour ton partage.

Bonsoir, pardon si cela est déjà dit plus haut.
J’ai fais l’installation du Smart Thermostat pour 2 zones et je voudrais tuner les Kp,Ki,Kd du coup j’ai déclenché un autotune sur une zone mais je ne vois ou récuperer son travail et sous quelle forme. Pourriez vous m’aiguiller un peu.
Cordialement.

@BugsBunny1403 La réponse a été apportée plus haut. (ICI) :wink:

@Yo_han Merci pour le lien. J’avais en effet vu ce message mais je ne trouve pas d’info dans les logs HA .
Je ne sais peut être pas bien cherché.

1 « J'aime »

Tu peux essayer de calculer les valeurs manuellement avec les explications fournies par ScratMan : ICI

Bonjour,

Je suis locataire dans une maison bien isolée, équipée d’un plancher chauffant hydraulique base température et d’une chaudière gaz.

La régulation se fait par sonde extérieure et loi d’eau + un thermostat d’ambiance Atlantic qui fonctionne en TOR (contact sec) avec une logique inconnue. Comme ce dernier ne prend pas du tout en compte l’inertie, j’ai des over/undershoot sur 1,5° d’amplitude (les « bons » jours sans soleil).

Puis-je m’attendre à mieux avec une régulation PID ? Je sais déjà que l’ajustement des paramètres n’est pas des plus aisés.