Tutoriel | Plugin thermostat pour poêle a granulés connecté

Bonjour @Pierrick,

Merci de ton retour. Je ne suis donc pas seul dans ce cas !
Je continue avec mes coefficients, qui me vont bien, ainsi que les coefficients en dur pour le smart start. Tu me fais penser qu’il faut que je garde le fichier en local pour réintégration de la ligne qui va bien à la prochaine mise à jour.

En effet, je n’ai pas encore été confronté à une consigne stop qui intervient peu de temps après la mise en route du poêle, mais ca devrait m’arriver…Malin cette idée de smart stop.
Je regarderai pendant les vacances si j’arrive à pondre une petite modif du plugin thermostat pour prendre en compte ce besoin, à première vue ca semble assez rapide à faire.

@nerull77
En effet, comme l’explique Pierrick, le but c’est de réchauffer rapidement la maison quand besoin, puis d’essayer ensuite de maintenir cette température. L’intérêt est assez visible sur ma capture de ce matin

Entre 5h15 et 6h15 il était en puissance maximale (enfin puissance 5 puis 4 puis 3) : J’ai pris 3,5 degré pour me rapprocher rapidement de la consigne. (de 17,0° à 20,4°)
A 6h15, il est à consigne - 0,6° et commence à bien réduire la puissance (puissance 1), ce qui lui permet d’atteindre tranquillement la consigne puis de la dépasser, mais de rester à puissance mini avec une chauffe constante (donc + agréable quand on se lève). Il se coupera à 7h45 avec 22°C.
J’ai donc pris 1,6°C en 1h30 vs 3,5° en 1h lorsqu’il est en puissance élevée.

Intéret: S’il était tout le temps à puissance faible, il lui aurait fallu trop de temps pour atteindre la température requise (grosso modo 5h pour prendre les 5°C du dessus). Au contraire, à puissance max il aurait pris les 5°C en 1h30, et ce serait tout de suite coupé → Moins confort

Si ca peut en aider certains, je peux vous transmettre les modifs à apporter au fichier thermostat.class pour prendre en compte les spécificités du poele :

  1. Modifier la durée du cycle pour le smart Start du poêle uniquement
  2. Empécher le poele de démarrer si une consigne inférieure à celle demandée est prévue dans les 60 min par le smart start. Pas de répercussion si le poele est déja démarré.

Ne connaissant pas les règles liées aux modifications du code d’un plugin officiel, ca se passera par MP (ou pas, si interdit)

L’idée du smartstop serait de définir une durée minimum.
Exemple: 60 minutes sur le smartstop,

c’est à dire si La puissance est supérieur à la puissance au démarrage mais que la durée du smartstop est inférieur au tps défini de 60 minutes, alors on interdit le démarrage.

Je pense qu’il faut déjà réglé le problème du smartstart. Si tu as une idée de calcul valable pour tous les cas de figure ?

Je pense qu’il faut le faire valider par la team, @Aurelien, @Salvialf.
Peut on proposer une modification du plugin concernant le smartstart et d’ajouter un smartstop?
Je suggère également si possible de pouvoir passer le tps de cycle min à 10 minutes au lieu de 15 minutes ?
Merci pour vos réponses

Nos messages se croisent …
Pour le smart stop, j’ai fais différemment (je crois) :
Si on demande au poêle de s’allumer avec une consigne, mais qu’une consigne inférieure est prévue dans les 60 prochaines minutes, on empêche le poêle de s’allumer.

Ex: Le poele est éteint avec 18°C. Il est réglé sur 20°C. Il va s’allumer car la puissance demandée le permet.
Sauf que vu que dans 50 min, une consigne smart schedule le fera passer en mode éco à 18°C, on empêche l’allumage.
Ca ressemble à ca :

