MAM78 Posté(e) le 14 novembre 2018 Signaler Posté(e) le 14 novembre 2018 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
MAM78 Posté(e) le 14 novembre 2018 Signaler Posté(e) le 14 novembre 2018 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)
OJC Posté(e) le 14 novembre 2018 Auteur Signaler Posté(e) le 14 novembre 2018 (modifié) 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é le 14 novembre 2018 par OJC
MAM78 Posté(e) le 14 novembre 2018 Signaler Posté(e) le 14 novembre 2018 Idem. Toujours la même erreur : [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)
OJC Posté(e) le 14 novembre 2018 Auteur Signaler Posté(e) le 14 novembre 2018 Essaie de supprimer la variable globale HeatingManager, le script a peut-être enregistré des données faussées (je n'ai pas la box à portée de main pour faire des tests moi-même).
MAM78 Posté(e) le 14 novembre 2018 Signaler Posté(e) le 14 novembre 2018 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
MAM78 Posté(e) le 14 novembre 2018 Signaler Posté(e) le 14 novembre 2018 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)
MAM78 Posté(e) le 14 novembre 2018 Signaler Posté(e) le 14 novembre 2018 C'est bon. Ca fonctionne. Merci pour ton aide. Je ne vois pas dans le VD thermostat de la pièce la température mesurée actuellement dans celle-ci. Est-ce un manque ou non ?
pepite Posté(e) le 14 novembre 2018 Signaler Posté(e) le 14 novembre 2018 Bonsoir, Et donc tu as modifié le code pur quelle raison ? Et ta modification était nécessaire pour le fonctionnement ? TU nous diras stp, si cela s'arrête ? Merci.
MAM78 Posté(e) le 15 novembre 2018 Signaler Posté(e) le 15 novembre 2018 (modifié) 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é le 17 novembre 2018 par MAM78
MAM78 Posté(e) le 15 novembre 2018 Signaler Posté(e) le 15 novembre 2018 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)
MAM78 Posté(e) le 16 novembre 2018 Signaler Posté(e) le 16 novembre 2018 (modifié) 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é le 17 novembre 2018 par MAM78
pepite Posté(e) le 16 novembre 2018 Signaler Posté(e) le 16 novembre 2018 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 ?
OJC Posté(e) le 16 novembre 2018 Auteur Signaler Posté(e) le 16 novembre 2018 @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.
MAM78 Posté(e) le 16 novembre 2018 Signaler Posté(e) le 16 novembre 2018 (modifié) 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é le 17 novembre 2018 par MAM78
MAM78 Posté(e) le 16 novembre 2018 Signaler Posté(e) le 16 novembre 2018 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 ?
MAM78 Posté(e) le 17 novembre 2018 Signaler Posté(e) le 17 novembre 2018 (modifié) 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é le 17 novembre 2018 par MAM78
MAM78 Posté(e) le 17 novembre 2018 Signaler Posté(e) le 17 novembre 2018 (modifié) Après quelques tests. c'était le bonne correction à apporter pour l'histérésie. 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é le 17 novembre 2018 par MAM78
pepite Posté(e) le 18 novembre 2018 Signaler Posté(e) le 18 novembre 2018 Merci @MAM78 pour @OJC je me permets. Ca permet à tous d'avoir des des au micropoil :-) Tu n'as pas encore constaté d'arret dont on parlait avec OJC ?
MAM78 Posté(e) le 18 novembre 2018 Signaler Posté(e) le 18 novembre 2018 (modifié) 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 : 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) : Source de la version du VD qui reste compatible avec la scène officielle : Thermostat MAM78 Compatible.vfib.json A tester évidement Modifié le 18 novembre 2018 par MAM78 Update suite à une petite anomalie sur la MAJ du label lblMode
MAM78 Posté(e) le 19 novembre 2018 Signaler Posté(e) le 19 novembre 2018 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 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 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
pepite Posté(e) le 19 novembre 2018 Signaler Posté(e) le 19 novembre 2018 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.
MAM78 Posté(e) le 19 novembre 2018 Signaler Posté(e) le 19 novembre 2018 (modifié) 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é le 19 novembre 2018 par MAM78 1
pepite Posté(e) le 20 novembre 2018 Signaler Posté(e) le 20 novembre 2018 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 ?
MAM78 Posté(e) le 21 novembre 2018 Signaler Posté(e) le 21 novembre 2018 (modifié) 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é le 21 novembre 2018 par MAM78
Messages recommandés