jimbo007be Posté(e) le 29 avril 2014 Auteur Signaler Posté(e) le 29 avril 2014 @q.philippe : tu peux toujours modifier le script de base pour pousser les valeurs dans des variables globales et utiliser celles-ci pour déclencher des scènes (fonction fibaro:setGlobal )
Arnaud78 Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 Bonjour, J'ai l'impression d'être le seul à ne pas savoir se connecter correctement sur la Netatmo à partir du HC2. Est-ce qu'une bonne âme charitable voudrait bien m'aider afin que je puisse dormir un jour à nouveau ? J'ai utilisé le script de Cédric Locqueneux concernant la mise en place d'un fichier script netatmo.php sur un serveur... (avec les différentes données, username, password, id, secret). Dans ce script, il est mentionné le fait que si on interroge l'adresse : http://www.xxxxx.xxx/script/netatmo.php?intext=int, on doit obtenir une suite d'information type : {"status":"ok","body":[{"beg_time":1399902868,"value":[[19.5,455,56]]}],"time_exec":0.011034965515137,"time_server":1399903486} ce qui semble être mon cas, uniquement lorsque je change le https par http dans ledit script. Dans le cas ou je garde à l'identique le script, j'obtiens une erreur du type : Warning: file_get_contents(https://api.netatmo.net/oauth2/token) [ function.file-get-contents]: failed to open stream: Invalid argument. Je précise une chose, si j'utilise le lien de Pascal Stephany de www.domotique-info.fr, cela semble fonctionner correctement (à part évidemment que j'ai ses valeurs au lieu des miennes). J'ai tenté d'utiliser le code de Krikroff dans un module virtuel en ayant préalablement créer les étiquettes qui vont bien et il semble que j'ai le même type d'erreur, c'est à dire : [DEBUG] 09:46:36: Récupération des données interieurs: false[DEBUG] 09:46:36: err: [string "while true do..."]:87: Expected value but found invalid token at character 1[DEBUG] 09:46:36: Récupération des données extérieurs : false[DEBUG] 09:46:36: err: [string "while true do..."]:43: Expected value but found invalid token at character 1 Donc voici mes questions : 1) Doit-on utiliser https ou http ? 2) Dans le cas de https, à Part le fichier netatmo.php, doit-on copier d'autres fichiers sur le serveur, type SDK ? ​3) Y a t-il quelques choses à faire par rapport à "Scope" ? 4) Heu? Pourquoi cela ne fonctionne pas ? ​Merci pour votre aide. Bonne journée. Arnaud
Steven Posté(e) le 13 mai 2014 Signaler Posté(e) le 13 mai 2014 Juste une petite info pour te faire gagner du temps : le https n'est pas supporté par la HC2.
Arnaud78 Posté(e) le 14 mai 2014 Signaler Posté(e) le 14 mai 2014 Bonjour, Merci pour cette précision, mais il n'y a pas de rapport avec la capacité ou non de la HC2 à gérer les Https. Un script, dumoins plusieurs sont actuellement ici ou sur d'autres forums. Lorsque j'utilise le module virtuel de Krikroff avec le domaine de Pascal Stephany. cela fonctionne correctement. Je pense qu'il y a une petite chose à faire sur le serveur qui détient le script, mais je ne sais pas quoi exactement. Merci.
Arnaud78 Posté(e) le 14 mai 2014 Signaler Posté(e) le 14 mai 2014 Bonjour, Je me réponds à moi-même au cas ou d'autres personnes seraient dans le même cas. Les différents scripts que l'on peut retrouver pour faire fonctionner le retour d'information de la Netatmo sur la HC2 ne fonctionne pas dans mon cas sans que je ne change les lignes d'accès à l'API par http au lieu de https. (cela dit dans la création de mon compte sur le site de Netatmo, les informations de connexion montraient 'http'). J'ai donc fait les changements, mais malgré cela, j'avais toujours un problème d'interprétation du Json via le module virtuel. Après différents essai, j'ai remarqué que malgré que fichier généré par l'appel de la page PHP était identique à un autre fichier fonctionnant (depuis le site de Pascal Stéphany) celui-ci n'était pas interpréter de la même façon. J'ai changé le code d'enregistrement de mon fichier script PHP en ISO-8859-1 au lieu de Utf-8 et maintenant cela fonctionne bien pour les différents devices et modules (5 au total). je vais enfin pouvoir dormir... Bonne journée.
q.philippe Posté(e) le 8 juin 2014 Signaler Posté(e) le 8 juin 2014 jimbo007be comment modifie le script pour les poser sur une variable. valeur CO2 par exemple. Après je l’intégrerai dans ma scène vmc.CO2 > 1000 ppm vitesse 2 vmc enclencher.
nostra Posté(e) le 21 juin 2014 Signaler Posté(e) le 21 juin 2014 Bonjour, Je suis encore nouveau, donc soyez indulgent. J'ai à peine déballé mon nouveau HC2 est installé quelques modules, que j'ai voulu y ajouter mon netatmo Autant cela marche sur une vera-lite, autant ici je n'y arrive pas, malgré les tutoriels. J'ai le script hébergé en local, que je peux appeler donc mon navigateur et qui le retourne les infos J'ai créé un device virtuel (comme expliqué dans le tuto) inséré : FHTE = Net.FHttp(« www.domotique-info.fr ») response = FHTE:GET(« 192.168.1.1/fibaro/scripts/netatmo.php ») – decoding json string to table result = json.decode(response) fibaro:setGlobal(« NetTempExt », result.body[1].value[1][1]); fibaro:setGlobal(« NetHumExt », result.body[1].value[1][2]); fibaro:log(fibaro:getGlobalValue(« NetTempExt »).. » °C « ..fibaro:getGlobalValue(« NetHumExt »).. » % « ) Dans le debug, j'ai toujours la même erreur : [ERROR] 14:50:41: line 1: unexpected symbol near '�' Je précise que je n'y connais rien en programmation ... Merci à vous
Krikroff Posté(e) le 23 juin 2014 Signaler Posté(e) le 23 juin 2014 Tu peux essayer en mettant l'adresse IP pour accéder àton script dans le Net.FHttp et juste le chemin dans le GET Envoyé de mon iPhone àl'aide de Tapatalk
nostra Posté(e) le 30 juin 2014 Signaler Posté(e) le 30 juin 2014 Merci pour la réponse (je me sens très très nul) J'ai progressé (quand j'ai eu le temps) mais je suis toujours bloqué : 1 FHTE = Net.FHttp("192.168.1.1") 2 response = FHTE:GET("fibaro/scripts/netatmo.php") 3 -- decoding json string to table 4 result = json.decode(response) 5 fibaro:setGlobal(" NetTempExt ", result.body[1].value[1][1]); 6 fibaro:setGlobal(" NetHumExt ", result.body[1].value[1][2]); 7 fibaro:log(fibaro:getGlobalValue(" NetTempExt ").. " °C " ..fibaro:getGlobalValue(" NetHumExt ").. " % " ) [ERROR] 12:47:01: line 4: Expected value but found invalid token at character 1 Merci
Krikroff Posté(e) le 30 juin 2014 Signaler Posté(e) le 30 juin 2014 Et avec un / devant fibaro dans le get ? Envoyé de mon iPhone àl'aide de Tapatalk
nostra Posté(e) le 30 juin 2014 Signaler Posté(e) le 30 juin 2014 Je suis mauvais, j'ai l'impression d'avancer ligne par ligne Bon, cela va mieux avec le "/" puisque le module affiche "C° %" mais pas la réponse générée par le fichier php Pourtant, en local, j'ai {"status":"ok","body":[{"beg_time":1404155542,"value":[[29.7,61]]}],"time_exec":0.011050939559937,"time_server":1404155611} ​J'aurais jamais du faire le droit....
Krikroff Posté(e) le 30 juin 2014 Signaler Posté(e) le 30 juin 2014 Bon, ça avance c' est déjà ça Tu peux faire un debug juste après la ligne 4 avec ça pour voir fibaro:debug("temperature_interieure" .. result.body[1].value[1][1] or "n.c"); et aussi ... FHTE:GET("/netatmo/netatmo.php?intext=int") pour la station intérieur
nostra Posté(e) le 2 juillet 2014 Signaler Posté(e) le 2 juillet 2014 Bon ok, çà marche Et moi qui suit débutant en programmation Lua, j'ai découvert que fibaro:setGlobal('NetTempExt', result.body[1].value[1][1]); fibaro:setGlobal("NetTempExt", result.body[1].value[1][1]); fibaro:setGlobal(' NetTempExt ', result.body[1].value[1][1]); fibaro:setGlobal(" NetHumExt ", result.body[1].value[1][2]); c'est la même chose, soit ' ou " avec ou sans espace Par contre fibaro:log(fibaro:getGlobalValue('_NetTempExt_').. " °C " ..fibaro:getGlobalValue("NetHumExt").. " % " ) soit un espace entre le ' et la variable.... ca marche pas Je vais continuer à tester la HC2 en faisant les tutoriels du site car cela m'a fait progresser et découvrir ce qui marche et ne marche pas Merci pour les coups de pouces et les encouragements PS : Je vais peut-être attendre la V4 et le module d'intégration du Netatmo, car : - oui cela marche, je récupère TempEtx et Humext - mais j'ai 2 "sites" avec des Netatmo dont un (mon petit coin de paradis où j'ai 4 modules intérieurs Je ne sais pas trop comment les interroger et je suppose qu'il faut d'abord modifier le fichier php
ADN182 Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 Salut tout le monde, j'ai fais l'acquisition de la station récemment et j'ai trouvé le moyen de contourné le problème du HTTPS, à l'aide d'un reverse proxy. http -> api.netatmo.mondomaine.com => [Reverse Proxy] => https -> api.netatmo.net Notre cher box accède en HTTP sur api.netatmo.mondomaine.com et obtiens donc l'API Netatmo Avantages : Evite d'avoir un serveur Web qui héberge le script Peut servir pour d'autre service (api) inaccessible en http mais uniquement en https Inconvénients : Mettre en place un reverse Proxy Reverse proxy toujours allumé (tout comme le serveur web pour le script php) C'est pas des plus simple, mais ça permet églement de faire passé d'autre appli. Exemple sur mon syno http://photo.mondomaine.com => https://localhost/photo https://synology.mondomaine.com => https://localhost:5001 http://fibaro.mondomaine.com => http://10.10.10.32 (ip de la box fibaro) ... Perso je n'utilise pas HA Proxy, mais il y a un très bon tuto de Lazer sur ce dernier pour bien comprendre le principe d'un reverse proxy et le mettre en place sur un Syno. Il reste plus qu'a faire un virtual device qui communique avec l'api
Steven Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 As-tu essayé depuis la HC2 ? Parce que si elle constate une redirection elle refuse l'appel.
ADN182 Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 Oui, ça fonctionne, le problème c'est la method post j'arrive pas encore a générer l'authentification. J'ai une erreur de requête. Je n'arrive pas a positionner l'enchainement des parametres (client id, client secret... ) et je vais peut être avoir un problème avec le header :s
Krikroff Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 Pour le header tu vas devoir utiliser le socket TCP et pas Net.FHttp et puis l' API Netatmo renvoi il me semble un json mal-formé avec régulièrement des espaces en début de chaîne et ça fait planter la lib json du HC2... que du bonheur
ADN182 Posté(e) le 20 juillet 2014 Signaler Posté(e) le 20 juillet 2014 Salut Krikroff, Quand tu parle de socket TCP c'est toujours en lua (ou string) ? Si c'est en string comment récupérer l'information du Token ? Tu aurais un exemple ?
Krikroff Posté(e) le 21 juillet 2014 Signaler Posté(e) le 21 juillet 2014 Oui c'est bien du LUA tu peux jeter un œil àmon framework LUA pour cela. Je l'utilise dans mes devices SONOS et Freebox entre autres .... Envoyé de mon iPhone àl'aide de Tapatalk
ADN182 Posté(e) le 23 juillet 2014 Signaler Posté(e) le 23 juillet 2014 Merci Krikroff nikel joli boulot avec le Framework ! Il y a un truc qui coince c'est comment formater mes data : local payload = [[ { "grant_type"="password", "client_id"="zzzzzz", "client_secret"="zzzzz", "username"="zz@zzzz", "password"="zzzz" } ]]; J'ai essayé avec sans crochet, sans les guillements, avec des simples quotes... rien n'y fait
Krikroff Posté(e) le 24 juillet 2014 Signaler Posté(e) le 24 juillet 2014 Tu peux essayer comme cela... local payload = [[{ "grant_type"="password", "client_id"="zzzzzz", "client_secret"="zzzzz", "username"="zz@zzzz", "password"="zzzz" }]]; Sinon, le debug donne quoi ?
ADN182 Posté(e) le 27 juillet 2014 Signaler Posté(e) le 27 juillet 2014 Merci pour ta réponse, je viens d'essayer ça ne fonctionne pas :s. Voici ce que cela donne niveau débug : [DEBUG] 17:31:50: ------------------------------------------------------------------------- [DEBUG] 17:31:50: -- HC2 Toolkit Framework version 1.0.4 [DEBUG] 17:31:50: -- Current interpreter version is Lua 5.1 [DEBUG] 17:31:50: -- Total memory in use by Lua: 87.53 Kbytes [DEBUG] 17:31:50: ------------------------------------------------------------------------- [DEBUG] 17:31:50: Toolkit.Net loaded in memory... [DEBUG] 17:31:50: Toolkit.Debug loaded in memory... [DEBUG] 17:31:50: Benchmark [Toolkit.Debug lib]: elapsed time: 0.000 cpu secs [DEBUG] 17:31:50: Toolkit.Collections.Queue loaded in memory... [DEBUG] 17:31:50: Benchmark [Toolkit.Collections.Queue lib]: elapsed time: 0.000 cpu secs [DEBUG] 17:31:50: status: 400 [DEBUG] 17:31:50: reponse: {"error":"invalid_request"} Ci-dessous le code que j'ai "constituer" basé sur le périphérique de la Freebox. function requestAuthorization() local payload = [[{ "grant_type"="password", "client_id"="xxxx", "client_secret"="xxxxx", "username"="xxxx@xxxx", "password"="xxxxxx" }]]; --Toolkit.Net.isTraceEnabled = true; local HttpClient = Toolkit.Net.HttpRequest(NetatmoObject._host, 80); HttpClient:setReadTimeout(1000); local response, status, errorCode = HttpClient:request("POST","/oauth2/token", {"Content-Type: application/x-www-form-urlencoded"}, payload); HttpClient:disconnect(); HttpClient:dispose(); HttpClient = nil; --Toolkit.Net.isTraceEnabled = false; -- check for error if errorCode == 0 then if tonumber(status) == 200 then local jsonTable = json.decode(response); if (jsonTable.success == true ) then Tk:trace("Authentification OK"); NetatmoObject._accessToken = jsonTable.result.app_token; NetatmoObject._refreshToken = jsonTable.result.track_id; fibaro:setGlobal("netatmo_accessToken", NetatmoObject._accessToken); fibaro:setGlobal("netatmo_refreshToken", NetatmoObject._refreshToken); local n = 0; while(tostring(NetatmoObject._accessToken) == "") do fibaro:sleep(1000); if n > 10 then break end n = n + 1; end else Tk:trace("1.1 - Request authorization failled"); end else Tk:trace("status: "..status); Tk:trace("reponse: "..response); end else Tk:trace("Communication error"); end end requestAuthorization();
Krikroff Posté(e) le 27 juillet 2014 Signaler Posté(e) le 27 juillet 2014 Je pense que tu peux enlever la lib Toolkit.Collections.Queue de ton script si tu ne compte pas l' utiliser et ainsi gagner de la place. Pour revenir au problème c'est effectivement étrange et à première vue je ne vois la raison de ce Bad Request! Tu peux essayer d'activer les traces en de commentant la ligne et en passant isTraceEnabled sur True Toolkit.Net.isTraceEnabled = true; Sinon comment répond ton proxy en direct ? Est-ce qu'il y a une redirection à un quelconque moment ?
ADN182 Posté(e) le 28 juillet 2014 Signaler Posté(e) le 28 juillet 2014 Je viens d'activer les traces, les voici : [DEBUG] 21:08:48: ------------------------------------------------------------------------- [DEBUG] 21:08:48: -- HC2 Toolkit Framework version 1.0.4 [DEBUG] 21:08:48: -- Current interpreter version is Lua 5.1 [DEBUG] 21:08:48: -- Total memory in use by Lua: 81.07 Kbytes [DEBUG] 21:08:48: ------------------------------------------------------------------------- [DEBUG] 21:08:48: Toolkit.Net loaded in memory... [DEBUG] 21:08:48: Toolkit.Debug loaded in memory... [DEBUG] 21:08:48: Benchmark [Toolkit.Debug lib]: elapsed time: 0.000 cpu secs [DEBUG] 21:08:48: Toolkit.Net.HttpRequest > Total memory in use by Lua: 83.08 Kbytes [DEBUG] 21:08:48: Toolkit.Net.HttpRequest > Create Session on port: 80, host: api.netatmo.mondomaine.com [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::setReadTimeout > Timeout set to 1000 ms [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::request > /oauth2/token with method POST [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::request > Add header [POST /oauth2/token HTTP/1.1] [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::request > Add header [Host: api.netatmo.mondomaine.com:80] [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::request > Add header [Content-Type: application/x-www-form-urlencoded] [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::request > Add header [Content-Length: 195] [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::request > Body length is 195 [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::receive > Length of result: 247 [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::receive > Status 400 [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::receive > Length of headers reponse 219 [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::disconnect > Connected: false [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::dispose > Successfully disposed [DEBUG] 21:08:48: Toolkit.Net.HttpRequest::dispose > Total memory in use by Lua: 85.59 Kbytes [DEBUG] 21:08:48: status: 400 [DEBUG] 21:08:48: reponse: {"error":"invalid_request"} Niveau de mon Proxy pour moi c'est transparent, ce qui me fait pensé cela : - Si je remplace dans le script php le https://api.netatmo.net par http://api.netatmo.mondomaine.com cela fonctionne. - Si je teste avec un plugin firefox qui permet de faire appel a une method post cela fonctionne. - Depuis mon navigateur le code source de la page est identique. Ce qui me fait dire qu'il y a un problème dans mes datas c'est quand j'ai tester depuis le plugin Firefox tant que j'avais pas trouvé la bonne syntax in m'indiquer une invalid request. dans le plugin je le fourni comme cela : grant_type=password&client_id=xxxxxxxxx&client_secret=xxxxx&username=xxx@xxx&password=xxxx (comme avec un curl).
Krikroff Posté(e) le 29 juillet 2014 Signaler Posté(e) le 29 juillet 2014 Oui ce n'est pas une enveloppe json donc, tu peux essayer un truc comme cela: local payload = [[ grant_type=password&client_id=xxxxxxxxx&client_secret=xxxxx&username=xxx@xxx&password=xxxx ]];
Messages recommandés