if ($next['consigne'] < $consigne && strtotime($next['date']) < (strtotime('now') + 3600) ) {

Donc c’est simpliste !

Pour le smartstart, j’utilise pour le moment la formule suivante:

Anciennement:

   $duration = ($temporal_data['power'] * $cycle) / 100; 

Maintenant:

//adaptation Poele
	        $thermos = $this->getHumanName();
	        if ($thermos == '[Thermostat][Thermostat salon]') {
	        	$duration = ($temporal_data['power'] * 65) / 100;
	     	        }
          else {
             $duration = ($temporal_data['power'] * $cycle) / 100; 
        	}
// fin adaptation

En l’occurence, un cycle de 65 minutes donne qqc de très correct chez moi !
Je ne suis pas dév du tout, mes bidouilles fonctionnent…mais ca reste de la bidouille !

Tu as mis le smartstop à la bourrin.

De plus il faut l’appliquer au bon endroit uniquement si le cycle precédent n’est pas en chauffage.
J’ai la solution en tête, mais il faut la validation de la team avant de faire n’importe quoi.

Et pour le smartart, je propose plutôt un coeficient sur le cycle duration:
$duration = ($temporal_data['power'] * $cycle)*3.2 / 100;
A la place de 3.2, un champ modifiable dans les parametres avancées

Car cette solution est plus adapté et peut également avoir un coef négatif.

Je te confirme que c’est bourrin, mis en place en quelques minutes ce matin :wink: Cependant fonctionnellement ca répond totalement à mon besoin

Par contre:

  1. Il est appliqué au bon endroit (au niveau de la vérification de la durée du cycle)
  2. Appliqué uniquement sur le poêle
  3. Appliqué uniquement si le cycle précédent n’était pas en chauffage ($thermostat->getCache(‹ lastState ›) != ‹ heat ›)
    J’ai fait quelques tests entre midi et deux, chez moi en tout cas c’était parfait.
    Après, bien entendu pour l’intégrer dans le plugin, il faudrait pouvoir passer le thermostat concerné par l’admin du plugin, la c’est en dur :wink:

En effet rajouter un coefficient sur la durée du cycle calculé est surement plus malin, entre autre du fait de pouvoir mettre un coef négatif pour ceux qui auraient l’inverse de notre problème !

Je fais les modifs de mon côté mais once again, je ne suis pas dév! Preneur d’une solution plus propre directement intégrée au plugin :wink:

Je comprend mieux le principe. C’est ma première année avec un poêle a granulé et puis ca fait que 2/3 semaines que je suis sur jeedom. avec l’histoire du covid j’ai toujours pas eu la mise en service de mon poseur. Du coup je tourne presque toujours a deux c’est vrai que c’est super long de remonter comme ca la température et moi mon poêle ce coupe pas tout seul une fois la température atteinte. Car j’étais pas en mode éco. Du coup j’ai presque tournée poele h24 pendant deux semaines je vous raconte pas le nombre de sac qui sont passé la dedans…

Bonjour,

Merci pour ce tuto, tout fonctionne à priori bien, même si je dois encore peaufiner les réglages de puissance pour le cas de mon poêle. J’arrive à le mettre en route manuellement en cliquant sur un mode ou en augmentant la température.

Je viens d’installer le plugin agenda pour automatiser tout ça. Seulement il ne déclenche pas l’allumage du poêle. J’ai fait ça hier soir à la va-vite et ce matin 15°, ça pique ! (j’aurais pas dû). Pourtant tout a l’air de fonctionner dans les logs.

Capture d’écran du 2021-01-07 19-26-22

Ce soir pareil, le poêle ne s’est pas déclenché malgré des logs similaires. Là il est en train de chauffer et il fait trop froid en ce moment pour que je le coupe afin de faire un test.

Je n’ai pas mis d’action de fin dans l’agenda, je me suis dit que l’événement suivant allait prendre le dessus, peut-être pas. J’ai mis un mode absent qui se déclenchait à 8h10 et celui-ci a bien fonctionné, le poêle s’est éteint. Est-ce que quelqu’un pourrait m’aider s’il-vous-plaît ? J’ai dû faire une erreur dans l’agenda ou oublié d’appeler une action mais je ne sais pas quoi. Bon je débute, j’aurais dû être plus patient mais j’avais hâte d’avoir un programme de chauffe digne de ce nom pour mon poêle.

Merci

Les logs sont claires, tu devrais chauffer à 5h30.
J’ai vu également ton message sur Hottoh. Apparemment, tu as réussi à faire fonctionner ton poêle avec jeedom.
Si tu as suivi le tutoriel, j’ai mis en place un scénario marche_arrêt. Et ainsi démarrer avec une variable? Est ce que c’est ce que tu as mis en place ?
Pour chaque scénario, tu as un fichier logs. Il pourrait te dire si celui-ci a exécuté la commande à 5h30.

Bonjour,

Merci pour ta réponse et surtout merci pour ces explications et le plugin, je suis bien content de pouvoir enfin contrôler le poêle comme je veux sans avoir à utiliser l’horrible télécommande vendue avec.

Oui j’ai bien fait les même scénarios que dans le tuto.

En fait, je me suis trompé hier, je ne m’en suis pas souvenu tout de suite (je ne devais avoir qu’un oeil d’ouvert) et ça n’était plus présent dans logs le soir. Le poêle était bien allumé hier matin (il s’est allumé car la température était descendue en dessous de 15° en mode nuit) mais sur puissance 3 (sur 20), la même que lorsqu’il s’est arrêté la veille et a continué comme ça jusqu’à ce que je me lève.

Ce matin pareil, le poêle s’est éteint sur puissance 11 et au déclenchement, il est resté sur cette puissance sans la changer par la suite. Pourtant quand je me suis levé, j’ai appuyé sur le mode « Confort » manuellement et les niveaux de puissances ont tout de suite réagi.

Mon souci viendrait donc du scénario de puissance qui ne n’agit pas en mode agenda, je vais mettre le mettre en debug pour observer son comportement. Merci pour la piste.

D’ailleurs concernant le scénario de puissance, je ne sais pas encore programmer, mais n’y aurait-il pas la possibilité de créer une sorte de boucle avec un code plus court ? J’ai 20 niveaux de puissances sur le poêle et j’ai eu du mal à adapter ton scénario au mien. Avec toutes les imbrications de code, l’affichage des briques dépasse le bord de l’écran et il n’y a pas de barre de défilement horizontal qui apparaît dans le navigateur. Une fois que je l’ai terminé, je ne peux plus trop y toucher ni voir les valeurs que j’ai mis. Je regarderai ce week-end si je peux adapter un truc.
Bonne journée

Effectivement dans le cas de 20 niveaux de puissances, ce n’est pas judicieux d’utiliser des conditions. Je ne suis pas un expert des scénarios, je pense que j’utiliserai le plugin script.

Bon ça a fonctionné ce matin.

Le scénario de gestion de puissance se lançait bien mais n’avait pas l’air d’avoir d’action sur le poêle avec l’agenda puisque le poêle restait sur la puissance qu’il avait au moment de son extinction.

J’ai créé un scénario qui relance une fois le scénario de puissance 10 minutes après le premier appel. Ca a l’air d’avoir fonctionné mais je ne sais pas si c’est très orthodoxe…

Pour être sûr de ne pas avoir froid ce matin, j’avais mis une action de début sur le mode nuit de l’agenda qui remettait le poêle sur le niveau de puissance 20, je ne sais pas si ça a joué, je ne pense pas.

Pour la gestion de puissance, pour alléger le code dans mon cas, je pense reprendre la base du tien et faire un calcul du style :

Si [Th_poele][puissance] > 100 alors [poêle]niveau puissance =20
Sinon [poêle]niveau de puissance = l’arrondi de la valeur de ([Th_poele][puissance]/5)

Mais je ne sais pas encore comment on fait ça, il faut que je me documente.

En tout cas, merci beaucoup pour l’aide, je vais bientôt pouvoir utiliser le smartstart et vraiment gagner en confort avec ces différents plugins.

Avec autant de niveau de puissance, la solution d’un PID classique avec un arrondi à 5% sur la puissance de sortie ne serait pas plus adapté ?

Ma solution ici pour commander des vannes thermostatiques entre 0 et 99% à 1% près.

Tu pourrais peut-être l’adapter en arrondissant les valeurs pour sortir une puissance avec un pas de 5% ?

Un truc dans ce goût là pour arrondir à 5 dans l’intervalle [0;100] et diviser par 5 pour être dans l’intrevalle [0;20]

[Th_poele][puissance20]=max(0,min(5*floor([Th_poele][puissance]/5),100))/5

Je suis toujours avec un grand intérêt les remarques autour de ce tuto.
Ce qui me plaît dans le plugin thermostat, c’est l’apprentissage automatique des coefficients.
En revanche, de mon point de vue, le plugin thermostat ne peut pas en compte des apports gratuits variables (soleil, présence humaine) mais seulement des apports gratuits constants où il faut rentrer à la main des valeurs (non évidentes à déterminer).

Comment cela se passe-t-il lorsqu’il y a eu plusieurs jours non ensoleillés où les coefficients se sont adaptés à cette situation, puis une journée fortement ensoleillé ? Il y a forcément dépassement de consigne ? Et pendant combien de cycles ?

Bonjour damatiser.
D’après mon observations les coeff changent après chaque cycle de chauffe, ils sont légèrement moderées par l’ancien coeff. J’avoue ne pas comprendre grand chose à la logique de l’algorithme mais visiblement ça fonctionne et c’est ce qui compte.

Bonjour @Pierrick
As tu participé à l’élaboration du plugin, tu as l’air bien calé la dessus ?
Merci

Effectivement, un PID serait peut-être l’idéal.

Le constructeur du poêle a d’ailleurs commencé à en implémenter un dans les réglages avancés du poêle dans la dernière mise à jour (uniquement PI), mais il ne sait pas lui-même comment s’en servir. Je leur avais demandé comment régler les coefficients (initialement, Ki= 15 et Kp=20000??? un peu obscur pour moi) puisqu’en l’état ça ne fonctionnait pas (la température stagnait 2 degrés trop bas et le poêle restait à faible puissance), ils m’ont dit que personne chez eux ne touchait aux réglages et qu’il ne fallait les modifier… Alors ça marche peut-être dans une maison BBC mais pas chez moi. J’ai tout de même modifié les coefficients en notant sur un tableau les résultat de chaque changement et obtenu quelque chose de potable (mieux que le fonctionnement tout ou rien initial du poêle). C’est ce dont je me servais avant de passer sur jeedom.

Bravo pour ton PID mais avant que je comprenne tout, il va passer du temps. Ca ne fait que 7 jours que je suis utilisateur de Jeedom et la moindre manip me prend déjà des heures :wink: . J’y reviendrai quand je serai plus au point.

Et merci pour la formule ! C’était ça que je cherchais, même si j’ai pour l’instant modifié le scénario de Pierrick pour que la puissance 1 du poêle occupe la plage 0 à 30 de la puissance demandé par le thermostat. Je trouvais qu’en l’état, il utilisait peu les puissances basses. J’essaierai d’adapter ça avec ta formule quand je comprendrais tout mieux.

Un PI suffit pour le chauffage.

:laughing: Le vendeur ne sait peut-être pas. Mais le concepteur doit savoir !

Pour les valeurs, attention aux unités, à quoi ça correspond ?

Avant d’aller toucher à ce genre de coefficients, il faut bien comprendre ce qu’on fait.
C’est un PI qui fait quoi ? Il est dans le thermostat ?

C’est pourtant le constructeur que j’ai contacté pour savoir, voici sa réponse : « Aucun de nos techniciens ni experts n’a jamais touché à ces deux paramètres.
Normalement, ils ne sont pas accessibles à l’utilisateur. »

Sinon dans les réglages c’est juste affiché « K proportionnel puissance PID » et « K integrale puissance PID ». C’est ce qui gère le « smartmode » du poêle, un mode qui est sensé permettre d’arriver à une température de consigne sans la dépasser et ensuite essayer de la maintenir. Et c’est lié à la télécommande qui sert de sonde de température et de thermostat.

Bon sinon j’ai toujours un problème avec le plugin thermostat qui ne lance pas à chaque fois le scénario de puissance, le poêle reste à la puissance dans laquelle il s’est éteint, obligé de relancer le scénario manuellement.

Il faudrait également que je trouve une autre sonde de température, pour l’instant c’est celle de la télécommande, mais la température n’est pas stable du tout et peut varier de -0,5 à +0,5 rien qu’en la bougeant de quelques millimètres, la fréquence d’actualisation du plugin toutes les 15 minutes fait qu’il prend parfois une température erronée…

Ben, ils ne sont pas vraiment « constructeurs ». :sweat_smile: En gros, ils ont acheté un PID industriel à un autre constructeur pour la régulation de leur poêle et ils ne savent pas s’en servir ! :rofl:

Ça devrait bien fonctionner. La plupart des thermostats « intelligents » fonctionnent comme ceci et l’utilisateur n’a pas de réglages a effectué (les coef du PID ne sont pas accessible à 'utilisateur).

Pourquoi n’utilises pas tu leur télécommande/sonde/thermostat ?