Aller au contenu
OJC

Heating Manager

Recommended Posts

@MAM78 C'est juste une bidouille un peu trash pour savoir si la température de consigne par défaut est la température de confort ou la température éco. Si tu regardes dans le bloc de déclarations des variables au début du code, la variable comfort est égale à 7000 et la variable eco est égale à 6000.

 

Si event.setpoint est supérieur à 1000 (valeur arbitraire nécessairement supérieure à toute température de consigne pouvant raisonnablement être paramétrée) et inférieur à 6500 (donc on est par défaut sur le mode eco), alors la scène va chercher la valeur paramétrée dans le VD Thermostat de la pièce. S'il est inférieur à 7500, on est en mode confort. Et à défaut, la scène prend la valeur paramétrée.

 

Le test n'a de sens que pour le fonctionnement en mode événementiel, puisque le principe de ce mode est de toujours appliquer une température de consigne sauf si un événement vient la modifier (à la différence de la planification où le principe est une variation de la température de consigne en fonction de l'horaire).

 

Il y avait sûrement plus élégant pour faire ça... <_<

 

Modifié par OJC

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 11 heures, MAM78 a dit :

Pourrais-tu m'expliquer comment fonctionne le mode automatique (en mode setProportionalMode) cf. le VD Thermostat. Est-ce cela ?

  • En fonction de la valeur par défaut définit par le paramètre defaultSetpoint de la fonction setProportionalMode, soit comfort, soit eco
    • Si aucun événement particulier est survenu la température de consigne est celle définit en fonction de la valeur par défaut ci-dessus avec sa valeur (nb °C) correspondante (confort ou eco) dans le VD Thermostat.
    • Si événement survenu alors la température de consigne est celle opposé à celle définit (confort versus eco ou eco versus confort) en fonction de la valeur par défaut ci-dessus avec sa valeur (nb °C) correspondante (confort ou eco) dans le VD Thermostat.

@OJC il me semble que tu ne m'as pas répondu à la question ci-dessus ?

 

Je ne comprend toujours pas pourquoi tu tests des tranches entre 1001 et 6500 et 1001 et 7500 et non pas les valeurs 7000 pour comfort et 6000 pour eco. comment des valeurs intermédiaires au-dessus de 1000 serait possible ?

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

@MAM78 C'est exactement comme cela que ça fonctionne, à ceci près qu'en cas d'événement, la température de consigne appliquée est celle définie dans l'événement. Donc, pas forcément comfort ou eco, tout dépend de la configuration.

 

Pour ce qui est du codage du test, comme je te dis, c'est trash. Donc un code un peu merdique. Il aurait effectivement été beaucoup plus simple et logique de tester directement la valeur des variables comfort et eco, sans même coder la valeur mais en faisant directement référence à la variable. Bien que ça commence à dater un peu, il me semble que c'était justifié à un moment, et qu'après diverses modifications rendant le test inutile, cette partie du code est passée au travers de l'optimisation...

 

Je devais être un peu fatigué :2:

Partager ce message


Lien à poster
Partager sur d’autres sites

PS : La boucle principale de la scène vient encore de planter :( Je vais faire des tests un peu plus poussés pour comprendre pourquoi... Jamais eu aucun problème l'hiver dernier, ce doit être lié à une des mises à jour intervenues depuis lors...

  • Sad 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@OJC merci pour les explication. 

 

Pourrais-tu me confirmer que la méthode par hystérésie est bien compatible avec le mode événementiel. Est-ce qu'en mode hystérie, je peux par exemple ajout un événement du type la fenêtre vient d'être ouverte je met le chauffage en mode arrêt (soit par exemple : en mode vacance, soit 7°) ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@MAM78 Oui, le mode de régulation par hysteresis est compatible avec le mode événementiel.

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 17 heures, OJC a dit :

PS : La boucle principale de la scène vient encore de planter :( Je vais faire des tests un peu plus poussés pour comprendre pourquoi... Jamais eu aucun problème l'hiver dernier, ce doit être lié à une des mises à jour intervenues depuis lors...

Afin d’éviter de geler lorsque tu rentre chez-toi, je te suggère si ce n’est pas déjà fait d’intégrer une relance automatique de la scène en fonction du message d’erreur avec le Watchdog.

Partager ce message


Lien à poster
Partager sur d’autres sites

@MAM78 Le souci, c'est que je n'ai pas de message d'erreur et que la scène ne plante pas, puisque la boucle qui contrôle l'usage de la mémoire continue de tourner sans problème... C'est un peu à s'arracher les cheveux : comme si à un moment donné, pour une raison qui m'échappe, la boucle setTimeout du mode proportionnel (c'est celui que j'utilise) n'est pas relancée...

Modifié par OJC

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello, @OJC, pour le moment je n'ai pas eu de plantage, mais je n'utilise pas le mode proportionnel pour le moment.

 

Est-ce volontaire que le mode événementiel ne fonctionne qu'en mode automatique ? en mode Economique et Confort les événements ne sont pas pris en compte. 

 

J'ai fait pas mal d'adaptations de ton VD et ta scène :

  • Intégration d'un mode Vacance avec sa température de consigne modifiable sur le VD
  • Affichage de la température actuelle dans la pièce
  • Ajout sur la ligne d'état d'un indicateur si le chauffage est à l'arrêt ou en marche
  • Affichage sur la dernière ligne du VD du texte correspondant à l'événement en cours ainsi que dans la ligne de log du VD
  • Modification des icônes pour qu'elles soient visibles sur les appareils Apple (iPhone, iPad, Mac, ...)
  • Réorganisation des boutons

Est-ce que cela t'intéresse de les intégrer dans ta version officielle ?

 

Tu trouveras ci-dessous une image du VD en situation, notamment avec l'affichage d'un événement fenêtre ouverte (avec bascule automatique selon la consigne vacance à 7°) et la mise en pause du chauffage.

 

422629910_Sanstitre7.thumb.png.3a3ea8f99414a119afa21680491ab1f6.png1993144451_Sanstitre7.png.2f321d0ca60662fa27e7162b381da1ac.png

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour a tous, j ai remarqué que le calcul du temps de chauffe ne tient pas compte des températures négatives a cause de la fonction string.match au début du code.

Cela ne change pas tout, mais du coup, plus il fait froid, plus il faut chaud :).

Le pattern ne prend pas le moins. Perso, j ai ajouté un . a celui-ci au début des deux chaines. Cela fonctionne, mais il y a peu être plus élégant.

 

Pour la prochaine version !

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 13/12/2018 à 21:43, DENIS DIT CALWA a dit :

moi, cela m'intéresse énormément ton développement complémentaire, pourrais tu le partager

Désolé pour ma réponse tardive, mais j'étais passé à côté de ton message.

 

Voici ma version du VD et de la scène 

Thermostat.vfib-2.json

Heating Manager.lua

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 1 heure, Dgille a dit :

Le pattern ne prend pas le moins. Perso, j ai ajouté un . a celui-ci au début des deux chaines. Cela fonctionne, mais il y a peu être plus élégant.

Pourrais-tu préciser où tu as fais la modification dans le code.

Partager ce message


Lien à poster
Partager sur d’autres sites

J ai modifié la ligne 87, la modification consiste au final  par l ajout de %-  pour matcher le 0.

 

Voici la fonction modifiée:

87

function string.extract(a)return string.match(a,"[0-9%-]+[,.][0-9]+")or string.match(a,"[0-9%-]+")end

Partager ce message


Lien à poster
Partager sur d’autres sites

×