Aller au contenu

Station météo Netatmo


jimbo007be

Messages recommandés

bonjour à  tous,

j'ai acheté un module Netatmo que j'ai reçu aujourd'hui et je suis un peu déçu  :(, je comptais le mettre à  l’extérieur, mais je viens de m'apercevoir qu'il existe que des module additionnel "intérieur".

bref, je souhaite récupérer ses valeur dans la HC2 comme la station mais je ne sais par ou commencer.

je suppose qu'il faut modifier le PHP, mais comment appeler ce module?

quelqu'un a t'il rajouté un module?

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Oui nous sommes nombreux a utiliser la station netatmo avec le HC2 et il existe pal de solution niveau intégration: script php, script google, asp.net C# etc le truc c'est que netamto utilise Oauth qui demande le support Https qui n'est toujours pas supporté par le HC2 donc il faut une passerelle ;)

Moi j'ai opté pour un proxy codé en C# pour l'intégration mais le plus simple reste encore la solution php ... il y a un tuto sur domotique-info et aussi sur le forum ;)

Envoyé de mon GT-P5210 en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

merci Krikroff, désolé,  j'ai du mal m'exprimé .

 

j'ai effectivement fait par le PHP sur mon nas avec la station météo, mais là , j'ai rajouté un module à  la station météo et je voudrais également l'intégrer dans un vd.  ;)

Lien vers le commentaire
Partager sur d’autres sites

Non c'est moi qui ai mal lu ;) oui pour cela il faut modifier le php qui de base il me semble n'intègre pas les modules externes, n'utilisant pas cete solution je ne vais pas pouvoir être dune grande aide :(

Envoyé de mon GT-P5210 en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

je pense que c'est dans cette partie qu'il faut rajouter le module mais je ne sais même pas le nommer, je cherche sur le site des renseignement sur l'API... 

$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 ;

Lien vers le commentaire
Partager sur d’autres sites

le https://api.netatmo.net/api/devicelist retourne un truc comme cela:
 

    {
    
    "status":"ok",
    "body":{
    "[color=#ff0000]modules[/color]":[
    { xxx }
    ],
    "[color=#ff0000]devices[/color]":[
    {
    "_id":"xx:xx:xx:xx:xx:x",
    "access_code":"xxxxxxxxxxxxxxxxxxxxxx",
    "alarm_config":{},
    "battery_vp":0,
    "co2_abc_status":"co2_abc",
    "co2_calibrating":false,
    "date_setup":{},
    "firmware":87,
    "invitation_disable":true,
    "last_status_store":1408217814,
    "meteo_alarms":[],
    "module_name":"Int\u00e9rieur",
    "[color=#ff0000][b]modules[/b][/color]":[
      "02:00:00:00:57:b4",
      "xx:xx:xx:xx:xx:xx"
    ],
    "place":{},
    "public_ext_data":true,
    "station_name":"Maison",
    "type":"NAMain",
    "wifi_status":69,
    "dashboard_data":{
      "AbsolutePressure":1007.8,
      "time_utc":1408217550,
      "Noise":55,
      "Temperature":21.1,
      "Humidity":63,
      "Pressure":1020.2,
      "Particle":11939,
      "CO2":634,
      "date_max_temp":1408192415,
      "date_min_temp":1408169108,
      "min_temp":19.8,
      "max_temp":21.2
    },
    "data_type":[
      "Temperature",
      "Co2",
      "Humidity",
      "Noise",
      "Pressure"
    ]
  }
    ]
  },
    "time_exec":0.029767036437988,
    "time_server":1408233011
    
  }

dans la list des devices il y a la liste des modules, je pense que c'est cela.
 
donc je pense que l'idée serait..
 

$module_interne = $json_devices["body"]["devices"][0]["_id"];

traitement ... puis

$module_interne = $json_devices["body"]["devices"][1]["_id"];

nouveau traitement vers un

$mesures_internes_modules2
Lien vers le commentaire
Partager sur d’autres sites

me revoilà  avec mon PHP, je n'ai jamais fait  de PHP, j'ai essayé de modifier le fichier, mais bien entendu, ça ne fonctionne pas.

