Bono2007 Posté(e) le 21 janvier 2015 Signaler Posté(e) le 21 janvier 2015 Bonsoir, j'ai un problème avec mes modules virtuels. J'ai des sondes THGR810 sous Jeedom ( rfxcom) et voulant récupérer les valeurs de T° sous HC2, j'ai créé des modules virtuels avec 1 étiquette et j'ai mis en main loop : JEEDOM=Net.FHttp("192.168.0.32"); temp=JEEDOM:GET("http://192.168.0.32/core/api/jeeApi.php?apikey=xxx&type=cmd&id=257"); temp=json.decode(temp); fibaro:call(11,"setProperty","ui.lblSejour.value",temp.." °C "); sleep(6*1000); J'ai remarqué que les températures ne se réactualisent pas, sauf quand je réenregistre le module. Comment puis-je faire ? Merci
Steven Posté(e) le 22 janvier 2015 Signaler Posté(e) le 22 janvier 2015 A mon avis ... Le sleep(6*1000) fait planté ton main loop car cette fonction n'existe pas. Donc ton main loop s'execute une seule fois et ce stoppe. Essaie en copiant ce code : JEEDOM=Net.FHttp("192.168.0.32"); temp=JEEDOM:GET("/core/api/jeeApi.php?apikey=xxx&type=cmd&id=257"); temp=json.decode(temp); fibaro:call(11,"setProperty","ui.lblSejour.value",temp.." °C "); fibaro:sleep(6*1000);
Bono2007 Posté(e) le 22 janvier 2015 Auteur Signaler Posté(e) le 22 janvier 2015 Merci, effectivement un raté de ma part mais je débute en LUA et en HC2. Cela n'a pas l'air de fonctionner mieux.
Krikroff Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Tu devrais vérifier ton ID et aussi gérer les erreurs comme ceci local JEEDOM = nil, Net.FHttp("192.168.0.32", 80); local response, status, errorCode = JEEDOM:GET("/core/api/jeeApi.php?apikey=xxx&type=cmd&id=257"); -- check error if errorCode == 0 then -- check status and response value before... if ((tonumber(status) == 200) and (response ~= nil)) then response = json.decode(response); fibaro:call(11,"setProperty","ui.lblSejour.value",response.temp.." °C "); else fibaro:debug("Error!"); end else fibaro:debug("error code is "..errorCode.. ", response is ["..response.."]") end De plus je trouve étrange que ton response=json.decode(response); soit utilisable. Peut-être plus quelque chose comme response.temp
Bono2007 Posté(e) le 23 janvier 2015 Auteur Signaler Posté(e) le 23 janvier 2015 Propre c'est certain ! J'ai une erreur : [ERROR] 00:52:25: line 02: attempt to index local 'JEEDOM' (a nil value)
Krikroff Posté(e) le 24 janvier 2015 Signaler Posté(e) le 24 janvier 2015 oui il faut modifier la première ligne comme ceci local JEEDOM = Net.FHttp("192.168.0.32", 80); Mais de toute manière l'erreur est certainement sur ta manière d'utiliser le json car je doute que la temp soit accessible directement ou alors ce n'est pas une vrai API json...
Bono2007 Posté(e) le 24 janvier 2015 Auteur Signaler Posté(e) le 24 janvier 2015 En fait j'avais copié ça quelque part, et comme ça marchait... l'url me renvoie la valeur. J'ai supprimé et ça fonctionne. Dans quel(s) cas a-t-on un status <> 200 et une errorcode? Quand l'url ne renvoie rien ?
Bono2007 Posté(e) le 26 janvier 2015 Auteur Signaler Posté(e) le 26 janvier 2015 Au final ça ne marche pas très bien, j'ai des périodes assez longues sans réactualisation... Plusieurs heures !!! Je dois ouvrir le module virtuel, et le réenregistrer pour la mise à jour, alors qu'hier ça allait. Je ne parle même pas de mon oeil Fibaro qui ne se réveille même plus !
Messages recommandés