Steven 2 335 Signaler ce message Posté(e) 24 octobre 2014 Il y a une function 'switch' dans mon code, non ? Si oui, envoie moi juste ce morceau de code. Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 24 octobre 2014 Heating.switch = function(choice) --fibaro:call(33, choice) --fibaro:call(340, "pressButton", "1"); end -- Mise en chauffe Heating.warmUp = function() -- allumage du système Heating.switch("turnOn") fibaro:log("Warming Up...") Heating.started = true fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblRunning.value", "oui") fibaro:call(selfId, "setProperty", "currentIcon", 1057) end c'est de cette partie que tu parles? Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 24 octobre 2014 voila ce que j'ai fait, ça àl'air de fonctionner, peux-tu me dire si c'est correct? -- module(s) a allumer/éteindre --- ou autre -- choice= turnOn | turnOff Heating.switch = function(choice) --fibaro:call(33, choice) fibaro:call(340, "pressButton", choice); end -- Mise en chauffe Heating.warmUp = function() -- allumage du système Heating.switch("1") fibaro:log("Warming Up...") Heating.started = true fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblRunning.value", "oui") fibaro:call(selfId, "setProperty", "currentIcon", 1083) end -- Eteint le système de chauffage Heating.stop = function() Heating.switch("4") fibaro:log("Sleeping") Heating.started = false fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblRunning.value", "no") fibaro:call(selfId, "setProperty", "currentIcon", 1085) end Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 24 octobre 2014 A vu de nez c'est parfait, tu as remplacer le turnOn par 1, le turnOff par 4 et dans switch mis pressButton choice. C'est parfait. Bravo. Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 24 octobre 2014 Merci @Steven, ça à l'air de fonctionner parfaitement et j'ai pu récupérer les températures de mes sonde Netatmo. juste une autre question qui me chiffonne, il y à 4 état symbolisés par des icônes, la flamme orange pour "confort", la flamme noir pour "Stop", mais les deux autre? la flamme blanche et le ZZZ? quoi que c'est monsieur? Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 24 octobre 2014 De mémoire : Orange ... en chauffe Noir ... rien du tout Vert/Blanc ... en chauffe douce Zzzz ... en attente d'un réveil soudain. J'ai un poêle a pellet. Avec une température de confort de 21° et une hystéresis de 0.7°. Donc je chauffe àfond (Orange) jusqu'à21° si je suis en dessous de 20.3° puis je ralenti entre 21 et 21.7° (Vert) et je stoppe (Noir),en delà. En redescendant en température quand je suis entre 20.3 et 21.7, j'affiche le Zzzz cela me permettait de savoir que je suis en perte de température et non pas en montée. Voilà Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 24 octobre 2014 Ok, super Merci Steven Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 2 novembre 2014 @Steven, j'ai besoin de ton aide, ton module fonctionne parfaitement mais j'ai tout de même un soucis que je n'arrive pas à gérer. Je veux pouvoir utiliser les radiateurs indépendamment par les 4 ordres fil pilote, au début. Je stoppais et killé la scène comme ceci: fibaro:setSceneEnabled(99, false) fibaro:killScenes(99) mais je trouvais pas trop génial ce procédé et je préfère passer par une variable, "MANUEL" que j'ai rajouté à "chauffage". donc j'ai réussi à changer l'affichage de ton module mais pas l'action, il repasse en AUTO. -- Gestion de l'affichage local temp = Heating.getActualTemp() if (fibaro:getGlobal("Chauffage") == "VACANCES") then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTemps.value", temp .. "°C / VAC" ) elseif (fibaro:getGlobal("Chauffage") == "OFF") then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTemps.value", temp .. "°C / OFF" ) elseif (fibaro:getGlobal("Chauffage") == "MANUEL") then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTemps.value", temp .. "°C / MANUEL" ) je voudrais que quand la variable "MANUEL" remplace "OFF", "ON" ou "VACANCES", le module affiche "MANUEL" et n'ai plus d'action tant que la variable n'est pas changé. Tu peux m'aider? Partager ce message Lien à poster Partager sur d’autres sites
yoda6907 0 Signaler ce message Posté(e) 3 novembre 2014 Dès la sortie de la V4 ... La suite ici : http://www.domotique-fibaro.fr/index.php/topic/2164-plugin-virtual-sensor/ Bonsoir, J'ai réaliser la mise à jour vers la 4.018 et depuis j'ai un problème avec un bout de votre code lua de votre module virtuel : 140 response = HC2:GET("/api/panels/heating?id="..strefa) 141 local jsontable =json.decode(response) Lors que je debug, voici ce que j'obtiens : [ERROR] 20:27:03: line 141: attempt to index global 'json' (a nil value)[ERROR] 20:27:07: line 141: attempt to index global 'json' (a nil value) [ERROR] 20:27:09: line 141: attempt to index global 'json' (a nil value) [DEBUG] 20:27:11: Current temp : 20.4 [ERROR] 20:27:11: line 141: attempt to index global 'json' (a nil value) [DEBUG] 20:27:14: Stop it [DEBUG] 20:27:14: Current temp : 20.4 [DEBUG] 20:27:14: Min temp : 7.3 [DEBUG] 20:27:14: Max temp : 8.7 [DEBUG] 20:27:14: Started : stopped [DEBUG] 20:27:14: VACANCES [ Voilà trois heures que je cherche et rien..... Vous avez une idée ? Merci de votre aide Bonne soirée Partager ce message Lien à poster Partager sur d’autres sites
BenjyNet 1 200 Signaler ce message Posté(e) 3 novembre 2014 Bah oui, le json est buggé dans la 4.018 Partager ce message Lien à poster Partager sur d’autres sites
zozotte 24 Signaler ce message Posté(e) 7 novembre 2014 Bonjour Steven, Merci pour ce module et d'ailleurs toutes tes contributions au forum (je suis fan !). Fonctionne super ! 2 Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 11 novembre 2014 @Steven, j'ai besoin de ton aide, ton module fonctionne parfaitement mais j'ai tout de même un soucis que je n'arrive pas à gérer. Je veux pouvoir utiliser les radiateurs indépendamment par les 4 ordres fil pilote, au début. Je stoppais et killé la scène comme ceci: fibaro:setSceneEnabled(99, false) fibaro:killScenes(99) mais je trouvais pas trop génial ce procédé et je préfère passer par une variable, "MANUEL" que j'ai rajouté à "chauffage". donc j'ai réussi à changer l'affichage de ton module mais pas l'action, il repasse en AUTO. -- Gestion de l'affichage local temp = Heating.getActualTemp() if (fibaro:getGlobal("Chauffage") == "VACANCES") then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTemps.value", temp .. "°C / VAC" ) elseif (fibaro:getGlobal("Chauffage") == "OFF") then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTemps.value", temp .. "°C / OFF" ) elseif (fibaro:getGlobal("Chauffage") == "MANUEL") then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTemps.value", temp .. "°C / MANUEL" ) je voudrais que quand la variable "MANUEL" remplace "OFF", "ON" ou "VACANCES", le module affiche "MANUEL" et n'ai plus d'action tant que la variable n'est pas changé. Tu peux m'aider? @Steven , je fais un petit UP car je n'arrive pas à avancer. je n’arrête pas de parcourir ton code sans arrivé à stopper l'action. si j'ai bien compris, si la variable "chauffage" n'est pas sur "OFF" ou "VACANCES" donc le module est en AUTO, la variable "ON" sert juste à changer l'état de la variable "chauffage" mais n'a aucune action dans le code? Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 11 novembre 2014 @Fredric Tu as eu raison de faire un "UP" je t'avais oublié .. honte sur moi. Ce que tu aimerais c'est qu'en mode "MANUEL" le module virtuel ne fasse plus rien ? C'est bien cela ? Dans mon code, cherche Heating.run = function() et juste la ligne en dessous ajoute ceci : if (fibaro:getGlobal("Chauffage") == "MANUEL") then return end Cela va stopper le module virtuel en mode MANUEL. Tiens moi au courant stp. P.S: Oui "ON" est juste pour avoir autre chose que "OFF" et "Vacances" ... le code ne vérifie que OFF et Vacances et considère tout le reste comme le mode AUTO. Partager ce message Lien à poster Partager sur d’autres sites
benjaoriane 3 Signaler ce message Posté(e) 11 novembre 2014 Bonjour à tous, J'ai adapté ce code pour gérer mon chauffage, c'est le top, merci Steven. Par contre, j'ai un soucis pour utiliser le panneau de chauffage, visiblement à cause du bug de json dans la version 4.018 (même message d'erreur que yoda6907)... Comment peut on faire dans ce cas là ? Pour info, je suis obligée de rester dans cette version pour utiliser le plugin virtual sensor qui gère ma sonde de température ! Merci d'avance de votre aide Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 11 novembre 2014 Il faudrait coder les heures directement dans le module virtuel en attendant mais sans ma HC2 je n'y arriverais pas. Il faut attendre quelques jours. Envoyé de mon HTC One_M8 dual sim en utilisant Tapatalk Partager ce message Lien à poster Partager sur d’autres sites
yoda6907 0 Signaler ce message Posté(e) 11 novembre 2014 (modifié) Bonjour à tous, J'ai adapté ce code pour gérer mon chauffage, c'est le top, merci Steven.Par contre, j'ai un soucis pour utiliser le panneau de chauffage, visiblement à cause du bug de json dans la version 4.018 (même message d'erreur que yoda6907)...Comment peut on faire dans ce cas là ?Pour info, je suis obligée de rester dans cette version pour utiliser le plugin virtual sensor qui gère ma sonde de température ! Merci d'avance de votre aide Bonsoir,Pour ma part, j'ai fait un downgrade vers la version 3.590. J'ai retouché le module pour y intégrer une gestion par le fil pilote (gestion des ordres confort, eco, arret, ..). J'ai laisse tombé le panneau de chauffage pour utiliser des variables : L'idée est de définir dans les variables (une pour chaque jour) les plages horaires pendant lequel le chauffage doit être en mode confort. Si pas dans la plage, on passe en mode Eco -- Bout de code qui détermine si l'on est dans une plage 'Confort' local i = 1 -- Recupere les plages horaire 'Confort' du jour local day = string.lower(os.date("%A")) local ch ="?" fibaro:debug("Jour : " ..day) ch =fibaro:getGlobal(day) local lg = string.len(ch) fibaro:debug("Chaine :" .. ch .. "-" .. lg) local hour = (os.date("%H")) local min = (os.date("%M")) local now = 100000 + hour * 60 + min fibaro:debug("jour : " ..day) local ipos1 = 0 while (ipos1 <= lg) do local sep1=string.find (ch,"-",ipos1) local sep2=string.find (ch,"/",sep1) hdeb=string.sub(ch,ipos1,sep1-1) hdebH=(string.sub(hdeb,0,2)) hdebM=(string.sub(hdeb,4,5)) heuredebut =100000 + hdebH * 60 + hdebM hfin=string.sub(ch,sep1+1,sep2-1) hfinH=(string.sub(hfin,0,2)) hfinM=(string.sub(hfin,4,5)) heurefin =100000 + hfinH * 60 + hfinM fibaro:debug(heuredebut .. "-" ..heurefin) ipos1 = sep2 + 1 if (now >= heuredebut) and (now <= heurefin) then gAutoConfort = 1 fibaro:debug("Plage N° : " ..i) break end i=i+1 end Voila rapidement. Je tacherais de prendre du temps pour diffuser le module complet Modifié 15 novembre 2014 par yoda6907 Bonjour, merci d'editer le message et d'utiliser les balises pour code : <> Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 12 novembre 2014 merci @Steven je viens de faire la modification, mais comme je suis au boulot et que les icônes de certain vd ne remonte pas, je ne vois pas si cela fonctionne, s'en en a tout l'air en tous cas. je te teins au courant 1 Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 14 novembre 2014 Pour les fou de la v 4.018 Voici une solution temporaire (workaround) autre que celle de yoda6907 (qui a l'avantage d'utiliser des variables globales et d'être plus lisible). J'ai donc remplacer la méthode Heating.getTempPanel par celle-ci (quasiment identique) Heating.getTempPanel = function() if (fibaro:getGlobal("Chauffage") == "VACANCES") then return Heating.holidays end --local strefa = Heating.stefa local day = string.lower(os.date("%A")) local hour = os.date("%H") local min = os.date("%M") local now = 0 local temp = 0 local lasttemp = 0 local mode = "" local lastmode = "" --HC2 = Net.FHttp("127.0.0.1",80) --HC2:setBasicAuthentication(Heating.admin, Heating.password) --response = HC2:GET("/api/panels/heating?id="..strefa) --local jsontable =json.decode(response) local week = {"monday","tuesday","wednesday","thursday","friday", "saturday", "sunday"} local datas = {} datas["monday"] = {} datas["monday"]["morning"] = {hour=7; minute=0; temperature=21} datas["monday"]["day"] = {hour=9; minute=0; temperature=19} datas["monday"]["evening"] = {hour=16; minute=0; temperature=21} datas["monday"]["night"] = {hour=23; minute=0; temperature=19} datas["tuesday"] = datas["monday"] datas["thursday"] = datas["monday"] datas["friday"] = datas["monday"] datas["wednesday"] = {} datas["wednesday"]["morning"] = {hour=7; minute=0; temperature=21} datas["wednesday"]["day"] = {hour=9; minute=0; temperature=21} datas["wednesday"]["evening"] = {hour=16; minute=0; temperature=21} datas["wednesday"]["night"] = {hour=23; minute=0; temperature=19} datas["saturday"] = datas["wednesday"] datas["sunday"] = datas["wednesday"] for k,v in pairs(week) do if (v == day) then now = k * 100000 + hour * 60 + min end end for k,v in pairs(week) do for l,w in pairs({"morning","day","evening","night"}) do if (now > k*100000+datas[v][w].hour*60+datas[v][w].minute) then temp = datas[v][w].temperature mode = v .. " .. " ..w end lasttemp = datas[v][w].temperature lastmode = v .. " .. " ..w end end if (temp == 0) then temp = lasttemp mode = lastmode end local oldMode = fibaro:getValue(fibaro:getSelfId(), "ui.lblMode.value") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblMode.value", mode ) if (oldMode ~= mode) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblCorr.value", 0) end return tonumber(temp)+Heating.getCorrection() end Vous constaterez que j'ai simplement déclarer en "dur" les jours et heures de chauffe en reprenant le même format que retourne normalement le panneau de chauffage de la fibaro. Voici une petit explication rapide : - Chaque jour est composé de 4 périodes : matin, jour, soirée, nuit - Chaque période commence à une certaine heure et est liée à une certaine température. Dans mon cas j'ai déclaré les données pour le lundi et ensuite j'ai juste indiqué que mardi, jeudi et vendredi sont identique datas["monday"] = {} datas["monday"]["morning"] = {hour=7; minute=0; temperature=21} datas["monday"]["day"] = {hour=9; minute=0; temperature=19} datas["monday"]["evening"] = {hour=16; minute=0; temperature=21} datas["monday"]["night"] = {hour=23; minute=0; temperature=19} -- Idem que lundi datas["tuesday"] = datas["monday"] datas["thursday"] = datas["monday"] datas["friday"] = datas["monday"] Pour moi le mercredi est comme le week-end, un jour non-travaillé datas["wednesday"] = {} datas["wednesday"]["morning"] = {hour=7; minute=0; temperature=21} datas["wednesday"]["day"] = {hour=9; minute=0; temperature=21} datas["wednesday"]["evening"] = {hour=16; minute=0; temperature=21} datas["wednesday"]["night"] = {hour=23; minute=0; temperature=19} -- idem que le mercredi datas["saturday"] = datas["wednesday"] datas["sunday"] = datas["wednesday"] Voilà , avec un peu d'attention, c'est assez simple à comprendre et adapté. J'espère avoir répondu a vos attente. Partager ce message Lien à poster Partager sur d’autres sites
benjaoriane 3 Signaler ce message Posté(e) 14 novembre 2014 super, merci Steven, je pense que ça va résoudre mes soucis! Je vais tester le plus vite possible !!! Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 15 novembre 2014 @Fredric Tu as eu raison de faire un "UP" je t'avais oublié .. honte sur moi. Ce que tu aimerais c'est qu'en mode "MANUEL" le module virtuel ne fasse plus rien ? C'est bien cela ? Dans mon code, cherche Heating.run = function() et juste la ligne en dessous ajoute ceci : if (fibaro:getGlobal("Chauffage") == "MANUEL") then return end Cela va stopper le module virtuel en mode MANUEL. Tiens moi au courant stp. P.S: Oui "ON" est juste pour avoir autre chose que "OFF" et "Vacances" ... le code ne vérifie que OFF et Vacances et considère tout le reste comme le mode AUTO. Merci @Steven, cela marche parfaitement 1 Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 23 décembre 2014 Bonjour @Steven, peux-tu me dire si la modification suivant est possible et fonctionnel dans ton module. pour que le chauffage fonctionne différemment selon si il y à personne ou si on est là , j'ai créé une deuxième zone de chauffage et je souhaite l'activer via une variable que j'utilise déjà dans plusieurs scripts. l'idée: "si aujourd’hui est égale à 1 alors choisir l'ID 5 si non choisir l'ID 3" -- Méthode à appeler toutes les X secondes (30) par -- un scénario afin de rafraichir ce programme if (not Heating) then Heating = {} Heating.hysteresis = 0.7 --- +/- de chauffage Heating.holidays = 17 -- température souhaitée du mode vacances if tonumber(fibaro:getGlobalValue("Aujourdhui")) == tonumber("1") then Heating.stefa = 5 -- id du panneau de chauffage Present elseif Heating.stefa = 3 -- id du panneau de chauffage normal end Heating.admin = "login" Heating.password = "password" tu ne vois pas de complication pour le bon fonctionnement de ton module? Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 23 décembre 2014 Aucune contre-indication de mon côté, l'idée me semble même bonne. Juste que ton code n'est pas bon .. .voici la version corrigée if (tonumber(fibaro:getGlobalValue("Aujourdhui")) == 1) then Heating.stefa = 5 -- id du panneau de chauffage Present else Heating.stefa = 3 end Partager ce message Lien à poster Partager sur d’autres sites
Fredric 297 Signaler ce message Posté(e) 23 décembre 2014 (modifié) ok, super j'ai un bug, j'avais déjà créé deux zones, une pour la sale de bain et une pour la zone 1 (salon, salle à manger ...), pas de soucis, les températures sont bien respectés. si je crée une troisième ou même plus, les horaires ne sont pas respectés, par exemple, il est 18h45, il va chercher la température de 00h00. tu as créé plusieurs zones ??? ça vient du panneau de chauffage, j'en ai créé un autre sans supprimer ce dernier et ça marche!! va comprendre...... Modifié 23 décembre 2014 par Fredric Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 24 décembre 2014 Bonne nouvelle. Pour l'instant j'ai pas remis les zones. Il faudrait que je le fasse. Je les avait enlever lorsque le json ne fonctionnait plus. Envoyé de mon portable grâce àmes petits doigts. Partager ce message Lien à poster Partager sur d’autres sites
barnabe 0 Signaler ce message Posté(e) 7 mai 2015 Bonjour..... Petite question concernant toujours le même pb de conversion des données récupérer sur la ZIBASE: J'ai appliqué la ligne suivante sur un Slider (comme le devise virtuel de STEVEN) local temp = tonumber(fibaro:getValue(37, "ui.Slider1.value"))/10 et malgré cela , mes données affichées sont toujours sans la virgule !!! je pêche :-( besoin d'aides merci Partager ce message Lien à poster Partager sur d’autres sites