je post le code en soulignant ce que j'ai modifier,au  cas ou une âme charitable et qui connaisse le PHP, jette un Å“il.  ;)

le but étant de récupérer les données d'un module aditionnel dans la HC2.

merci par avance  ;)

 

<?php

 
$intext=$_GET['intext'];
$password="********";
$username="************";
 
 
$app_id = "*****************";
$app_secret = "***********************";
 
$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"];
$module_interne2 = $json_devices["body"]["devices"][1]["_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);   
    
$url_mesures_internes2 = "https://api.netatmo.net/api/getmeasure?access_token=" .  $params['access_token'] . "&device_id=" . $module_interne . "&module_id=" . $module_interne2 . "&scale=max&type=Temperature,CO2,Humidity&date_end=last";
$mesures_internes2 = file_get_contents($url_mesures_internes2);
 
if ($intext == "int") 
echo $mesures_internes ;
else echo $mesures_externes ;
else echo $mesures_internes2 ;
?>
Lien vers le commentaire
Partager sur d’autres sites

j'ai réussi àmodifier le PHP initial pour rajouter un module interne.

le voici:

les lignes modifiés sont: la ligne 43, de 55 à60 et 64 à68.

<?php

$intext=$_GET['intext'];
$password="xxxxx";
$username="xxxxxxxx";

$app_id = "xxxxxxxxxxxxxxxx";
$app_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

$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"];
$module_interne2 = $json_devices["body"]["modules"][1]["_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);   
    
$url_mesures_internes2 = "https://api.netatmo.net/api/getmeasure?access_token=" .  $params['access_token'] . "&device_id=" . 

$module_interne . "&module_id=" . $module_externe . "&module_id=" . $module_interne2 . 

"&scale=max&type=Temperature,Humidity,CO2&date_end=last";
$mesures_internes2 = file_get_contents($url_mesures_internes2);

if ($intext == "int") 
echo $mesures_internes ;
if ($intext == "ext")
echo $mesures_externes ;
if ($intext == "mod")
echo $mesures_internes2 ;
?>

il faut rajouter dans la passerelle la partie de code ci-dessous et créer 3 variables :

NetModInt

NetModco2Int

NetModHumInt

-- Netatmo Module intérieur
FHTE = Net.FHttp("xxx.xxx.xxx.xxx")
local response, status, errorCode = FHTE:GET("/netatmo/netatmo.php?intext=mod") 
if tonumber(status) == 200 then 
jsonTable = json.decode(response) 
fibaro:setGlobal("NetModTempInt", jsonTable.body[1].value[1][1]);
fibaro:setGlobal("NetModHumInt", jsonTable.body[1].value[1][2]);
fibaro:setGlobal("NetModco2Int", jsonTable.body[1].value[1][3]);
fibaro:debug("mis àjour Int");
else
-- oups il y a un problème...
  fibaro:debug("Err: " .. status);
  end
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

J'ai profité de l'offre Amazon et je dois dire que je suis très content de mon achat.

Installation sans problèmes, accès depuis Ipad, Tel Android, et intégration dans la HC2 grâce à  Dieu !!! :)

Contrairement à  ce que j'ai pu lire de-ci de-là , les infos des deux modules sont cohérentes.

 

J'ai aussi fait quelques recherches sur le net pour me faire des icônes sympas.

 

Baromètre, CO2 et sonomètre.

 

post-1115-0-81035400-1441298057_thumb.png post-1115-0-09587000-1441298073_thumb.png post-1115-0-89724900-1441298095_thumb.png

 

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Qu'est ce qui te fait dire que ça sera précis/calibré ?

D'après Captain Igloo, àce prix là, ça ne peut pas être de la grande précision.... je me souviens d'une discussion où il disait que le matériel équivalent (àbase de mesure par capteur ultra-son) tournait àau moins 200€.

Donc àvoir, mais Netatmo reste pour moi du produit grand public connecté.

De toutes façon, le positionnement d'un anémomètre doit respecter des règles assez précises pour bien capter le vent, donc c'est pas en ville sur un balcon qu'il va donner de bons résultats, calibré ou pas.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...