Aller au contenu

Heating Manager


OJC

Messages recommandés

Ok, je vais essayer.

 

Mais il me semble qu'une partie de ton code ne prévoit pas ce que tu indiques dans la designation des sondes de températures.

 

J'ai modifié une partie de ton code pour que cela fonctionne. Est-ce que cela te semble correct ?

  if (origin == "addHeater") then
    err = checkRoom(id1); if isnotnil(err) then return false, err end
    err = checkDevice(id2, 4, false); if isnotnil(err) then return false, err end
    if (type(tonumber(id3)) == "number") then
      err = checkDevice(id3); if isnotnil(err) then return false, err end
    elseif (type(id1) == "string") then
      err = checkVariable(id3); if isnotnil(err) then return false, err end
    elseif (type(id2) == "table") then
      err = checkDevice(id3, 2, true); if isnotnil(err) then return false, err end
    else
      error(self:log("isNotValidType", type(id3), origin, id3))
    end

  elseif (origin == "setIndoorSonde") then
    err = checkRoom(id1); if isnotnil(err) then return false, err end
    if (type(id2) == "string") then
      err = checkVariable(id2); if isnotnil(err) then return false, err end
    elseif (type(id2) == "table") then
      err = checkDevice(id2, 2, true); if isnotnil(err) then return false, err end
    else
      error(self:log("isNotValidType", type(id2), origin, id2))
    end

  elseif (origin == "setOutdoorSonde") then
    if (type(tonumber(id1)) == "number") then
      err = checkDevice(id1); if isnotnil(err) then return false, err end
    elseif (type(id1) == "string") then
      err = checkVariable(id1); if isnotnil(err) then return false, err end
    elseif (type(id1) == "table") then
      err = checkDevice(id1, 2, true); if isnotnil(err) then return false, err end
    else
      error(self:log("isNotValidType", type(id1), origin, id1))
    end

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Ca avance. mais j'ai maintenant l'erreur suivante

 

 

