
tibo789
Membres confirmés-
Compteur de contenus
49 -
Inscription
-
Dernière visite
Tout ce qui a été posté par tibo789
-
Bonsoir, je n'arrive pas non plus a lire correctement les sous elements. Je vais faire un mail a fibaro car cela marchais bien avant ,il doit y a avoir un bug car erreur 503 a chaque fois que je fait un put sur l'arrosage pas normal. Je me fais operé des cervicales demain donc je mets en stanby quelques jour cela m'occupera pour la convalescence
-
avec ton code j'ai donc modifier le code pour ajouter le decode local response = HC2:GET("/api/panels/drenchers") json = json.decode(response) fibaro:debug("Lecture de json.rainDelay avant modification: " ..json.rainDelay.. " Cycles : " ..json.cycles) fibaro:debug("Nom 187 : " ..json.drenchers[1].name) j'ai l'erreursinon delay et cycles sont ok Comme si json.drenchers était comme un tableau. j'ai trouvé un script qui décode en texte et le résultat est interresant local response = HC2:GET("/api/panels/drenchers") monTableau = json.decode(response) fibaro:debug("api:get "..response) function table.val_to_str ( v ) if "string" == type( v ) then v = string.gsub( v, "\n", "\\n" ) if string.match( string.gsub(v,"[^'\"]",""), '^"+$' ) then return "'" .. v .. "'" end return '"' .. string.gsub(v,'"', '\\"' ) .. '"' else return "table" == type( v ) and table.tostring( v ) or tostring( v ) end end function table.key_to_str ( k ) if "string" == type( k ) and string.match( k, "^[_%a][_%a%d]*$" ) then return k else return "[" .. table.val_to_str( k ) .. "]" end end function table.tostring( tbl ) local result, done = {}, {} for k, v in ipairs( tbl ) do table.insert( result, table.val_to_str( v ) ) done[ k ] = true end for k, v in pairs( tbl ) do if not done[ k ] then table.insert( result, table.key_to_str( k ) .. "=" .. table.val_to_str( v ) ) end end return "{" .. table.concat( result, "," ) .. "}" end fibaro:debug(table.tostring(monTableau))
-
J'ai bien un retour quand je lis jsonTable.rainDelay . j'arrive a l’écrire jsonTable.rainDelay =24 mais quand je fais l'encodage ecriture = json.encode(jsontable) je vois bien jsonTable.rainDelay à 24 mais pas au bonne endroit. C'est pour cela je pense que je pars en erreur 503 . Je n'ai rien trouvé sur internet montrant un decode et encodage different
-
Bonjour Loizauc et merci pour ce code je l'ai testé telque avant de modifier quoique ce soit mais ca m'a planté encore en erreur 503:( j'ai bloquer pour le moment le Put sinon iil trouve bien mes 7 arroseurs avec #dr =7 mais il ne trouve pas l' id = jsonTable.drenchers.id qui devrait être 187 pour le premier donc il plante sur fibaro:call(id, "setDrenchingMode", "auto")
-
pour info j'ai ouvert un autre fil https://www.domotique-fibaro.fr/topic/10404-erreur-503-suite-json-hc2put-du-panneau-arrosage/#comment-159551
- 57 réponses
-
- Script lua
- gestion
-
(et 2 en plus)
Étiqueté avec :
-
Bonjour , j'ai jamais eu le temps de donner mon résultat final voila comment je calcule le temps de fonctionnement de la piscine inspiré de se que j'avais trouvé sur zibase Le temps de filtration est optimisé en fonction de la température cela fais 2 ans que ca fonctionne parfaitement La filtration est lancé par un script 7 fois par jour Bouton calcultemps lancé 1 fois par jour a midi local idEau = 148; local tempEau = fibaro:getValue(idEau,"value"); local currentDate = os.date("*t"); local MinuteDebut= currentDate.min local HeureDebut= currentDate.hour local MinuteFin= 0 local HeureFin= 0 fibaro:debug(HeureDebut) fibaro:debug(MinuteDebut) --calcul duree filtration local Duree = 45 + (tonumber(tempEau) - 17) * 5; if Duree < 0 then Duree =0 else if Duree > 120 then Duree = 120 end end -- calcul heure d'arret if Duree + MinuteDebut < 60 then MinuteFin = MinuteDebut + Duree HeureFin = HeureDebut else if Duree + MinuteDebut > 60 then MinuteFin = Duree - 60 + MinuteDebut HeureFin = HeureDebut + 1 else if Duree + MinuteDebut == 120 then MinuteFin = 0 HeureFin = HeureDebut + 2 end end end fibaro:debug(HeureFin) fibaro:debug(MinuteFin) TempsPiscine=string.format("%02d", HeureFin) .. ":" .. string.format("%02d", MinuteFin) fibaro:debug(TempsPiscine) fibaro:setGlobal("TempPiscine", Duree) fibaro:setGlobal("TempsPiscine", TempsPiscine) fibaro:debug("Duree :"..fibaro:getGlobalValue("TempPiscine")) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label3.value", "Durée Filtration "..fibaro:getGlobalValue("TempPiscine").."mn x 7") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label4.value", "Heure Arret "..fibaro:getGlobalValue("TempsPiscine")) et dans la boucle principale if string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == fibaro:getGlobalValue("TempsPiscine") then fibaro:call(idPump, "turnOff"); fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", "Pompe à l'arrêt"); end
-
bonjour, j'ai mis en place l'année dernière le vd de lolomail sur Gestion des délais d'arrosage qui fonctionnait très bien. entre temps je suis passé en 4.120 et en voulant remettre l'arrosage en service cette semaine j'ai retesté le module qui paraissait fonctionner Je me suis retrouvé en erreur 503 j'ai du faire un recovry car plus possible d'acceder à la hc2. Apres restauration complète , rebelotte après quelques heures de prise de tête , j'ai réussi a identifier d'ou provenais le problème en isolant a ligne --response ,status, errorCode = HC2:PUT("/api/panels/drenchers", json); et la plus de problème erreur 503 ouf!! Mais le module ne fonctionne plus , ci-joint le code idem tous les bouton. avez vous le meme probleme HC2 = Net.FHttp("127.0.0.1",11111) response ,status, errorCode = HC2:GET("/api/panels/drenchers") if tonumber(status) == 200 then jsonTable = json.decode(response) fibaro:debug("lecture "..response) else fibaro:debug("Status:" .. status .. " err: " .. errorCode ) end -- change table in Lua for 0 hours delay jsonTable.rainDelay = 0 -- send back json = json.encode(jsonTable) --response ,status, errorCode = HC2:PUT("/api/panels/drenchers", json); fibaro:debug("ecriture "..json) en utilisant le debug je m'apercois que la lecture et l’écriture sont différents ce qui devait bloquer la Hc2 en 503 raindelay et cycle sont placé a la fin !!! Du coup je ne sais plus quoi faire. Quelqu'un a déjà eu un problème similaire avec le Json et le put ? Comment arriver a refaire fonctionner ce module très pratique . merci de votre aide
- 57 réponses
-
- Script lua
- gestion
-
(et 2 en plus)
Étiqueté avec :
-
:(. je vais essayer de reconstruit le tableau json !! pour remettre dans l'ordre du type local Message='{"adjustWater"'..":"..''..jsontable.adjustWater..',"rainDelay"'..":"..''..jsontable.rainDelay..',"cycles"'..":"..''..jsontable.cycles..'}'
-
ca a replanté restart service a suffit, mais a priori on vois bien le changement de raindelay à 24 mais il n'est pas placé ou il faut après l'encodage HC2 = Net.FHttp("127.0.0.1",11111) local response = HC2:GET("/api/panels/drenchers") jsontable = json.decode(response) fibaro:debug("Lecture de json.rainDelay avant modification: " ..jsontable.rainDelay) jsontable.rainDelay = 24 fibaro:debug("json RainDelay : "..jsontable.rainDelay) ecriture = json.encode(jsontable) fibaro:debug("apres encodage : "..ecriture) --HC2.PUT("/api/panels/drenchers", ecriture)
-
j'ai legerement modifier le code : et j'ai maintenant une erreur fttp HC2 = Net.FHttp("127.0.0.1",11111) local response = HC2:GET("/api/panels/drenchers") jsontable = json.decode(response) fibaro:debug("Lecture de json.rainDelay avant modification: " ..jsontable.rainDelay) jsontable.rainDelay = 24 fibaro:debug("json RainDelay : "..jsontable.rainDelay) HC2.PUT("/api/panels/drenchers", jsontable)
-
sur le second test encore une erreur ligne 3 'attempt to concatenate field 'raindelay'( a nil value) iIl ne faut decoder le json afin de modifier un champs. le problème de j'ai constaté c'est qu'en encodant la structure est différente
-
J'ai vue impeccable. Je modifiais le raindelay mais cela fonctionnait nickel l'an passé, ils ont du changer qque chose nos amis de fibaro { adjustWater: 0, rainDelay: 0, cycles: 1, drenchers: [ { id: 187, name: "Haie Laurier", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 10, duration: 3 } ], nextDrenching: 0, state: "false" }, { id: 188, name: "Bute", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 20, duration: 3 } ], nextDrenching: 0, state: "false" }, { id: 201, name: "Pelouse Etendoir", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 30, duration: 5 } ], nextDrenching: 0, state: "false" }, { id: 202, name: "Fleurs Etendoir", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 40, duration: 3 } ], nextDrenching: 0, state: "false" }, { id: 205, name: "Pelouse Bassin", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 50, duration: 5 } ], nextDrenching: 0, state: "false" }, { id: 206, name: "Haie Cloture", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 3, minute: 0, duration: 3 } ], nextDrenching: 0, state: "false" }, { id: 329, name: "Cuisine", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 3, minute: 10, duration: 2 } ], nextDrenching: 0, state: "false" } ] }
-
ca correspond bien a mes copie d'ecran de lecture {"adjustWater":0,"rainDelay":6171,"cycles":1,"drenchers":[{"id":187,"name":"Haie Laurier","mode":"off","dead":"false","manualTime":0,"days":[],"cycles":[{"hour":2,"minute":10,"duration":3}],"nextDrenching":0,"state":"false"},{"id":188,"name":"Bute","mode":"off","dead":"false","manualTime":0,"days":[],"cycles":[{"hour":2,"minute":20,"duration":3}],"nextDrenching":0,"state":"false"},{"id":201,"name":"Pelouse Etendoir","mode":"off","dead":"false","manualTime":0,"days":[],"cycles":[{"hour":2,"minute":30,"duration":5}],"nextDrenching":0,"state":"false"},{"id":202,"name":"Fleurs Etendoir","mode":"off","dead":"false","manualTime":0,"days":[],"cycles":[{"hour":2,"minute":40,"duration":3}],"nextDrenching":0,"state":"false"},{"id":205,"name":"Pelouse Bassin","mode":"off","dead":"false","manualTime":0,"days":[],"cycles":[{"hour":2,"minute":50,"duration":5}],"nextDrenching":0,"state":"false"},{"id":206,"name":"Haie Cloture","mode":"off","dead":"false","manualTime":0,"days":[],"cycles":[{"hour":3,"minute":0,"duration":3}],"nextDrenching":0,"state":"false"},{"id":329,"name":"Cuisine","mode":"off","dead":"false","manualTime":0,"days":[],"cycles":[{"hour":3,"minute":10,"duration":2}],"nextDrenching":0,"state":"false"}]}
-
Bonsoir pepite et merci je vient de faire l'essai pas de plantage 503 mais erreur sur la ligne reponse.rainDelay = 2 => "attemp to index global 'reponse' (a nil value)
-
bonjour, j'ai mis en place l'année dernière le vd de lolomail sur Gestion des délais d'arrosage qui fonctionnait très bien. entre temps je suis passé en 4.120 et en voulant remettre l'arrosage en service cette semaine j'ai retesté le module. Je me suis retrouvé en erreur 503 j'ai du faire un recovry car plus possible d'acceder à la hc2. Apres restauration complète , rebelotte après quelques heures de prise de tête , j'ai réussi a identifier d'ou provenais le problème en isolant a ligne --response ,status, errorCode = HC2:PUT("/api/panels/drenchers", json); et la plus de problème erreur 503 ouf!! Mais le module ne fonctionne plus , ci-joint le code idem tous les bouton HC2 = Net.FHttp("127.0.0.1",11111) response ,status, errorCode = HC2:GET("/api/panels/drenchers") if tonumber(status) == 200 then jsonTable = json.decode(response) fibaro:debug("lecture "..response) else fibaro:debug("Status:" .. status .. " err: " .. errorCode ) end -- change table in Lua for 0 hours delay --jsonTable.rainDelay = 0 -- send back json = json.encode(jsonTable) --response ,status, errorCode = HC2:PUT("/api/panels/drenchers", json); fibaro:debug("ecriture "..json) en utilisant le debug je m'apercois que la lecture et l’écriture sont différents ce qui devait bloquer la Hc2 en 503 Du coup je ne sais plus quoi faire. Quelqu'un a déjà eu un problème similaire avec le Json et le put ? Comment arriver a refaire fonctionner ce module très pratique . merci de votre aide
-
Cela ne fonctionne pas si je mets une variable a la place de 3600. Je veux faire tourner la pompe de la piscine un certain temps fonction de la température de l'eau
-
je n'attire pas la foule personne n'a voulu realiser une tempo reblable sur HC2 ??? Je n'avais eu aucun proleme pour le faire sur la Zibase !!
-
Bonsoir, Je viens d'acquerir une HC2 que j'ai connecté a ma Zibase. Je transfert progressivement tout le Zwave sur la HC2 mais j'ai un souci sur le code en LUA. Je calcul un temps de fonctionnement en seconde de la pompe de filtration en fonction de la temperature de l'eau. J'ai essayé deux methodes mais sans resultat j'ai toujours une erreur pas moyen de faire une tempo reglable 3600 remplacé par fibaro:setGlobal("TempsMarchePiscine", "0") 1-fibaro.sleep(3600*1000) 2-setTimeout(function() fibaro:call(101, "turnOff");end, 3600*1000) Merci de votre aide
-
Je me suis inscrit car je viens d'acquérir une HC2 que je souhaite connecter à ma Zibase pour faire évoluer ma domotique