Étrange, chez moi ça marche bien. Si j’allume ou éteins le thermostat et redémarre, il reste bien dans l’état où il était juste avant le redémarrage.
Vérifie si tu n’as pas une automatisation ou un scheduler qui réinitialise l’état du thermostat au démarrage.
Je viens de refaire le test. Quand HA redémarre il passe en OFF systématiquement.
Aucun scénario d’actif.
Ma config
climate:
- platform: smart_thermostat
name: Smart Thermostat Salon
unique_id: 7006a570-4bea-40f2-85f2-c4f9d0dd38eb
heater: switch.chauffage_sol
target_sensor: sensor.air_monitor_temperature
min_temp: 7
max_temp: 23
ac_mode: False
target_temp: 19
keep_alive:
seconds: 60
away_temp: 14
kp: 40 #10.699491 essayé mais pas conculant car dépassement
ki: 0.007 # 0.011888
kd: 2400 #2407.385475
ke: 0.6 # pour l'exterieur
pwm: 00:20:00
#difference: 50 # limite le rapport cyclique à 50% soit pas plus de 10 min
outdoor_sensor: sensor.temperature_sht35
debug: true
min_cycle_duration: 60 # 60 secondes minimum pour un état donné. Evites que le relais soit allumé moins d'une minute.
# le thermostat peut etre utilisé en manuel pour d'autres choses
force_off_state: false
# remplace le parametre difference
output_max: 100
out_clamp_high: 50
Tiens je viens de voir ça dans les logs si ça peut aider
Enregistreur: homeassistant.components.climate
Source: helpers/entity_platform.py:580
intégration: Thermostat ([documentation](https://www.home-assistant.io/integrations/climate), [problèmes](https://github.com/home-assistant/core/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+climate%22))
S'est produit pour la première fois: 23:04:02 (1 occurrences)
Dernier enregistrement: 23:04:02
Error adding entity climate.smart_thermostat_salon for domain climate with platform smart_thermostat
Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 580, in _async_add_entities await coro File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 881, in _async_add_entity await entity.add_to_platform_finish() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1333, in add_to_platform_finish await self.async_added_to_hass() File "/config/custom_components/smart_thermostat/climate.py", line 449, in async_added_to_hass self.set_hvac_mode(old_state.state) File "/config/custom_components/smart_thermostat/climate.py", line 696, in set_hvac_mode self._min_out = self._output_clamp_min ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 328, in __getattribute__ return super().__getattribute__(__name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'SmartThermostat' object has no attribute '_output_clamp_min'. Did you mean: '_output_clamp_high'?
Ah mais oui, j’suis con, c’est la beta qui déconne. Forcément, en faisant les choses à l’arrache…
Je n’ai accès qu’à mon téléphone et ne peut pas faire de tag et de release propre. Mais si tu peux aller editer le fichier climate.py dans ton dossier config/custom_components/smart_thermostat/
Tu trouveras le bug aux lignes 696 et 701. Modifie-le comme indiqué dans ce commit puis redémarre :
C’est bon ! Merci
Sinon est ce que c’est normal que mon PID-D dépasse les 100% ?
PS : ne prends pas en compte le dépassement de la consigne… C’est naturel… baie vitrée plein sud
Oui, c’est normal, les P, I et D ne sont pas limités, seule la somme des trois est limitée selon le paramétrage du thermostat. Ainsi si la température chute très vite, le D peut devenir fortement positif et compenser P et I pour quand même allumer le chauffage et anticiper le besoin de chaleur pour ne pas trop descendre sous la consigne.
Mais tes courbes montrent bien la nécessité d’ajouter un filtrage sur D pour qu’il soit plus lisse et ne fasse pas que ces pointes. Mais ça demande plus de temps de développement que je ne peux en dégager pour le moment.
Nouvelle beta disponible pour test avec la limitation de la plage de sortie du PID et le support de plusieurs entités à la fois sur un seul thermostat (genre trois valves de radiateurs dans une même pièce).
Salut,
Merci pour ce thermostat, j’avais justement peur de ne pas retrouver une solution de chauffage aussi complète que sur Jeedom, grâce à toi c’est chose faite !
J’aurai deux petites questions pour mon intégration :
- Pour contrôler mes radiateurs par Fil Pilote, j’utilise des relais Shelly 1 avec une diode, de ce fait le relai fermé (ON) correspond à un radiateur éteint, et le relai ouvert (OFF) au mode confort. J’ai vu dans ta documentation une option pour cela, j’ai donc ajouté le paramètre
invert_heater: true
à ma configuration, mais apres plusieurs essais je n’arrive pas a obtenir un allumage de mon radiateur, existe t’il une autre configuration particulière pour cela ? Comme je débute sur HA j’ai peut être loupé quelque chose.
Voici mon réglage pour l’instant (le PID n’est pas encore configuré car je n’ai pour l’instant aucune idée des réglages a adopter, j’irai a tâtons au retour de l’hiver pour tester) :
climate:
- platform: smart_thermostat
name: Thermostat Salle de Bain
unique_id: thermostat_sdb
heater: switch.radiateur_salle_de_bain
invert_heater: True
target_sensor: sensor.thermometre_sdb_temperature
outdoor_sensor: sensor.chateaubernard_temperature
min_temp: 7
max_temp: 24
ac_mode: False
target_temp: 17
keep_alive: 60
away_temp: 15
kp: 100
ki: 0
kd: 0
ke: 0
pwm: 00:15:00
force_off_state: True
eco_temp: 17
comfort_temp: 19
boost_temp: 21
sensor_stall: 00:30:00
- Ma seconde question concerne les fenêtres, est il possible d’intégrer une détection de fenêtre/porte ouverte, et de gérer le thermostat en fonction, ou est il préférable de passer par une automation pour cela?
Merci encore pour ton travail, et bonne soirée !
Après vérification, je pense que ca vient d’une erreur de configuration de ma part, même lorsque je passe en mode chauffage, et que je règle la température au maximum dans les bornes définies, le thermostat affiche « inactif », ou alors c’est parce que la température intérieure / extérieure est jugée trop élevée ?
Salut. Je ne vois pas pourquoi ça ne fonctionne pas. Tout semble OK dans l configuration. As-tu attendu quelques minutes pour voir si ça se déclenche ? Le fonctionnement par PWM implique une alternance de périodes off puis on. Le thermostat peut parfois nécessiter une mise à jour de la part des capteurs pour s’initialiser correctement.
Le mieux serait d’activer les logs et voir dans les journaux ce que l’intégration renvoie.
Etrange, j’ai réessayé quelques jours plus tard avec les mêmes paramètres, et cela fonctionne, merci !
Hello
Retour de l’hiver et du chauffage
Pour peauffiner les réglages PID et les soucis cet hiver sur le PWM et les modifs que tu avais fait sur les output_xxx
Est ce que la doc est à jour sur le git ?
Sinon une question.
Le thermostat est réglé à 20 là.
A quoi sert le param target_temp dans la conf qui est à 19 chez moi? Je n’ai pas bien saisi.
Du coup la température cible est celle réglé sur le thermostat dans lovelace ou le target_temp ?
Merci
La target_temp
c’est la température à l’initialisation du thermostat, lorsque HA ne peut récupérer aucun état depuis sa base de donnée.
Bonjour,
J’ai longtemps cherché ce type de thermostat il y 6 ans, 5 ans, 4ans… m’étant fait ma propre gestion sous nodered j’avais laissé tomber.
J’ai une chaudière pour chauffage central dont j’ai désactivé le satellite pour une gestion en contact sec et des capteurs Zigbee SonOff(plus réactifs comparés à mes anciens Aqara mais toutes les 30min tout de même) dans à peu près toutes les pièces + extérieur.
En région parisienne, ma maison a 1 siècle et possède des murs en pierre + platre sans isolation extérieure ni interieure sinon dans 2 chambres refaites à neuf, l’intertie est très forte et le confort de chauffage n’est pas extra du fait des effets yoyo(mais bien mieux que du temps où on gérait le chauffage avec le satellite Frisquet).
Ma gestion actuelle sous Nodered me permet de définir différents schedulers(home/away/absence courte) par saisons et chaque scheduler possèdent des tranches horaires avec sa température cible et le capteur de référence associé.
Ex: Scheduler Home, du lundi au dimanche 7h à 17h : 19.5°C sur référence salon, puis boost de 17h à 20h à 19.9 sur salon, puis 18.6 de 20h à 6h sur référence du capteur de la chambre de ma fille qui a le plus de déperdition(exposition Nord + 2 fenetres)
Mon flow NodeRed est plutôt bien fait avec interaction avec thermostat générique sur HA/Lovelace mais je cherche aujourd’hui à simplifier mais surtout à améliorer ça pour retrouver plus de confort, donc un grand merci @ScratMan pour ce composant !
Ci dessous un graphs des températures sur 3j:
Et
sur la journée avec le temps effectif de chauffe en orange:
Donc ci dessous une liste de que je pense avoir compris des choses de cette grosse heure de lecture des plus intéressante mais chaque item me renvoi à une question ou deux :
-
Je vais devoir changer de capteurs pour la/les pièce(s) de référence pour avoir un polling lpus court(ex esp32 + sonde précise). Pour autant est-ce un prérequis strict à un démarrage ou puis déjà me contenter d’une actualisation toutes les 30min ?
-
Une consigne qui varie pose problème donc mon système actuel de multiples capteurs de référence risque aussi de poser soucis. La gestion par PID ne permet-elle pas de légères tolérences, disons <= à 1°C et si oui quelle en serait la limite max de variation possible ? Est-ce à dire que le composant thermostat généric dans lovelace ne doit plus être utilisé pour faire varier la consigne(madame ne va pas être contente…) ?
-
Quid sinon de mettre en oeuvre 1 smart thermostat par pièce/capteur de référence et de les activer/désactiver sur une logique de scheduler ?
Niveau config, en ayant essayé de synthétiser si je ne me trompe pas je devrais avoir qq chose comme ça(les constantes pid restent je vais essayer de les définir avec l’autotune en debug car le calcul manuel m’a un peu rebuté en lecture et j’ai pas tout capté du coup):
heater: switch.switch_chaudiere
debug: true
target_sensor: sensor.salon_temperature
outdoor_sensor: sensor.temp_ext
min_temp: 10
max_temp: 23
ac_mode: False
target_temp: 19.5
away_temp: 15
sleep_temp: 17.5
eco_temp: 17
comfort_temp: 20
home_temp: 19.5
target_temp_step: 0.1
precision: 0.1
keep_alive:
seconds: 60
kp: 50
ki: 0.01158056
kd: 0
ke: 0
pwm: 00:15:00
min_cycle_duration: 00:04:00
min_off_cycle_duration: 00:10:00
sampling_period: 00:02:00
sensor:
- platform: template
sensors:
smart_thermostat_output:
friendly_name: PID Output
unit_of_measurement: "%"
value_template: "{{ state_attr('climate.salon', 'control_output') | float(0) }}"
smart_thermostat_p:
friendly_name: PID P
unit_of_measurement: "%"
value_template: "{{ state_attr('climate.salon', 'pid_p') | float(0) }}"
smart_thermostat_i:
friendly_name: PID I
unit_of_measurement: "%"
value_template: "{{ state_attr('climate.salon', 'pid_i') | float(0) }}"
smart_thermostat_d:
friendly_name: PID D
unit_of_measurement: "%"
value_template: "{{ state_attr('climate.salon', 'pid_d') | float(0) }}"
smart_thermostat_e:
friendly_name: PID E
unit_of_measurement: "%"
value_template: "{{ state_attr('climate.salon', 'pid_e') | float(0) }}"
Ca semble correct ou j’oublie des choses ?
Merci encore pour ce travail et ce composant qui promet des jours plus agréables chez soi, et merci d’avance si vous avez les réponses à mes questions.
Salut.
Pas obligé, mais effectivement c’est mieux d’avoir un retour de température plus fréquent mais surtout RÉGULIER ! Si le capteur ne renvoie plus rien pendant 3h parce que la température n’a pas changé, ça fout la merde dans les calculs.
Perso j’utilise des capteurs de température et humidité Popp « Mold Detector » en ZWave. On peut les configurer pour renvoyer régulièrement une mesure quoi qu’il arrive, c’est nickel. Le ZWave est un peu cher comparé au Zigbee, mais souvent c’est bien plus élaboré. Y’a les même fonctions sur les capteurs d’ouverture Fibaro FGDW002 par exemple.
Alors non, ce n’est pas un problème d’avoir une consigne qui varie, c’est juste que ça oblige à faire un choix et des compromis, selon l’inertie du système de chauffage. J’utilise des steps de +4°C dans ma salle de bain sur un sèche serviettes électrique, ça marche très bien. Mais si tu veux une température stable en régime établi sur un système lent, tu auras une montée en température un peu lente au moment du step ; si tu veux que ça aille plus vite tu devras supporter un peu d’overshoot au début du step et un peu plus d’amplitude d’oscillation en régime établi.
Faut trouver le compromis qui te convient le mieux.
C’est l’idée, un thermostat = un capteur = un système de chauffage (genre le ou les radiateurs électriques dans la pièce du thermostat, ou une ou des vannes sur un radiateur à eau chaude). Ensuite si c’est une chaudière centrale qui fournit toutes les pièces, on met un relais piloté par un « ou » logique de chaque système de chauffage. Si l’un a besoin de chauffer, on l’allume, sinon on l’éteint.
Pour l’autotune, je conseille pas, je n’ai jamais eu de retours de personnes chez qui ça ait marché.
Est il également possible de régler une Target Temp dans la configuration depuis l’UI ? Car quand je recharge le thermostat il démarre a sa température minimale, j’aimerais pouvoir le régler a 18 par exemple.
Est-ce que la config depuis l’UI génère un fichier de config quelque part ? je n’ai pas pu le trouver.
En tout cas je suis vraiment très satisfait du résultat, maintenant que j’ai réglé le TPI correctement, même sur de longues périodes la température de la pièce reste vraiment très stable, avec des deltas de température de l’ordre de +/- 0.1°c sur tous mes thermostats !
Je pense même que mon capteur à 2 décimales trompe parfois le système a cause des micro changements, je vais voir si je ne peux pas faire un arrondi a une décimale pour quelque chose d’encore plus lisse.
Théoriquement, lors d’un redémarrage le réglage de température est restauré depuis la base de données. Ca fonctionne au reboot de HA ?
Au redémarrage oui, mais après les dernières mises a jour, après le redémarrage j’ai du manuellement recharger les thermostats dans la configuration (sinon ils restaient a « inactif » et la modification de température cible et de mode était impossible) et a ce moment là ça repart avec une consigne à 7°c
Pour l’arrondi de mes valeurs en revanche je n’ai pas trouvé de solution simple, je me contenterai de ça c’est déjà largement mieux que le thermostat intégré aux radiateurs
C’est quoi la configuration ? c’est sur une/des vanne(s) ou un switch ?
Merci pour ce retour super rapide !