[DEBUG] 09:04:06: [1;31m2018-11-14 09:04:06.609847 [ fatal] Unknown exception: /opt/fibaro/scenes/99.lua:484: attempt to index field 'data' (a nil value)
 

sur la ligne :

  if (self.HMCF.kP.start) then self.HMCF.kP.data[tostring(idHeater[1])] = {self.HMCF.default_kP, 0, 0} end

dans la fonction suivante :

function HM:addHeater(idRoom, idHeater, idSonde, localkP, localkT)

 

Lien vers le commentaire
Partager sur d’autres sites

Dans la fonction HM:getDefaultConfiguration, ajoute :

if isnil(self.HMCF.kP.data) then self.HMCF.kP.data = {} end

après cette ligne de code :

self.HMCF.kP.start = isnil(self.HMCF.kP.data)

 

PS : A première vue, ta modification ne me semble pas utile puisque les tests que tu as ajoutés lorsque origin = "addHeater" sont réalisés par la fonction checkDevice.

Modifié par OJC
Lien vers le commentaire
Partager sur d’autres sites

 

Il y a 3 heures, OJC a dit :

PS : A première vue, ta modification ne me semble pas utile puisque les tests que tu as ajoutés lorsque origin = "addHeater" sont réalisés par la fonction checkDevice.

En tout cas si je ne les mets pas ça plante :(

Lien vers le commentaire
Partager sur d’autres sites

Maintenant j'ai ça :

 

[DEBUG] 13:07:40: [1;31m2018-11-14 13:07:40.190061 [ error] API: Not found
[DEBUG] 13:07:40: [1;31m2018-11-14 13:07:40.316535 [ fatal] Unknown exception: /opt/fibaro/scenes/99.lua:484: attempt to index field 'data' (a nil value)

 

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Hello @pepite, oui ça fonctionne bien maintenant (marche et arrêt), mais j'utilise pour le moment la méthode "setHysteresisMode" qui est suffisante pour le moment.

Vous trouverez ci-dessous l'extrait de ma configuration :

 

Pour rappel, mon contexte est le suivant :

  • Dans une salle de bain (ID=7)
  • Utilisation d'un radiateur électrique d'appoint brancher sur une prise électrique pilotée par un Fibaro Sigle Switch 2 - FGS 213 (Id=411)
  • Les consignes de chauffage sont données par un panneau de chauffage de la HC2 (Id=192) associé à la salle de bain (ID=7)
  • Utilisation d'une sonde de température NetAtmo (Id=295 via son plugin NetAtmo) présent dans la salle de bain (ID=7)
  • Une sonde de température extérieur NetAtmo (Id=274 via son plugin NetAtmo) présent dans la salle de bain (ID=7)
  • Notifications éventuelles sur mon téléphone (Id={289})
  --GENERAL CONFIGURATION---------------------------------------------------------------------
    self:setConfiguration(true, 180, true, false, {289}, false, true)
    --self:setProportionalMode(60, true, 1, 15, 1, comfort)
    self:setHysteresisMode(0.5, 15, comfort)

  --HEATERS CONFIGURATION---------------------------------------------------------------------
    self:addHeater(7, {411, "turnOn", "turnOff", "0"}, {295, "value"})

  --SETPOINT SOURCES CONFIGURATION------------------------------------------------------------
    self:setSetpoint(7, 192)

  --GLOBAL EVENTS CONFIGURATION---------------------------------------------------------------

  --ROOM EVENTS CONFIGURATION-----------------------------------------------------------------

  --INDOOR TEMPERATURE SONDES DECLARATIONS----------------------------------------------------
    self:setIndoorSonde(7, {295, "value"})  

  --OUTDOOR TEMPERATURE SONDE DECLARATION-----------------------------------------------------
  --self:setOutdoorSonde({274, "value"})

 

Par ailleurs je confirme qu'il est nécessaire de modifier le code de la scène pour pouvoir le faire fonctionner avec ma configuration puisque sinon j'obtiens l'erreur suivante :

 

[DEBUG] 23:42:35: [1;31m2018-11-15 23:42:35.839251 [ fatal] Unknown exception: /opt/fibaro/scenes/99.lua:350: attempt to compare number with nil
 

Cette erreur survient dès lors que l'on renseigne une sonde de température Indoor ou Outdoor en utilisant les syntaxes suivantes :

  --INDOOR TEMPERATURE SONDES DECLARATIONS----------------------------------------------------
    self:setIndoorSonde(7, {295, "value"})  

  --OUTDOOR TEMPERATURE SONDE DECLARATION-----------------------------------------------------
    self:setOutdoorSonde({274, "value"})

Pour corriger ce problème, j'ai modifier le code suivant :

  if (origin == "addHeater") then
    err = checkRoom(id1); if isnotnil(err) then return false, err end
    err = checkDevice(id2, 4, false); if isnotnil(err) then return false, err end
    if (isnotnil(id3)) then err = checkDevice(id3, 2, true); if isnotnil(err) then return false, err end end

  elseif (origin == "setIndoorSonde") then
    err = checkRoom(id1); if isnotnil(err) then return false, err end
    if (type(id2) == "string") then
      err = checkVariable(id2); if isnotnil(err) then return false, err end
    elseif (type(id2) == "table") then
      err = checkDevice(id2); if isnotnil(err) then return false, err end
    else
      error(self:log("isNotValidType", type(id2), origin, id2))
    end

  elseif (origin == "setOutdoorSonde") then
    err = checkDevice(id1); if isnotnil(err) then return false, err end

par celui-ci :

  if (origin == "addHeater") then
    err = checkRoom(id1); if isnotnil(err) then return false, err end
    err = checkDevice(id2, 4, false); if isnotnil(err) then return false, err end
    if (type(tonumber(id3)) == "number") then
      err = checkDevice(id3); if isnotnil(err) then return false, err end
    elseif (type(id1) == "string") then
      err = checkVariable(id3); if isnotnil(err) then return false, err end
    elseif (type(id2) == "table") then
      err = checkDevice(id3, 2, true); if isnotnil(err) then return false, err end
    else
      error(self:log("isNotValidType", type(id3), origin, id3))
    end

  elseif (origin == "setIndoorSonde") then
    err = checkRoom(id1); if isnotnil(err) then return false, err end
    if (type(id2) == "string") then
      err = checkVariable(id2); if isnotnil(err) then return false, err end
    elseif (type(id2) == "table") then
      err = checkDevice(id2, 2, true); if isnotnil(err) then return false, err end
    else
      error(self:log("isNotValidType", type(id2), origin, id2))
    end

  elseif (origin == "setOutdoorSonde") then
    if (type(tonumber(id1)) == "number") then
      err = checkDevice(id1); if isnotnil(err) then return false, err end
    elseif (type(id1) == "string") then
      err = checkVariable(id1); if isnotnil(err) then return false, err end
    elseif (type(id1) == "table") then
      err = checkDevice(id1, 2, true); if isnotnil(err) then return false, err end
    else
      error(self:log("isNotValidType", type(id1), origin, id1))
    end

 Du coup, j'ai également modifié la partie traitant de la fonction "addHeater" pour la mettre en cohérence avec les autres fonctions.

 

@OJC Peut-être que cela mériterait une petite mise à jour du code de la scène sur la première page si vous testez et validez ma suggestion.

 

 

Modifié par MAM78
Lien vers le commentaire
Partager sur d’autres sites

Est-il normal d'avoir dans la LOG des messages tous les 15 secondes blog que le paramètre logInfo est à false ?. Voir ci-dessous.

 

 

[DEBUG] 00:39:39: [ACTION] Salle de Bain Parent : Début de chauffe (Radiateur Electrique)
[DEBUG] 00:39:54: [ACTION] Salle de Bain Parent : Début de chauffe (Radiateur Electrique)
[DEBUG] 00:40:09: [ACTION] Salle de Bain Parent : Début de chauffe (Radiateur Electrique)
[DEBUG] 00:40:24: [ACTION] Salle de Bain Parent : Début de chauffe (Radiateur Electrique)
 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Suite à mon message précédent, j'ai également modifié la fonction ci-dessous pour ne recevoir la trace dans la LOG uniquement lorsque l'actionneur est en état "Off" et qu'il doit basculé à "On". Histoire de ne pas saturer la LOG d'informations inutiles.

Nota Cette restriction de volume de messages dans la LOG ne marchera pas si l'actionneur correspond à VD avec un appui sur un bouton de celui-ci.

 

function HM:startHeater(item, nameRoom, hC)
  if (isnotnil(hC)) then hC = self:getReadableTime(hC) end
  if (item.VD) then
    self:notify(self:log(iif(isnotnil(hC), "startHeatingTime", "startHeating"), nameRoom, item.nameHeater, hC), self.colors.action)
    item.startTime = os.time()
    _f:call(item.heater, "pressButton", item.actions[1])
  else
    if (tostring(_f:getValue(item.idHeater, "value")) == tostring(item.offValue)) then
      self:notify(self:log(iif(isnotnil(hC), "startHeatingTime", "startHeating"), nameRoom, item.nameHeater, hC), self.colors.action)      
      if (type(item.actions[1]) == "string") then
        item.startTime = os.time()
        _f:call(item.idHeater, item.actions[1])
      elseif (type(item.actions[1]) == "number") then
        item.startTime = os.time()
        _f:call(item.idHeater, "setValue", item.actions[1])
      else
        self:notify(self:log("badHeaterAction", nameRoom, item.nameHeater, item.actions[1]), self.colors.error)
      end
    end
  end
end

 

Modifié par MAM78
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Ok merci pour le retour. Tu vérifieras combien de temps ce la tourne, avec @OJC nous parlions dans les osts précédents de la boucle qui s'arretait au bout d'un certain temps sans message d'erreur.

 

J'avais cru comprendre qu'il était possible de lire le label d'un module virtuel pour les sondes, me trompe je ?

Lien vers le commentaire
Partager sur d’autres sites

@MAM78 Le VD Thermostat n'affiche pas la température actuellement mesurée. Ce n'est pas un oubli, c'est juste que l'info existe ailleurs. Mais je reconnais après coup que ce serait utile d'avoir l'information à cet endroit-là.

 

En revanche, ce VD n'est pas conçu pour être utilisé quand Heating Manager fonctionne en utilisant une planification, il est conçu pour fonctionner avec le mode événementiel.

Lien vers le commentaire
Partager sur d’autres sites

Toujours dans un souci de lisibilité du contenu de la LOG j'ai ajuster la fonction suivante pour afficher dans message de la ligne d'ACTION la température courant de la pièce (utile lorsque l'on désactive les LOG détaillés).

 

function HM:startHeater(item, nameRoom, hC)
  --if (isnotnil(hC)) then hC = self:getReadableTime(hC) end
  local current = self:getTemperatures(item, nameRoom)
  if (item.VD) then
    self:notify(self:log(iif(isnotnil(hC), "startHeatingTime", "startHeating"), nameRoom, item.nameHeater, iif(isnotnil(hC), current, hC)), self.colors.action)
    item.startTime = os.time()
    _f:call(item.heater, "pressButton", item.actions[1])
  else
    if (tostring(_f:getValue(item.idHeater, "value")) == tostring(item.offValue)) then
      self:notify(self:log(iif(isnotnil(hC), "startHeatingTime", "startHeating"), nameRoom, item.nameHeater, iif(isnotnil(hC), current, hC)), self.colors.action)
      if (type(item.actions[1]) == "string") then
        item.startTime = os.time()
        _f:call(item.idHeater, item.actions[1])
      elseif (type(item.actions[1]) == "number") then
        item.startTime = os.time()
        _f:call(item.idHeater, "setValue", item.actions[1])
      else
        self:notify(self:log("badHeaterAction", nameRoom, item.nameHeater, item.actions[1]), self.colors.error)
      end
    end
  end
end

 

Pour pouvoir ajouter cette température courante j'ai également modifié les lignes ci-dessous :

      startHeatingTime   = "[ACTION] %s : Start heating (%s) Temp. is %s °C and setpoint is %s °C",
      startHeatingTime   = "[ACTION] %s : Début de chauffe (%s) Temp. à %s °C et consigne à %s °C",

J'ai également remarqué que la fonction "getReadableTime" retourne la valeur de la température du panneau de chauffage mais avec les caractères " s", soit pour une température de 21° cela done "21 s". Ce qui n'est pas terrible ;).

Après analyse du code je l'impression que la ligne ci-dessous n'a rien faire ici. Je l'ai donc mise en en remarque. A confirmer par le créateur Heating Manager.

if (isnotnil(hC)) then hC = self:getReadableTime(hC) end

 

Modifié par MAM78
Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, OJC a dit :

En revanche, ce VD n'est pas conçu pour être utilisé quand Heating Manager fonctionne en utilisant une planification, il est conçu pour fonctionner avec le mode événementiel.

Pourrais-tu STP préciser ce que tu entends par là ?

 

Tu veux dire qu'il ne doit pas être utilisé en mode Hysteresis ?

Lien vers le commentaire
Partager sur d’autres sites

Hello, après avoir modifié le code de la scène pour obtenir dans la LOG les infos température courante, temp. de consigne, et paramètre hysteresis lors des démarrages et arrêts, je constate que le fonctionnement de l'hystérésis n'est pas le bon. Voir trace ci-dessous.

 

[DEBUG] 01:29:03: [ACTION] Salle de Bain Parent : Début de chauffe (Radiateur Electrique) Temp. à 18.5 °C et consigne à 19 °C, Hysteresis à 0.5
[DEBUG] 01:59:25: [ACTION] Salle de Bain Parent : Arrêt de chauffe (Radiateur Electrique) Temp. à 18.6 °C et consigne à 19 °C, Hysteresis à 0.5
[DEBUG] 02:30:32: [ACTION] Salle de Bain Parent : Début de chauffe (Radiateur Electrique) Temp. à 18.5 °C et consigne à 19 °C, Hysteresis à 0.5
[DEBUG] 02:59:38: [ACTION] Salle de Bain Parent : Arrêt de chauffe (Radiateur Electrique) Temp. à 18.6 °C et consigne à 19 °C, Hysteresis à 0.5
[DEBUG] 03:19:43: [ACTION] Salle de Bain Parent : Début de chauffe (Radiateur Electrique) Temp. à 18.5 °C et consigne à 19 °C, Hysteresis à 0.5
[DEBUG] 03:49:49: [ACTION] Salle de Bain Parent : Arrêt de chauffe (Radiateur Electrique) Temp. à 18.6 °C et consigne à 19 °C, Hysteresis à 0.5

Sauf à ce que je me trompe totalement le fonctionnement de l'hystérésis devrait être le suivant :

  • Lors la temp. actuelle est inférieur à la température de consigne (dans l'ex: 19°) moins la valeur de l'hystérésis (0,5°), soit 18,5°, le chauffage doit s'allumer
  • Lors la temp. actuelle est supérieurs de la température de consigne (dans l'ex: 19°) plus la valeur de l'hystérésis (0,5°), soit 19,5°, le chauffage doit s'éteindre

Cela permet d'éviter de faire le chauffage se met en route à la moindre variation du chauffage, soit 0,1 °. Ce qui est pourtant le cas actuellement. Cf. ma LOG ci-dessus. L'arrêt du chauffage ne respecte pas le principe de l'hystérésis.

 

Je pense avoir trouvé la correction à apporter, je fais le test et je vous dis ce qu'il en est.

 

Il s'agit des lignes ci-dessous :

          if (room.refinedSetpoint - current >= tonumber(self.HMCF.hysteresis)) then
            self:startHeater(item, room.nameRoom, room.refinedSetpoint, self.HMCF.hysteresis)
          else
            self:stopHeater(item, room.nameRoom, self:getTemperatures(item, room.nameRoom), room.refinedSetpoint, self.HMCF.hysteresis)
          end

Qui je pense devrait être corrigé comme ça :

          if (room.refinedSetpoint - current >= tonumber(self.HMCF.hysteresis)) then
            self:startHeater(item, room.nameRoom, room.refinedSetpoint, self.HMCF.hysteresis)
          elseif (room.refinedSetpoint - current <= -tonumber(self.HMCF.hysteresis)) then
            self:stopHeater(item, room.nameRoom, self:getTemperatures(item, room.nameRoom), room.refinedSetpoint, self.HMCF.hysteresis)
          end

Vous trouverez ci-dessous ma dernière version du code de la scène :

Heating Manager - Scene.lua

 

Modifié par MAM78
Lien vers le commentaire
Partager sur d’autres sites

Après quelques tests. c'était le bonne correction à apporter pour l'histérésie. :60:

 

Cf. la LOG de la scène.

[DEBUG] 19:50:10: HEATING MANAGER v. 3.1.2 - Copyright 2017 Olivier Meyer
[DEBUG] 19:50:10: [REGULATION] Mode Hysteresis sélectionné
[DEBUG] 20:42:32: [ACTION] Salle de Bain Parent : Début de chauffe (Radiateur Electrique) Temp. à 18.7 °C et consigne à 19 °C, Hysteresis à 0.2
[DEBUG] 21:07:57: [ACTION] Salle de Bain Parent : Arrêt de chauffe (Radiateur Electrique) Temp. à 19.3 °C et consigne à 19 °C, Hysteresis à 0.2

Mais attention par rapport au code original, il faut juste replace la ligne "else" par la ligne ci-dessus. Dans ma scène modifié j'ai intégrer d'autres modification pour ajouter des infos dans la LOG. Ou sinon reprendre ma version de la scène présente dans mon précédent post. 

elseif (room.refinedSetpoint - current <= -tonumber(self.HMCF.hysteresis)) then

 

Modifié par MAM78
Lien vers le commentaire
Partager sur d’autres sites

Depuis que j'ai mis à jour mon système en version 4.512 je n'arrive plus à modifier les VD dans lesquels il y a des boutons désactivés. Ce qui est le cas du VD Thermostat.

 

Du coup j'ai entrepris de le modifier pour y intégrer un mode vacance (c'est @pepite qui va être contant).

J'ai également retravaillé légèrement l'ergonomie du VD pour limiter le nombre de ligne.

J'ai également modifié les emoji pour qu'ils soient visibles à la fois sur les systems windows, samsung et iOS/Mac. Certains emoji précédents ne l'étaient pas sur iOS/Mac.

 

En attendant la scène qui prend en compte le mode vacance,  vous trouverez ci-dessous un aperçu de ma version du VD Thermostat :

 

1690309278_Sanstitre7.thumb.png.29d8b291c219f78e045cc7ebbeba4ea0.png

 

 

Source de ma version du VD Thermostat MAM78 New.vfib.json

 

Pour ce que ça intéresse, vous trouverez ci-dessous un aperçu de la version qui reste compatible avec la scène officielle que j'affiche à côté pour voir les différences (et notamment les emoji qui bug) :

 

2114286085_Sanstitre7.thumb.png.19dda451a66e27719640c38721a07921.png681547246_Sanstitre7.thumb.png.fdbf800052cfd3bbdf9c4f81914029d6.png

 

Source de la version du VD qui reste compatible avec la scène officielle Thermostat MAM78 Compatible.vfib.json

 

A tester évidement ;)

 

Modifié par MAM78
Update suite à une petite anomalie sur la MAJ du label lblMode
Lien vers le commentaire
Partager sur d’autres sites

Ce matin j'ai eu la mauvaise surprise de constater que la température ne remontait plus depuis mon Plugin NetAtmo. Du coup plus de chauffage d'autant qu'il gèle dehors. Du coup le côté WAF n'était plus là :( j'ai eu droit à quelques remarques :unsure:

 

Après quelques recherches pour comprendre ce qui se passait, j'ai trouvé qu'il s'agissait de la sonde NetAtmo elle-même. Il fallait lui installer une mise à jour de son logiciel interne. Peut-être que c'est un effet de bord de la fusion avec Legrand :15:

 

Du coup je me demande, s'il ne faudrait pas prévoir en cas d'absence de remontés d'info de la sonde de la pièce d'avoir la possibilité de désigner une sonde de secours. Par exemple oeil de sauron, même si la mesure sera faussée puisqu'au plafond. Ce sera toujours mieux que se le geler au réveil ou lorsque l'on rentre chez soit et que la WAF se manifeste ;)

Lien vers le commentaire
Partager sur d’autres sites

il y a 43 minutes, MAM78 a dit :

Il fallait lui installer une mise à jour de son logiciel interne

Bonjour,

De quelle mise à jour parles tu ?  D'après leur appli suis en logiciel interne 46 pour le module exterieur et 135 pour le module principal interieur.

 

Bonne idée la sonde de secours, mais a voir comment récuperer l'info de la non remontée de la sonde principale.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 6 heures, pepite a dit :

De quelle mise à jour parles tu ?  D'après leur appli suis en logiciel interne 46 pour le module exterieur et 135 pour le module principal interieur.

Je suis maitenant en 135 pour le module principal interieur et currieusement par rapport à toi je suis en version 44 pour les autres modules.

 

Mais précédement, je ne sais pas quelle était la version du module principal interieur. La MAJ c'est lancé automatiquement dès que j'ai tenté de me reconnecter sur le module via mon téléphone.

 

Il y a 6 heures, pepite a dit :

Bonne idée la sonde de secours, mais a voir comment récuperer l'info de la non remontée de la sonde principale.

La scène controle déjà la durée depuis laquelle il n'y a plus eu de remontées de températures de la pièce. Ce devrait être donc assez facile de déclancher une condition qui irait rechercher la valeur d'un module de secours.

 

Cela pourrait se faire de la façon suivante :

  • En modifiant la fonction de déclaration des radiateurs : self:addHeater(idRoom, idHeater, idSonde, localkP, localkT)
  • En modifiant la syntaxe du paramètre idSonde : {ID du module, nom de la propriété contenant la température}
    • Par la syntaxe suivante : {ID du module principal, nom de la propriété contenant la température, ID du module de secours, nom de la propriété contenant la température}
    • La désignation de l'ID de secours ainsi que sa propriété pourrait être elle optionnelle afin de rester compatible avec la situation précédente.

 

Bien évidement, il faudra en conséquence adapter le code de la scène pour que cette évolution soit prise en compte :

  • Détection de la bascule sur les paramètres de l'ID de recours,
  • Retour sur l'ID principal lorsqu'il redevient disponible,
  • Notification lors des bascules dans la LOG et le push sur les téléphones.
  • ...

CQFD ;)

 

Modifié par MAM78
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Ok oui je me doutais du comment ;-). Si un test existe deja, je plussoie ca fait ceinture et bretelles, je trouve que c'est une bonne idée. Voir avec @OJC ce qu'il en pense. De même pour l'aider à debugguer, ta scene a-t-elle deja plantée depuis que tu as modifié le code ?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @OJC

 

Pourrais-tu STP m'expliquer ce que signifie les lignes ci-dessous :

          if (event.setpoint > 1000 and event.setpoint <= 6500) then
            eventSetpoint = getThermostatSetpoint(room.idRoom, self.ln[self.HMCF.language].eco) - (eco - event.setpoint)
          elseif (event.setpoint > 1000 and event.setpoint <= 7500) then
            eventSetpoint = getThermostatSetpoint(room.idRoom, self.ln[self.HMCF.language].comfort) - (comfort - event.setpoint)
          else
            eventSetpoint = event.setpoint
          end

 

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
    • Sans 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.

Mais alors pourquoi la valeur event.setpoint évoluerait dans le temps, pourquoi dans une tranche entre 1001 et 6500 et 1001 et 7500.

 

Modifié par MAM78
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...