Rem's Posté(e) le 16 août 2014 Auteur Signaler Posté(e) le 16 août 2014 Ok, effectivement j'ai en retour la page PHP, mais fixe (copie de celle du NAS). Lors de la création chez Netatmo, je dois renseigner le lien sur mon NAS, c'est bien çà?
JM13 Posté(e) le 16 août 2014 Signaler Posté(e) le 16 août 2014 Non,non...lors de la création de l'application sur le site de Netatmo j'ai juste mis, un nom "My_domotique" et un commentaire "Récupérer les infos sur HC2"
Rem's Posté(e) le 16 août 2014 Auteur Signaler Posté(e) le 16 août 2014 Aaaahhhhhh Quand je tape dans le navigateur http://192.168.0.46/Web_Scripts/netatmo.php / {"status":"ok","body":[{"beg_time":1408201967,"value":[[31.7,33]]}],"time_exec":0.0095419883728027,"time_server":1408202484}. (Ce ne sont pas les même séries de chiffres quand je tape dans le navigateur) A force de bidouille dans le script, il s'avère que c'est le port 5005 qui plantait (5005 en lien avec les connexion Https sécurisé, donc pas pour HC2). Je continue sur le VD dans le HC2, je crois qu'il me faut des labels ...
Rem's Posté(e) le 16 août 2014 Auteur Signaler Posté(e) le 16 août 2014 La fin est proche, j'en ai ras la casquette (et vous aussi de moi ... ). J'ai créée un VD avec 2 Boutons : "Extérieures" local HC2 = Net.FHttp("192.168.0.46"); HC2:setBasicAuthentication("XXXX", "YYYY"); local response, status, errorCode = HC2:GET("/Web_Scripts/netatmo.php?intext=ext"); if tonumber(status) == 200 then -- decoding json string to table -- if (response ~= nil) then local result = json.decode(response); fibaro:debug(response); local NetTempExt = result.body[1].value[1][1]; local NetHumExt = result.body[1].value[1][2]; fibaro:setGlobal("NetTempExt", NetTempExt); fibaro:setGlobal("NetHumExt", NetHumExt ); fibaro:log(NetTempExt or "n.c" .. " °C " ..NetHumExt or "n.c" .. " % " ); else -- oups il y a un problème... fibaro:debug("Impossible de décoder la réponse, pas de données pour le traitement..."); end else -- oups il y a un problème... fibaro:debug("Err: " .. status); end "Intérieures" local HC2 = Net.FHttp("192.168.0.46"); HC2:setBasicAuthentication("XXXX", "YYYY"); local response, status, errorCode = HC2:GET("/Web_Scripts/netatmo.php?intext=int"); if tonumber(status) == 200 then -- decoding json string to table -- if (response ~= nil) then local result = json.decode(response); fibaro:debug(response); local NetTempInt = result.body[1].value[1][1]; local NetHumInt = result.body[1].value[1][3]; local NetBruitInt = result.body[1].value[1][5]; fibaro:setGlobal("NetTempInt", NetTempInt); fibaro:setGlobal("NetHumInt", NetHumInt ); fibaro:setGlobal("NetBruitInt", NetBruitInt ); fibaro:log(NetTempInt or "n.c" .. " °C " ..NetHumInt or "n.c" .. " % "..NetBruitInt or "n.c" .. " Db " ); else -- oups il y a un problème... fibaro:debug("Impossible de décoder la réponse, pas de données pour le traitement..."); end else -- oups il y a un problème... fibaro:debug("Err: " .. status); end Les données variables de l'int. Temp, CO2 et Bar, restent à 0. Sinon les autres valeurs se mettent à jour. Je n'ai pas d'affichage des données sur le VD (habituellement en vert, juste la température brute, et puis s'en va !). C'est quoi le Pb ce coup ci (j'ai rajouté comme cité plus haut, les intext=int et intext=ext, à la fin de ma phrase Http). Merci encore pour votre aide
Krikroff Posté(e) le 16 août 2014 Signaler Posté(e) le 16 août 2014 Rien ne me saute aux yeux ! Et lorsque tu appelles l'url /Web_Scripts/netatmo.php?intext=int depuis ton navigateur web ?
Rem's Posté(e) le 17 août 2014 Auteur Signaler Posté(e) le 17 août 2014 J'ai changé de Bazar ... JM13, j'ai récuéré le script PHP sur ton lien (merci encore), je l'ai bidouillé. J'ai en retour les paramètres de la station ext. En revanche rien sur l'int, les valeurs variables restent àO (sauf NetBruitInt et NetHumInt). C'est bien le même script PHP pour les 2 modules Netatmo ? Les Url fonctionnent dans le navigateur et dans le débug, affichage des paramètres de retour. J'ai rajouté "fibaro:debug(response");
Krikroff Posté(e) le 17 août 2014 Signaler Posté(e) le 17 août 2014 Peut^-être que le php que tu utilises ne gère pas toute les données, même si c'est la cas c'est facilement contournable en te basant sur le code pour le bruit et l'humidité
JM13 Posté(e) le 17 août 2014 Signaler Posté(e) le 17 août 2014 Sur le lien que je t'ai donné, il y a 3 scripts (un pour les données int, un pour les données ext ...et un pour les 2 en même temps) Si en tapant la ligne de commande ci-dessous (avec le script pour les 2) tu as les retours dans ton navigateur AVEC des valeurs non nulles, ALORS tu as surement un problème dans la déclaration de tes variables globales sur HC2 car le script par conséquent marche Données intérieures : http://192.168.0.35/Netatmo/netatmo.php?intext=intAffichage : {"status":"ok","body":[{"beg_time":1399140377,"value":20.7,634,64,1012.2,56}],"time_exec":0.0072810649871826,"time_server":1399140622} Données extérieures : http://192.168.0.35/Netatmo/netatmo.php?intext=extAffichage : {"status":"ok","body":[{"beg_time":1399140288,"value":13.8,64}],"time_exec":0.033488988876343,"time_server":1399140827}
JM13 Posté(e) le 17 août 2014 Signaler Posté(e) le 17 août 2014 <?php $intext=$_GET['intext']; $password="mot_de_passe"; $username="nom utilisateur"; $app_id = "xxxxxxxxxxxxxxxxxxxxx"; $app_secret = "xxxxxxxxxxxxxxxxxx"; $token_url = "https://api.netatmo.net/oauth2/token"; $postdata = http_build_query( array( 'grant_type' => "password", 'client_id' => $app_id, 'client_secret' => $app_secret, 'username' => $username, 'password' => $password ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $response = file_get_contents($token_url, false, $context); $params = null; $params = json_decode($response, true); $api_url = "https://api.netatmo.net/api/getuser?access_token=" . $params['access_token']; $requete = file_get_contents($api_url); $url_devices = "https://api.netatmo.net/api/devicelist?access_token=" . $params['access_token']; $resulat_device = file_get_contents($url_devices); $json_devices = json_decode($resulat_device,true); $module_interne = $json_devices["body"]["devices"][0]["_id"]; $module_externe = $json_devices["body"]["modules"][0]["_id"]; $url_mesures_internes = "https://api.netatmo.net/api/getmeasure?access_token=" . $params['access_token'] . "&device_id=" . $module_interne . "&scale=max&type=Temperature,CO2,Humidity,Pressure,Noise&date_end=last"; $mesures_internes = file_get_contents($url_mesures_internes); $url_mesures_externes = "https://api.netatmo.net/api/getmeasure?access_token=" . $params['access_token'] . "&device_id=" . $module_interne . "&module_id=" . $module_externe . "&scale=max&type=Temperature,Humidity&date_end=last"; $mesures_externes = file_get_contents($url_mesures_externes); if ($intext == "int") echo $mesures_internes ; else echo $mesures_externes ; ?>
JM13 Posté(e) le 17 août 2014 Signaler Posté(e) le 17 août 2014 et la suite pour HC2 -- ----------------------- DEVICE SETTINGS -------------------------------- local message = "" local userID = 2; -- User ID (email used to notify) local SmartPhone = 33; -- SmartPhone Admin local dtLog = os.date(); -- Datation local IP_NAS = "192.168.0.35" -- Affiche des dernières valeurs message = "Mise à jour en cours ..." fibaro:log(message); fibaro:debug(message); -- Récupération des nouvelles valeurs INTERNES FHTE = Net.FHttp(IP_NAS,80); response = FHTE:GET("/Netatmo/netatmo.php?intext=int"); -- decoding json string to table result = json.decode(response); fibaro:debug(response); -- Mise à jour des variables globales fibaro:setGlobal("NetTempInt", result.body[1].value[1][1]); fibaro:setGlobal("NetCO2", result.body[1].value[1][2]); fibaro:setGlobal("NetHumInt", result.body[1].value[1][3]); fibaro:setGlobal("NetPression", result.body[1].value[1][4]); fibaro:setGlobal("NetdB", result.body[1].value[1][5]); fibaro:sleep(500); -- Récupération des nouvelles valeurs EXTERIEURES FHTE = Net.FHttp(IP_NAS,80); response = FHTE:GET("/Netatmo/netatmo.php?intext=ext"); -- decoding json string to table result = json.decode(response); fibaro:debug(response); fibaro:setGlobal("NetTempExt", result.body[1].value[1][1]); fibaro:setGlobal("NetHumExt", result.body[1].value[1][2]); -- Confirme la mise à jour message = "Mise à jour effectuée!" fibaro:log(message); fibaro:debug(message);
JM13 Posté(e) le 17 août 2014 Signaler Posté(e) le 17 août 2014 Dis donc Rem's, dans ton script tu n'utilises pas toutes les valeurs local NetTempInt = result.body[1].value[1][1]; local NetHumInt = result.body[1].value[1][3]; local NetBruitInt = result.body[1].value[1][5]; fibaro:setGlobal("NetTempInt", NetTempInt); fibaro:setGlobal("NetHumInt", NetHumInt ); fibaro:setGlobal("NetBruitInt", NetBruitInt ); il t'en manque 2 fibaro:setGlobal("NetTempInt", result.body[1].value[1][1]); fibaro:setGlobal("NetCO2", result.body[1].value[1][2]); fibaro:setGlobal("NetHumInt", result.body[1].value[1][3]); fibaro:setGlobal("NetPression", result.body[1].value[1][4]); fibaro:setGlobal("NetdB", result.body[1].value[1][5]);
Rem's Posté(e) le 17 août 2014 Auteur Signaler Posté(e) le 17 août 2014 Hop, hop, hop, Je crois que ca y est. JM 13, j'avais pas vu ton dernier post .... je crois que enfin les valeurs variables se mettent àjour, int et ext, il me reste plus qu'àcréer les modules en fonction. J'ai un peu mal au cheveux avec ces P ... de codes (j'imagine que vous en avez marre de moi .... ). Je vous tien au jus pour le bouquet final ..... la démo àmaman (sans les coups de bâton) Bonne App.
Messages recommandés