flechg Posté(e) le 23 janvier 2017 Signaler Partager Posté(e) le 23 janvier 2017 Bonsoir, voila j avais un module virtuel qui contrôlait le chauffage et qui ne fonctionne plus depuis la mise a jours une idée HC2 = Net.FHttp("192.168.x.xx",80) HC2:setBasicAuthentication(";;;;", ";;;;;") -- get harmonogram response ,status, errorCode = HC2:GET("/api/panels/heating/287") jsonTable = json.decode(response) -- change table in Lua l jsonTable.properties.handTemperature = 24; jsonTable.properties.handTimestamp = os.time() + (90*60) -- send back json = json.encode(jsonTable); HC2:PUT("/api/panels/heating/287", json) fibaro:log("24°C 1 hours") j ai ca comme message d erreur [ERROR] 20:55:20: line 9: attempt to call field 'decode' (a nil value) merci encore cdt Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 23 janvier 2017 Signaler Partager Posté(e) le 23 janvier 2017 Bonsoir, mets le son de ton panneau stp, je n'utilise pas ;-) Essaie cela mais sans aucune certitude response ,status, errorCode = api.get("/api/panels/heating/287") jsonTable = json.decode(response) fibaro:debug(jsonTable.properties.handTemperature) fibaro:debug(jsonTable.properties.handTimestamp) -- change table in Lua l jsonTable.properties.handTemperature = 24 jsonTable.properties.handTimestamp = os.time() + (90*60) -- send back json = json.encode(jsonTable) api.put("/api/panels/heating/287", json) Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 23 janvier 2017 Signaler Partager Posté(e) le 23 janvier 2017 salut,` Je viens de vérifier, mon code fonctionne toujours. Tu verras que j'utilise une autre IP, qui permet de s'affranchir de devoir mettre l'IP réelle de la box et le mdp ---------------------------------- -- User Settings ---------------------------------- local VDVar_Chauffage = 321 local VDVar_Vacances = 318 -- ID des HeatingPanels local hpID = { "Rez_SdB", 6, "Etage_SdB", 5, "Etage_Bureau", 4, "Etage_ChEnfants", 7, "Etage_SdJ", 8, "Etage_Bibliotheque", 9, } -- HeatingPanels actifs pour variable Chauffage = 0 (ECS) local hp0 = { } fibaro:debug ("#hp0 = " ..#hp0) -- HeatingPanels actifs pour variable Chauffage = 1 (SdB) local hp1 = { "Rez_SdB", "Etage_SdB", } fibaro:debug ("#hp1 = " ..#hp1) -- HeatingPanels actifs pour variable Chauffage = 2 (Oui) local hp2 = { "Rez_SdB", "Etage_SdB", "Etage_Bureau", "Etage_ChEnfants", "Etage_SdJ", "Etage_Bibliotheque", } fibaro:debug ("#hp2 = " ..#hp2) local tmpOff = 14 -- température pour HP Off ---------------------------------- -- DO not change bellow this line --------------------------------- local HC2 = Net.FHttp("127.0.0.1",11111) local GETheating = "/api/panels/heating/" -- fonction de mise à jour du heating panel -- si handTemperature == 0, c'est en auto function HeatPanel(id,HandTmp) jsonpanel = HC2:GET(GETheating ..id) jsontable = json.decode(jsonpanel) handTimestamp = jsontable.properties.handTimestamp handTemperature = jsontable.properties.handTemperature name = jsontable.name NouveauPanel = ('{"id":' ..id.. ',"name":"'..name.. '","properties":{"handTemperature":' ..handTemperature.. ',"handTimestamp": ' ..handTimestamp.. ',"vacationTemperature":' ..HandTmp.. '}}') HC2:PUT(GETheating ..id, NouveauPanel) end -- fonction pour trouver l'ID du heating panel function HeatPanelID() fibaro:debug("hpName = " ..hpName) for j = 1, #hpID, 2 do fibaro:debug(hpID[j]) if hpName == hpID[j] then hpId = hpID[j+1] end end end hpName = "" -- nom du HP en cours de traiemeent hpId = 0 -- ID du HP en cours de traitement -- lecture de la valeur du chauffage local Chauffage = fibaro:get(VDVar_Chauffage, "ui.Statut.value") fibaro:debug("Chauffage = " ..Chauffage) -- lecture de Vacances = Oui/Non local Vacances = fibaro:get(VDVar_Vacances, "ui.Statut.value") fibaro:debug("Vacances = " ..Vacances) -- mettre tous les manneaux en manuel -- Vacances = Oui, alors tout les HP sont en manuel fibaro:debug("Mettre tous les HP en mode manuel") fibaro:debug("#hpID = " ..#hpID) for i = 1, #hpID, 2 do fibaro:debug("hpID[" ..i.. "] = " ..hpID[i].. " = " ..hpID[i+1]) HeatPanel(hpID[i+1], tmpOff) end -- remettre les panneaux qu'il faut en auto -- seuleement si Vacances = Non if Vacances == "Non" then fibaro:debug("VACANCES = Non") fibaro:debug("Mode chauffage : "..Chauffage) if Chauffage == "ECS" then hpId = 0 for i = 1, #hp0 do hpName = hp0[i] HeatPanelID() fibaro:debug("hpId = " ..hpId) HeatPanel(hpId, 0) end elseif Chauffage == "SdB" then hpId = 0 for i = 1, #hp1 do hpName = hp1[i] HeatPanelID() fibaro:debug("hpId = " ..hpId) HeatPanel(hpId, 0) end elseif Chauffage == "Oui" then hpId = 0 for i = 1, #hp2 do hpName = hp2[i] HeatPanelID() fibaro:debug("hpId = " ..hpId) HeatPanel(hpId, 0) end end else fibaro:debug("VACANCES = OUI") end Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 23 janvier 2017 Signaler Partager Posté(e) le 23 janvier 2017 Tu n'utilise pas une autre ipTu utilises le localhost et le port 11111 pour éviter le mot de passeEnvoyé de mon SM-G901F en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
flechg Posté(e) le 23 janvier 2017 Auteur Signaler Partager Posté(e) le 23 janvier 2017 (modifié) il y a 34 minutes, pepite a dit : Bonsoir, mets le son de ton panneau stp, je n'utilise pas ;-) désolé Pepite mais j ai pas compris pour ce qui du code ca fonctionne pas @mprinfo j utilise la même ip mais depuis la mis a jours j ai ce message d erreur j ai essayé le localhost et le nouveau pass depuis la mise a jours mais rien n y fait @jojomerci je vais étudier ton code mais étant pas aussi calé que toi le mien était plus simple a koi correspond les vdvar_chauffage merci encore a vous tous Modifié le 23 janvier 2017 par flechg Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 24 janvier 2017 Signaler Partager Posté(e) le 24 janvier 2017 Le vdvar_chauffagecorrespond à l'id du VD que j'utilise pour mettre à jour la variable chauffage Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 24 janvier 2017 Signaler Partager Posté(e) le 24 janvier 2017 @flechg, J'ai dit une betise dans le code que je t'ai donne. Plus simple que @jojo, ca fonctionne aussi. Mais le code de @jojo est TOP local IdPanel = 90 local response, status, errorCode = api.get("/panels/heating/"..IdPanel) fibaro:debug("ErrorCode = "..tonumber(errorCode or 0)) fibaro:debug("HandTemperature : " ..response.properties.handTemperature) fibaro:debug("HandTimeStamp : " ..response.properties.handTimestamp) response.properties.handTemperature = 25 --response.properties.handTimestamp = api.put("/panels/heating/"..IdPanel) fibaro:debug("HandTemperature : " ..response.properties.handTemperature) fibaro:debug("HandTimeStamp : " ..response.properties.handTimestamp) Lien vers le commentaire Partager sur d’autres sites More sharing options...
flechg Posté(e) le 24 janvier 2017 Auteur Signaler Partager Posté(e) le 24 janvier 2017 @pepitemerci pour ton code mais quand je le mets dans le debug je n ai pas de message d erreur pa rcontre je n ai aucune action Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 24 janvier 2017 Signaler Partager Posté(e) le 24 janvier 2017 t'as changé l'id de ton panneau ? Comment cela tu le mets dans le debug ? Faut decommenter timestamp et mettre une valeur Il y a 8 heures, pepite a dit : --response.properties.handTimestamp = Lien vers le commentaire Partager sur d’autres sites More sharing options...
flechg Posté(e) le 24 janvier 2017 Auteur Signaler Partager Posté(e) le 24 janvier 2017 @pepite bonsoir voila le code que j ai mis je n ai pas de message d erreur mais aucune action local IdPanel = 287 local response, status, errorCode = api.get("/panels/heating/"..IdPanel) fibaro:debug("ErrorCode = "..tonumber(errorCode or 0)) fibaro:debug("HandTemperature : " ..response.properties.handTemperature) fibaro:debug("HandTimeStamp : " ..response.properties.handTimestamp) response.properties.handTemperature = 28 response.properties.handTimestamp = os.time() + (2*60*60) api.put("/panels/heating/"..IdPanel) fibaro:debug("HandTemperature : " ..response.properties.handTemperature) fibaro:debug("HandTimeStamp : " ..response.properties.handTimestamp) fibaro:log("28°C 2 hours") merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 25 janvier 2017 Signaler Partager Posté(e) le 25 janvier 2017 (modifié) Salut @flechg, Mais as-tu un retour dans le debug, vois tu affichée HandTemperature par exemple ? Tu as mis cela dans une scene ou un VD ? Bizarre, chez moi cela fonctionne, enfin le code, je ne suis pas allé voir le panneau à vrai dire. Question, je n'utilise pas de panneau, mais lorsque tu mets une temperature et un timestamp ca passe en manuel on est d'accord ? si tu tapes ceci dans un navigateur, as tu un retour avec les valeurs modifiées ? http://IPHC2/api/panels/heating/287 Je viens de tester, t'as raison, ca modifie bien le json mais pas le panneau. Les experts vous avez une idée ou est-ce que je me trompe avec ce code ? Modifié le 25 janvier 2017 par pepite Lien vers le commentaire Partager sur d’autres sites More sharing options...
flechg Posté(e) le 25 janvier 2017 Auteur Signaler Partager Posté(e) le 25 janvier 2017 Bonsoir désolé de la réponse tardive mais je me battais avec mon téléphone qui après un root doit surement retourner en sav bon voila ce que j ai dans le debug [DEBUG] 23:47:17: ErrorCode = 0 [DEBUG] 23:47:17: HandTemperature : 25 [DEBUG] 23:47:17: HandTimeStamp : 1485278140 [DEBUG] 23:47:17: HandTemperature : 28 [DEBUG] 23:47:17: HandTimeStamp : 1485391637 Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés