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

Bonjour messieurs,

 

Rafraichissez moi la mémoire svp ?

Ca tourne chez vous ?

 

je ne me souviens plus, possible de l'utiliser avec un fil pilote ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Y a pas de raisons que tu ne puisses pas l’utiliser. Je l’utilisais l’année dernière sur un radiateur grille-pain en utilisant un paneau de chauffage comme référence de consignes.

J’attendais vos tests du qubino pour refaire mon installation sur mon radiateur mixte de la salle de bain.

 

Concernant le Qubino fil pilote, je ne vois pas l’interêt d’utiliser les différents modes (confort, économie, +1, +2, ...), un seul doit suffire (mode confort). c’est le VD qui va gérer la température selon les consignes du panneau de chauffage. Bien évidemment il faut une sonde de température dans pièce (moi c’est une sonde netatmo).

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu utilises encore Heating Manager ?

 

LE Qubino fil pilote n'etant pas un thermostat, je crois qu'on ne peut pas l'utiliser dans le panneau de chauffage.

 

Je trouve sympa moi la possibilité d'envoyer les ordres fil pilote justement. C'est facile, sur le radiateur tu configures la température de confort, la température éco. Et voila.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Avec les modules liés c'est possible je pense non ?

C'est Nico le spécialiste des modules liés je crois.

Partager ce message


Lien à poster
Partager sur d’autres sites

Aucune idee, je n'ai jamais utilisé le panneau de chauffage ;-)

 

 

PS : je viens d'aller voir, le Qubino fil pilote n'est pas proposé dans les modules liés pour le panneau de chauffage ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Le fil pilote Qubino n'est pas utilisable avec le panneau de chauffage. Je me suis fait un VD pour faire le lien entre les 2
Chez moi, la seule commande directe entre panneaux de chauffage et radiateur , c'est via un SRT321 et un relai simple Fibaro

Envoyé de mon SM-A530F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

j'ai quitté EEDOMUS pour passer sur HC2 car la plus grosse partie de mes modules étaient en Fibaro.

 

J'avais réussi a tout faire avec l'EEDOMUS car les possibilités, pour un user de mon très petit niveau, sont multiples et très facile d'accès.

Mais la je rame énormément sur le LUA.

 

Pour la partie chauffage j'ai un thermostat Danfoss qui n'est pas pris en compte dans le panneau de chauffage car je ne peux pas le lier avec un autre module (on / off).

Le thermostat remonte bien sa consigne et il s'affiche aussi en temps que Thermomètre qui remonte sa tempé correctement.

Je suis sur un plancher chauffant à eau qui fonctionne avec une PAC qui gère toute seule la température ext.

Je n'ai pas besoin de planifier, de séparer les pièces etc.. car l'inertie est énorme et je chauffe toute la maison..

 

J'aimerai juste pouvoir piloter mon chauffage depuis la consigne de mon thermostat Danfoss sans proportionnel et en fonction de la température relevée par le thermomètre Danfoss. 

Si je demande 20 et qu'il fait 19 alors ON

Si je demande 20 et qu'il fait 20.5 alors OFF 

 

Selon vous est ce possible assez facilement (sans code supplémentaire ?)

Est ce que j'ai besoin de tous les VD ?

 

Merci pour votre aide !

 

Ps : en photo, j'ai mis 2 inter On / OFF pour tester et le Danfoss qui s'affiche en temps que Thermostat et Thermomètre. Le tout dans une pièce "chauffage" 

 

chauffage.JPG.a00293f96d8a00c42fd76b6e5e7435b9.JPG

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Je viens de tomber sur ce sujet et suis en train de configurer Heating Manager pour l'une de mes pièces. J'ai téléchargé les fichiers de MAM78 qui me semblaient plus récents que ceux du premier post (et j'adore les icones ;). Par contre je suis tombé sur plusieurs bugs que j'ai corrigés comme suit:

1) La création des variables globales (si elles n'existent pas déjà) échoue. Il faut remplacer "isEnum=0" par "isEnum=false" (2 occurences dans le code lua principal, et une dans celui du VD). C'est un bug que j'avais signalé dans GEA également, apparemment la syntaxe de api.post a été modifiée dans une mise à jour de Fibaro.

function HM:setVariables()
  if (isnil(_f:getGlobalValue("HeatingManager"))) then
    api.post("/globalVariables", {name="HeatingManager", isEnum=false})   
  end
  if (isnil(_f:getGlobalValue("HeatingManagerIDs"))) then api.post("/globalVariables", {name="HeatingManagerIDs", isEnum=false}) end

2) Il faut remplacer "eventSetpoint = getThermostatSetpoint(room.idRoom, self.ln[self.HMCF.language].holidays)" par "eventSetpoint = getThermostatSetpoint(room.idRoom, self.ln["fr"].holidays)" (3 occurences dans le code lua principal). En effet ce paramètre est utilisé pour identifier les labels du VD Thermostat, qui sont toujours en français ("lblVacances"). Pour ceux qui ont configuré Fibaro en anglais par défaut comme moi, ça plante car le programme cherche un label "lblHolidays" qui n'existe pas.

 

if (event.setpoint > 500 and event.setpoint <= 1500) then
   eventSetpoint = getThermostatSetpoint(room.idRoom, self.ln["fr"].holidays) - (holidays - event.setpoint) 
elseif (event.setpoint > 2000 and event.setpoint <= 6500) then
   eventSetpoint = getThermostatSetpoint(room.idRoom, self.ln["fr"].eco) - (eco - event.setpoint)       
elseif (event.setpoint > 2000 and event.setpoint <= 7500) then
   eventSetpoint = getThermostatSetpoint(room.idRoom, self.ln["fr"].comfort) - (comfort - event.setpoint) 
else
   eventSetpoint = event.setpoint
end

 

3) Enfin, dans la fonction HM:getRawSetpoint il faut enlever "local" dans la déclaration de la variable mode. En effet cette variable est utilisée quelques lignes plus bas, en-dehors de la boucle if.

function HM:getRawSetpoint(source, idRoom)
  local ids = json.decode(_f:getGlobalValue("HeatingManagerIDs"))
  local idRoom = tostring(idRoom)
  if (isnotnil(ids[idRoom])) then
    mode = string.alpha(_f:getValue(ids[idRoom], "ui.lblMode.value"))    -- et non pas: local mode = ...

Voilà j'espère que ce sera utile aux nouveaux utilisateurs. Si je trouve d'autres bugs je posterai.

Modifié par Felig
  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

×