Lionel57 Posté(e) le 30 novembre 2014 Signaler Posté(e) le 30 novembre 2014 L’idée, utiliser le panneau de chauffage pour sa souplesse pour la gestion de mes chaudières, sans en subir les conséquences. Toutes les consignes sont utilisées normalement (consignes courantes, consignes vacances et consignes provisoires) pour toutes zones existante. Pour chaque zone, un pré-requis, créer une variable prédéfinie appelé id_Chauf_pièce, où pièce correspond au nom de la zone de consigne(ex : pour une zone définie dans le panneau de chauffage nommée « Salon », on crée une variable prédéfinie appellée « id_Chauf_Salon »). Pour chaque variable, on crée : - une valeur D_xxx où xxx est l’ID du module qui déclenche la chaudière (pour ma part, un FGS211 relié à chaque chaudière) - une valeur T_xxx où xxx est l’ID du module qui renvoie la température courante de la zone - une ou plusieurs valeur Z_xxx où xxx correspond aux ID des modules qui contrôlent les radiateurs ou SRT321 (vannes Danfoss dans mon cas). En cas d’absence d’un de ces modules dans une zone, on met Z_000 On crée une variable prédéfinie : - Present (Oui/Non) - Fenetre_ouverte (Oui/Non) - JourChome (Oui/ Non) On crée un module virtuel avec un bouton nommé « rafraichir » et on colle le code LUA suivant : Adresse_IP="192.168.1.xxx"; Utilisateur="admin" MotDePasse="12345678"; function EnumZone() -- Relève l'ensemble des zones du panneau de chauffage local a, b, c = 0; local p = { }; local i = 0; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/panels/heating"); a, b = string.find(result, "name", 1); while a do b, c = string.find(result, ",", a + 6); i = i + 1; table.insert(p, string.sub(result, a + 7, b -2)); a = b + 1; a, b = string.find(result, "name", a); end; return p; end function IdZone(piece) -- Récupère l'ID d'une zone local a, b, c = 0; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/panels/heating"); a, b = string.find(result, piece, 1); b, c = string.find(result, "id", a - 18); return string.sub(result, b + 4, a - 10); end function TempActuelle(piece) -- Relève la température actuelle d'une zone local a, b, c, d = 0; local T = ""; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/globalVariables"); a, b = string.find(result, "id_Chauf_" .. piece, 1); b, c = string.find(result, "T_", a); c, d = string.find(result, "\"", ; T = string.sub(result, b + 2, c - 1); return fibaro:getValue(T, "value"); end; function TempMini(Id) -- Recherche la température mini d'une zone, pour la définir comme température de consigne en cas d'absence local c, d, e, i =0; local t=""; local TM = "99"; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/panels/heating?id=" .. Id); for i = 1, 4 do c, d = string.find(result, "temperature", e); e, d = string.find(result, "}", c); t = string.sub(result, c + 13, e-1); if tonumber(t) < tonumber(TM) then TM = t end; end; return TM; end; function TempProv(Id) local a, b, c, d =0; local TP, TM = ""; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/panels/heating"); a, b = string.find(result, "id\":" .. Id, 1); b, c = string.find(result, "handTemperature", a); c, d = string.find(result, ",", ; TP = string.sub(result, b+17, c-1); a, b = string.find(result, "handTimestamp", c); b, c = string.find(result, ",", a); TM = string.sub(result, a+15, b-1); if tonumber(TM) < os.time() then TP = "0" end; return TP; end; function TempVac(Id) local a, b, c, d =0; local TP, TM = ""; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/panels/heating"); a, b = string.find(result, "id\":" .. Id, 1); b, c = string.find(result, "vacationTemperature", a); c, d = string.find(result, "}", ; TP = string.sub(result, b+21, c-1); return TP; end; function TempConsigne(Id) -- Défini la température de consigne pour une zone local T = ""; if fibaro:getGlobalValue("Present") == "Oui" then T = TempProv(Id); if T == "0" then local a, b, c, d = 0; local h, heureCourante, e, programme = ""; local jour = ""; local currentDate = os.date("*t"); local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/panels/heating?id=" .. Id); if fibaro:getGlobalValue("JourChome") == "Oui" then jour = "sunday"; else jour = string.lower(os.date("%A")); end; a, b = string.find(result, jour, 1); b, c = string.find(result, "}}", a); programme = string.sub(result, a-1, ; b = 1; if tonumber(currentDate.hour)<10 then e = "0" else e = "" end; heureCourante = e .. currentDate.hour if tonumber(currentDate.min)<10 then e = "0" else e = "" end; heureCourante = heureCourante .. ":" .. e .. currentDate.min; for a = 1, 4 do h = ""; b, c = string.find(programme, "hour", b+1); c, d = string.find(programme, ",", ; if tonumber(string.sub(programme, b+6, c-1))<10 then e = "0" else e = "" end; h = e .. string.sub(programme, b+6, c-1); b, c = string.find(programme, "minute", ; c, d = string.find(programme, ",", ; if tonumber(string.sub(programme, b+8, c-1))<10 then e = "0" else e = "" end; h = h .. ":" .. e .. string.sub(programme, b+8, c-1); if h < heureCourante then c, d = string.find(programme, "temperature", ; e, d = string.find(programme, "}", ; T = string.sub(programme, c + 13, e-1); end; end; if T == "0" then jour = string.lower(os.date("%A", os.time()- 24 * 60 * 60)); a, b = string.find(result, jour, 1); b, c = string.find(result, "}}", a); programme = string.sub(result, a-1, ; b = 1; a, b = string.find(programme, "night", 1) ; a,b = string.find(programme, "temperature", a); e, d = string.find(programme, "}", a); T = string.sub(programme, a + 13, e-1); end; end; else T = TempVac(Id); if T == "0" then T = TempMini(Id) end; end return T; end function EnumDeclencheur() -- Enumère les modules qui enclenchent les chaudières ou radiateurs électriques d'une zone (FGS211) local a, b = 0; local Declencheur = ""; local Exist = false; local i, j = 0; local D = { }; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/globalVariables"); a, b = string.find(result, "D_", 1); while a do i = i + 1 ; b, c = string.find(result, "\"", a); Declencheur = string.sub(result, a + 2, b - 1); j = 1; Exist = false; while D[j] do if D[j] == Declencheur then Exist = true end; j = j + 1; end if not Exist then table.insert(D, Declencheur) end; a, b = string.find(result, "D_", a + 2); end; return D; end function DeclencheurZone(piece) -- Recherche l'ID du déclencheur de chaudière pour une zone local a, b, c = 0; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/globalVariables"); a, b = string.find(result,"id_Chauf_" .. piece, 1); a, b = string.find(result, "D_", a); b, c = string.find(result, "\"", a); return string.sub(result, a + 2, b - 1); end function EnumSourceZ(piece) -- Enumère toutes les vannes ou thermostat d'une zone local a, b, c, d = 0; local Cons = { }; local HC2= Net.FHttp(Adresse_IP); HC2:setBasicAuthentication(Utilisateur, MotDePasse); local result, status, errorCode = HC2:GET("/api/globalVariables"); a, b = string.find(result, "id_Chauf_" .. piece, 1); a, b = string.find(result, "Z_", a); while a do b, c = string.find(result, "\"", a); table.insert(Cons, string.sub(result, a + 2, b - 1)); d = a; a, b = string.find(result, "Z_", a + 2); if a then b, c = string.find(result, "id_Chauf_", d); if b then if b < a then a = nil end; end; end; end; return Cons; end; function Inertie(piece, TempCons, TempAct) return "0"; end; function DecInertie(piece, TempCons, TempAct) end; function DefInertie(piece, TempCons, TempAct) end local declencheur = EnumDeclencheur(); if fibaro:getGlobalValue("Fenetre_ouverte") == "Non" then local i,j,k = 1; local l = 0; local piece = EnumZone(); local besoin = {}; while piece[i] do -- Pour chaque zone du panneau de chauffage j = 1; EnumSource = EnumSourceZ(piece[i]); while EnumSource[j] do if EnumSource[j] ~= "000" then fibaro:call(EnumSource[j], "setTargetLevel", TempConsigne(IdZone(piece[i]))); -- Défini les consignes de température pour les vannes Danfoss ou thermostat pour chaque zone (piece[i]) end; j = j + 1; end; l = 0; k = 1; while declencheur[k] do if declencheur[k] == DeclencheurZone(piece[i]) then l = k end; -- Repère le l'ID du déclencheur de chauffage pour la zone étudiée k = k + 1; end; -- besoin{} établi si, pour un déclencheur, un besoin de chauffage est nécessaire -> Si température actuelle inférieur à température consigne - 0.7, on déclenche un besoin (envoi de "turnOn" au déclencheur). -- Si besoin=nil, si toutes les zones attachées ont atteint la température, on coupe le besoin (envoi de "turnOff" sur le déclencheur), sinon, on laisse faire if tonumber(TempActuelle(piece[i])) < (tonumber(TempConsigne(IdZone(piece[i]))) - 0.7) then besoin[l] = "turnOn"; DecInertie(IdZone(piece[i]), TempConsigne(IdZone(piece[i])), TempActuelle(piece[i])) else if not besoin[l] and tonumber(TempActuelle(piece[i])) < tonumber(TempConsigne(IdZone(piece[i]))) - tonumber(Inertie(IdZone(piece[i]), tonumber(TempConsigne(IdZone(piece[i]))), TempActuelle(piece[i]))) then besoin[l] = "standby"; --DefInertie(piece[i], TempConsigne(IdZone(piece[i])), TempActuelle(piece[i])) else DefInertie(IdZone(piece[i]), TempConsigne(IdZone(piece[i])), TempActuelle(piece[i])) if not besoin[l] then besoin[l] = "turnOff"; end; end; end; --fibaro:debug(tostring(tonumber(TempConsigne(IdZone(piece[i]))) - tonumber(Inertie(piece[i], tonumber(TempConsigne(IdZone(piece[i]))))))); i = i + 1; end; i = 1; while declencheur[i] do if besoin[i] ~= "standby" then fibaro:call(declencheur[i], besoin[i]); -- Envoi la consigne au déclencheur end; i = i + 1; end; else local k = 1; while declencheur[k] do fibaro:call(declencheur[k], "turnOff"); -- Si Fenetre_ouverte alors tout déclencheur à "turnOff" k = k + 1; end; end; On adaptera les 3 variables (Adresse_IP, Utilisateur, MotDePasse) Les fonctions Inertie, DecInertie et DefInertie ne sont pas partagées pour le moment, en cours de développement... Petite précision, ce code a été écrit en 4.018, alors que JSON ne fonctionnait pas. Enfin, on créera une scène par bloc qui appuiera toutes les minutes sur le bouton "Rafraichir" du module virtuel en omettant pas de cocher la case "Lancer au démarrage de la HC2" Je crois que je n'ai rien oublié 3
Nico Posté(e) le 30 novembre 2014 Signaler Posté(e) le 30 novembre 2014 Ahhh, cela pourrait du coup remplacer mes modules liés en attendant qu'ils les réparent dans la 4.020... Par contre si je comprend bien, si on a plusieurs pièces dans une zone, il faut les séparer et mettre une pièce par zone max, c'est bien ça ?
Lionel57 Posté(e) le 30 novembre 2014 Auteur Signaler Posté(e) le 30 novembre 2014 En faite, je vais supprimer l'association de mon srt321 avec mes FGS211 et faire en sorte que quand je modifie la consigne sur celui ci ou sur une vanne Danfoss, ça devienne une consigne manuelle pour 1 heure pour la zone. (pour ça, j'avais besoin de JSON et celui ci est de retour...) Dans ma configuration, je règle la température par pièce (je ne chauffe pas la chambre la journée par exemple) donc zone ou pièce, pour moi, c'est pareil (je ne me soucis pas du paramétrage des pièces pour une zone dans le tableau de chauffage). Si plusieurs pièces sont concernées pour une zone, il suffit de rajouter autant de Z_xxx (xxx étant l'ID d'une vanne) que nécessaire dans la variable prédéfinie de la zone
Lionel57 Posté(e) le 30 novembre 2014 Auteur Signaler Posté(e) le 30 novembre 2014 Je vais tout réécrire en utilisant JSON, je pense que le code sera plus clair.
jojo Posté(e) le 30 novembre 2014 Signaler Posté(e) le 30 novembre 2014 Lionel, Je n'y comprends rien au LUA (pour l'intant), mais le code que tu as fais permettrait-il d'interagir avec les panneaux de chauffage en fonction de variables ou de l'état de devices ? Je pense aux cas suivants : Variable Vacances = Oui, alors utiliser la fonction Holliday du panneau de chauffage. Lorsque vacances = Non, sortir de ce mode. En fonction du status d'un device, interagir (exple : fenêtre ouverte => passer en manuel durant une période donnée) Si oui, tu m'auras fais regretter de ne pas avoir acheté une HC2
PITP2 Posté(e) le 30 novembre 2014 Signaler Posté(e) le 30 novembre 2014 @jojo, c'est en effet le but recherché par lionel et le mien aussi mais j'ai été coupé dans mon élan par le plantage de ma box avec l'utilisation de l'API. L'utilisation d'un device virtuel agissant sur le panneau de chauffage pour le mode vacance et surtout le mode modification ponctuel de la température pendant une période de temps serait top. C'est idiot car cette fonction existe mais uniquement en passant par l'interface du navigateur. Je ne sais pas si c'est du à cette nouvelle version mais je suppose vu car j'ai essayé de partir du code de Jossalf et cela me fait planter la box.
Lionel57 Posté(e) le 30 novembre 2014 Auteur Signaler Posté(e) le 30 novembre 2014 J'ai trouvé que l'interface de gestion de chauffage est bien pensé, mais que la façon de le géré était un peu tortueux, voir complètement abstraite (surtout que j'ai 2 chaudières).
Yannick Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Salut à tous, je suis en train de m'intéresser à la gestion de mon chauffage et à l'optimisation de mes conso de gaz et suis tombé sur ton code Lionel57. Très intéressant. J'ai une question, j'ai une chaudière vieille de 12 ans donc non pilotable avec production d'eau chaude donc je ne peux pas l'arrêter, mais je pourrais bypasser uniquement le connecteur de chauffage sans toucher à l'eau chaude. j'ai sur tous mes radiateurs des têtes DANFOSS LC13. j'avais acheté en prévision un SRT321 mais je ne l'ai jamais utilisé ni jamais installé. Pour moi et au vu de ce que j'ai pu lire, les LC13 régulent toutes seules leur zone respective. Y at-il un intérêt de coupler les LC13 avec le SRT321 ? et de connecter la chaudière avec un FGS ou un autre module de chez HORSTMANN (j'ai également un Centaur Plus C17) ? Quelqu'un peut-il m'éclairer avant que je ne fasse la connerie (ou pas !) de revendre mon kit Horstmann ? Merci pour votre retour
Bono2007 Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 A mon sens, si tous tes radiateurs ont une LC13, le thermostat est inutile. Par contre, on conseille généralement d'avoir un radiateur tout le temps ouvert pour éviter de fatiguer le circulateur de la chaudière si toutes tes LC13 sont fermées. Cela dit tu peux utiliser ton thermostat pour mettre une température à 16 quand tu es au boulot ou en vacances. Même si tu peux le faire via un scénario et tes LC13.
Yannick Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Merci Bono2007 pour ton retour. Mon circuit de chauffage est prévu pour ne pas fatiguer le circulateur. par d'inquiétude de ce côté là je connais la musique ! Pour ce qui est du thermostat, le panneau de chuffage fait l'affaire pour gérer les absence et les congés et tout ça .. d'ailleurs, je l'utilise actuellement pour gérer les températures de mes zones et les périodes de la journée et ça fonctionne très bien. Le seul souci que je vois c'est qu'en cas de radical de température extérieure (par exemple : toute la semaine ou a eu du brouillard et une température qui ne dépassait pas les 5° et hier comme par magie on est monté à 23° avec un grand soleil) ou bien quand par exemple en pleine hiver si j'ai décidé de mettre la température à 19° par ce que personne n'est présent et que l'un de mes enfants rentre à la maison parce qu'il n'a pas cours et qu'il a froid, pouvoir simplement actionner le thermostat pour augmenter la température de consigne à la place d'aller dans le navigateur , puis HC puis authentification puis panneau de chauffage puis augmenter la température de consigne de manière manuel. Est ce que ce genre de chose est envisageable avec des LC13 et le script de lionel57 ?
Bono2007 Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Tu as une option, tu crées un bouton Do ( https://ifttt.com/myrecipes/do ) qui avec Maker fait la modif que tu veux sur les LC13, et tu l'installes sur le portable d'un de tes enfants ^^ Attention à ne pas trop laisser libre accès aux enfants au thermostat, tu pourras te retrouver avec des surprises ;-)
Yannick Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 ouais mais ça justement je ne veux pas qu'ils utilisent leur portable pour toucher au chauffage. la seule chose que les autorise àfaire c'est d'allumer les lampes et fermer les volets.
Bono2007 Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Avec la fonction Do tu peux juste limiter à mettre le chauffage à XX° par exemple. Tu peux aussi agir sur la présence du téléphone à proximité pour agir sur le chauffage ( quand il rentre ).
Yannick Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 mouais bof, c'est chiant d'avoir tout le temps son smartphone sur soi pour toujours tout faire.. piloter une maison depuis l'extérieur oui.. Automatiser tout à l'extrême j'achète mais les quelques actions basiques comme augmenter le chauffage de 1° ou allumer une cafetière je trouve que ça garde un charme quand même quand c'est fait à l'ancienne non.... Je vais essayer de faire avec le SRT321 ce que je voudrais qu'il fasse et on verra bien... merci Bono à plus Par contre je ne connais pas ifttt. il faut créer un compte ?
jojo Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 oui, il faut créer un compte gratuit
Yannick Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Salut grand Jojo, ça va ? je viens de regarder mais je n'y entends absolument rien à comment ça fonctionne. tu sais s'il y a un tuto quelque part sur le forum ?
jojo Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 àma connaissance, il n'y en a pas, sur comment créer un compte, mais créer un compte est simple Egalement créer les premiers receipt : j'ai commencé par stocker dans une feueille xls (google sheet) tous les sms que je reçois et envoie. Ca ne va pas changer ma vie, mais c'est une sorte d'historique de tous mes SMS, ça peut toujours servir ...
Yannick Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Créer le compte ça va ... pas eu trop de mal merci ... mais le script alors là? ?? Envoyé de mon SM-G928F en utilisant Tapatalk
jojo Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 commence avec quelque chose de simple et inutile pour te faire la main
Yannick Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Merci jojo Envoyé de mon SM-G928F en utilisant Tapatalk
Bono2007 Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Il faut utiliser Makers chez IFTTT. Voir ici dans un premier temps : http://www.abavala.com/l-interface-ifttt-generique-est-arrivee-les-requetes-http-pour-les-makers/ Voilà une fonction qui marche, en LUA : function ifttt(trigger) local httpClient = net.HTTPClient({ timeout = 2000 }); local url = 'https://maker.ifttt.com/trigger/'..trigger..'/with/key/kkkkkkkkkk'; --debug url print(url); httpClient:request(url, { success = function(response) if tonumber(response.status) == 200 then print("Updated at " .. os.date()); else print("Error " .. response.status) end end, error = function(err) print('error = ' .. err) end, options = { method = 'GET' } }); end
Yannick Posté(e) le 16 novembre 2015 Signaler Posté(e) le 16 novembre 2015 salut salut, je reviens sur le code de Lionel57, es-tu là ????? Je n'arrive pas à comprendre comment fonctionne tout bouton "rafraichir". J'ai une question : si par exemple depuis le VD que tu as créé on pouvais changer la température de consigne ce serait top dans les pièces définies. mais comment on peut faire ? je pensais que ça aller m'aider mais en fait non je reste un peu sur ma fin. Merci pour ton aide si tu peux m'aider
Roy202 Posté(e) le 25 novembre 2015 Signaler Posté(e) le 25 novembre 2015 Bonjour, J'ai jeté un oeil au code de Lionel, pourquoi tu modifies les consignes des danfoss ? Normalement, si le danfoss est le thermostat principal de la pièce, et si la pièce est dans la zone, le HC2 modifie lui même la consigne du danfoss (et voire même il augmente la température 2h avant par palier jusqu'à la température du panneau à la bonne heure). Je suis en train d'essayer d'adapter le script pour piloter des radiateurs elec avec fil pilote qubino.
Yannick Posté(e) le 26 novembre 2015 Signaler Posté(e) le 26 novembre 2015 Bon j'ai abandonné le code de Lionel, et je me suis démerdé tout seul, j'ai utilisé un thermostat d'ambiance SRT321 que j'ai mis en place dans mon salon, il est donc géré automatiquement par mon panneau de chauffage. Pour les actions manuelles, si pendant un hiver rude et qu'on se tape des -40°, j'ai créé une petite scène qui associe les consignes données au SRT321 en bougeant la molette à mes LC13 présentes dans ma pièce : --[[ %% properties 267 value %% globals --]] local srt = 267 local vanne1 = 68 local vanne2 = 174 local vanne3 = 176 fibaro:call(vanne1, 'setTargetLevel', fibaro:getValue(srt, 'value')) fibaro:call(vanne1, 'setTime', 0) fibaro:call(vanne2, "setTargetLevel", fibaro:getValue(srt, 'value')) fibaro:call(vanne2, 'setTime', 0) fibaro:call(vanne3, "setTargetLevel", fibaro:getValue(srt, "value")) fibaro:call(vanne3, 'setTime',0) fibaro:debug("température de consigne : "..fibaro:getValue(srt, 'value').." °") fibaro:debug("temps de consigne : "..(fibaro:getValue(srt, 'timestamp')).." ") fibaro:debug("température de consigne : "..fibaro:getValue(vanne1, 'value').." °") fibaro:debug("temps de consigne : "..(fibaro:getValue(vanne1, 'timestamp')).." ") et afin de limiter les réglages de température de consignes trop élevées (j'ai des enfants qui ont l'impression des fois que chauffer une pièce à 35 ° quand ils ont froid est la bonne solution !) j'ai créé une petite scène qui scrute la température de consigne envoyée au LC13 et qui m'alerte si la température est trop élevée (au delà de 24 pour le salon et au delà de 21 pour la chambre) tout en la remenant à une température de base (19 pour le salon et 17 pour la chambre avec un timeStamp à 0). --[[ %% properties 68 targetLevel 174 targetLevel 176 targetLevel 178 targetLevel %% globals --]] local tempcosgn1= fibaro:getValue(68, "targetLevel") local tempcosgn2= fibaro:getValue(174, "targetLevel") local tempcosgn3= fibaro:getValue(176,"targetLevel") local tempchambre= fibaro:getValue(178,"targetLevel") local vannes_salon={68,174,176} local vanne_chambre = 178 local id_smart = tonumber(165) local scenenum = fibaro:countScenes() fibaro:debug ("vanne 1 : "..tempcosgn1.." °") fibaro:debug( "vanne 2 : "..tempcosgn2.." °") fibaro:debug( "vanne 3 : "..tempcosgn3.." °") fibaro:debug("Chambre : "..tempchambre.." °") if scenenum >2 then fibaro:abort() end for _,v in pairs(vannes_salon) do if ((tempcosgn1 >= "24") or (tempcosgn2 >= "24") or (tempcosgn3 >="24")) then fibaro:call(id_smart, 'sendPush',"Attention dépassement de la température max !") fibaro:call(v, 'setTargetLevel', 21) fibaro:call(v, 'setTime', 0) end if (tempchambre > "21") then fibaro:call(id_smart, 'sendPush',"Alerte Température dans Chambre !") fibaro:call(vanne_chambre, 'setTargetLevel', 17) fibaro:call(vanne_chambre, 'setTime', 0) end end voilà , au moins j'automatise mon chauffage de façon optimale (pour moi) et je peux contrôler manuellement et ponctuellement mes conditions particulières... A plus à tous
Yannick Posté(e) le 26 novembre 2015 Signaler Posté(e) le 26 novembre 2015 pour le lien entre les LC13 et le SRT j'ai trouvé l'idée du code ici... pour le reste c'est moi http://siio.de/board/thema/fibaro-hc2-securesrt321-mit-danfoss-lc-13/
Messages recommandés