PITP2 Posté(e) le 16 janvier 2015 Signaler Partager Posté(e) le 16 janvier 2015 Bonjour, je souhaite réaliser un Virtual Device pour la gestion de mon chauffage. Pour cela je désire récupérer le json du panneau de chauffage pour ensuite le modifier et le réinjecter ... Première étape le json.decode et l'essaie d'affichage du résultat dans le debug HC2 = Net.FHttp("192.168.0.6",80) HC2:setBasicAuthentication("toto", "toto") response, status, errorcode = HC2:GET("/api/panels/heating/402") local monTableau = json.decode(response) fibaro:debug(monTableau) J'obtiens ceci dans le debug .. [ERROR] 19:22:22: line :debug (arg 2), expected 'string const &' got 'nil' cela commence bien Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lionel57 Posté(e) le 16 janvier 2015 Signaler Partager Posté(e) le 16 janvier 2015 Salut, si 402 est l'ID de ta pièce, essaye plutôt ça HC2 = Net.FHttp("192.168.0.6",80) HC2:setBasicAuthentication("toto", "toto") response, status, errorcode = HC2:GET("/api/panels/heating?id=402") local monTableau = json.decode(response) fibaro:debug(monTableau) Lien vers le commentaire Partager sur d’autres sites More sharing options...
PITP2 Posté(e) le 16 janvier 2015 Auteur Signaler Partager Posté(e) le 16 janvier 2015 @lionel, en fait la syntaxe que tu m'as donné pour le HC2:GET est celui de l'ancienne API à V4 il faut bien faire l'appel comme je l'ai indiqué. L'erreur que j'ai indiqué montre clairement un problème de format. Le debug attend un "string" (attention pas de débordement stp ) alors que je lui renvoie surement un tableau. J'ai essayé ainsi pour voir mais pas bien marche non plus fibaro:debug(monTableau[1]) j'ai aussi essayé avec ceci local texte = table.concat(monTableau) fibaro:debug(texte) et je n'ai plus de message d'erreur dans le debug par contre il n'est retourné aucune valeur [DEBUG] 20:23:14: [DEBUG] 20:25:00: Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ofwood Posté(e) le 16 janvier 2015 Signaler Partager Posté(e) le 16 janvier 2015 PITP2, json.decode() retourne une table. Tu ne peux pas passer une table comme ça telle quelle à une fonction qui s'attend à une chaîne de char comme fibaro:debug(). il va falloir que tu navigues dans la table en utilisant des index ou bien avec des boucles récursives. voici un petit exemple qui reprend ton code et 'dump' le contenu de la table json. Peut toujours servir pour du debuguer du code 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 -- HC2 = Net.FHttp("192.168.0.6",80) HC2:setBasicAuthentication("admin", "admin") response, status, errorcode = HC2:GET("/api/panels/heating/402") monTableau = json.decode(response) fibaro:debug(table.tostring(monTableau)) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ofwood Posté(e) le 16 janvier 2015 Signaler Partager Posté(e) le 16 janvier 2015 regardes aussi le tuto de Steven sur la gestion du chauffage avec des sondes oregon, netatmo... http://www.domotique-fibaro.fr/index.php/topic/841-gestion-chauffage-avec-sondes-oregon-netatmo-json-etc/?view=findpost&p=11865&hl=%2Bsteven+%2Bpellet son module virtuel utilise les données json du panneau de chauffage fibaro. Ca te fait déjà la moitié du boulot si j'ai bien compris ce que tu cherches à faire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
PITP2 Posté(e) le 18 janvier 2015 Auteur Signaler Partager Posté(e) le 18 janvier 2015 Merci Ofwood, je regarde tout cela et je publie le VD dès qu'il est ok Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 19 janvier 2015 Signaler Partager Posté(e) le 19 janvier 2015 Tiens, j'avais fait un tutorat sur ça ici : http://www.domotique-fibaro.fr/index.php/topic/916-gestion-simplifiée-du-chauffage-srt321-ssr303/ Module virtuel au message 3 : http://www.domotique-fibaro.fr/index.php/topic/916-gestion-simplifiée-du-chauffage-srt321-ssr303/?p=10257 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 26 janvier 2015 Signaler Partager Posté(e) le 26 janvier 2015 Petit conseil Dorénavant, on oublie les HC2 = Net.FHttp("192.168.0.6",80) HC2:setBasicAuthentication("toto", "toto") et on remplace par HC2 = Net.FHttp("127.0.0.1",11111) Ainsi .. plus besoin d'authentification et plus besoin de traîner des mots de passe dans nos modules virtuels. Pour le reste ... c'est long ... déjà 8 jours Trêve de taquinerie, si tu as besoin d'un coup de main ... c'est toujours avec plaisir. Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 26 janvier 2015 Signaler Partager Posté(e) le 26 janvier 2015 Conseil avisé. Ça marche même en 3.5 ? Envoyé de mon iPhone àl'aide de Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
PITP2 Posté(e) le 26 janvier 2015 Auteur Signaler Partager Posté(e) le 26 janvier 2015 @steven, merci pour le conseil qui était déjà intégré dans la version de test car j'ai honteusement pompé sur ton Virtuel Device Plus c'est long .... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 26 janvier 2015 Signaler Partager Posté(e) le 26 janvier 2015 Je peux rien garantir pour la 3.6, il faut essayé. Il n'y a pas de quoi avoir honte, cela sert à ça les échanges Lien vers le commentaire Partager sur d’autres sites More sharing options...
PITP2 Posté(e) le 1 février 2015 Auteur Signaler Partager Posté(e) le 1 février 2015 @Steven, ==> http://www.domotique-fibaro.fr/index.php/topic/3543-panneau-de-chauffage-sur-smartphone-et-tablettes/?p=50309 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 2 février 2015 Signaler Partager Posté(e) le 2 février 2015 Oui le 127.0.0.1:11111 fonctionne en v3.590 et v3.600. C'est tellement pratique Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 6 octobre 2016 Signaler Partager Posté(e) le 6 octobre 2016 (modifié) bonjour a tous je souhaite si il y a eu un changement depuis le passage de 4.100 mon code ne fonctionne pas [DEBUG] 11:30:02: line 7: attempt to index global 'Net' (a nil value) HC2 = Net.FHttp("127.0.0.1",11111) response = HC2:GET("/api/rooms/name?id=4") local monTableau = json.decode(response) fibaro:debug(monTableau) Modifié le 6 octobre 2016 par 971jmd Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 6 octobre 2016 Signaler Partager Posté(e) le 6 octobre 2016 @971jmd le Net.FHttp() n'est dispo que dans les VD, pas dans les Scènes Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 6 octobre 2016 Signaler Partager Posté(e) le 6 octobre 2016 haaa Ok merci et comment interroger un API dans une scène ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 6 octobre 2016 Signaler Partager Posté(e) le 6 octobre 2016 net.HTTPClient() il y a pleins d'exemples sur le forum Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 7 octobre 2016 Signaler Partager Posté(e) le 7 octobre 2016 j'ai chercher mai j'ai pas trouver la solution a mon probleme je cherche a comprendre comment fonctionne la fonction API. Sur module virtuel je commence a comprendre la chose, j'ai des resultat pas encouragent. Mai sur scène LUA j'ai aucun résultat . voici mon premier exercice,en LUA interroger ID 13 et afficher dans le debug le non du module : Name, roomID ....etc Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 7 octobre 2016 Signaler Partager Posté(e) le 7 octobre 2016 Alors pourquoi ne pas faire simple local device = api.get("/devices/13") print(device.name) 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 7 octobre 2016 Signaler Partager Posté(e) le 7 octobre 2016 Merci @Steven ok pour la méthode GET et je souhaite réaliser une methode PUT ? mon idée est copier ou modifier une partie des paramètres d'un FGD212 et de les appliqué a d'autre FGD, une façon d’exporter les paramètres. surtout le FGMS { "id": 192, "name": "Plafonnier Salon", "roomID": 4, "type": "com.fibaro.FGD212", "baseType": "com.fibaro.multilevelSwitch", "enabled": true, "visible": true, "isPlugin": false, "parentId": 190, "remoteGatewayId": 0, "interfaces": [ "energy", "levelChange", "light", "power", "zwave", "zwaveAlarm", "zwaveMultiChannelAssociation", "zwaveProtection", "zwaveSceneActivation" ], "properties": { "parameters": [ { "id": 1, "lastReportedValue": 12, "lastSetValue": 12, "size": 1, "value": 12 }, { "id": 2, "lastReportedValue": 81, "lastSetValue": 81, "size": 1, "value": 81 }, { "id": 3, "lastReportedValue": 1, "lastSetValue": 1, "size": 1, "value": 1 }, etc....... etc......... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 7 octobre 2016 Signaler Partager Posté(e) le 7 octobre 2016 Je n'aime pas ce genre de traitement donc je ne te fournirais jamais un code la dessus :-) Il y a pas mal d'info sur ce forum. Quitte à faire quelque chose de tordu et délicat, voici un exemple propre d'un put : local json = {["value"]="Coucou", ["invokeScenes"]=true} api.put("/globalVariables/Test", json) 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 7 octobre 2016 Signaler Partager Posté(e) le 7 octobre 2016 Et tu peux t'inspirer du travail de @jojo http://www.domotique-fibaro.fr/index.php/topic/3839-modification-des-propri%C3%A9t%C3%A9s-dun-device/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 7 octobre 2016 Signaler Partager Posté(e) le 7 octobre 2016 je savait que tu aurai dit ça l'idée n'est de copier l’intégralité des paramètre mes les plus utilisé pour le FGD -interrupteur à bascule -commutateur momentané -Niveau de luminosité minimum -Niveau de luminosité maximum -Le pourcentage d'une étape de variation (commande automatique) -Paramètre 6Durée d'une étape de variation (commande automatique) -Paramètre Le pourcentage d'une étape de variation (commande manuelle) etc etc Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 7 octobre 2016 Signaler Partager Posté(e) le 7 octobre 2016 si comprend bien le code local json = {["value"]="Coucou", ["invokeScenes"]=true} api.put("/globalVariables/Test", json) crée une variable Test Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 7 octobre 2016 Signaler Partager Posté(e) le 7 octobre 2016 Regarde la doc : Dans ce cas, cela modifie la variable Test Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés