Aller au contenu
jimbo007be

Station météo Netatmo

Recommended Posts

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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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.  ;)

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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 ;

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans l'api l'adresse du module doit apparaître dans le node devices

Envoyé de mon GT-P5210 en utilisant Tapatalk

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

:blink:  ah oui, c'est ça qui m'avait échappé :wacko: 

 

Merci, je pense que je vais aller au lit   :98:

j'ai compris l'idée, mais cela dépasse mes compétences ;)  

Partager ce message


Lien à poster
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 ;
?>

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Quelqu'un a-t-il déjà  testé le plugin Netatmo???

il faut mettre quoi ?

C'est quoi client ID, client Secret ?

 

 

Connection configuration

 

Username:
Password:
Client ID:
Client Secret:

Partager ce message


Lien à poster
Partager sur d’autres sites

Que veux tu c'est un dieux

Je vais demander àmoicPhil si on peux pas lui faire une statue ànotre gourou LAZER

Envoyé de mon SM-G900F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Vous avez été un petit peu vite àl'appeler Dieu, À l'allure ou il post, il y aura vite dépassé les 10 000 messages!!

Et là, qu'est-ce qui est au-dessus de Dieu ? ;p

Partager ce message


Lien à poster
Partager sur d’autres sites

De toute façon qu'est ce Dieu. Rien àcôté de l'Elephant...

Partager ce message


Lien à poster
Partager sur d’autres sites

 Un coup de mars, et ça repart.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Donc les capteurs seraient àprésent précis/calibré ? Hummm une grande première alors ! Si c'est le cas je vais investir !

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

C'était suite àce que disait Berale24, si j'ai bien compris en mettant 2 capteurs côte/côte il a les même mesures. Effectivement Netatmo reste du grand public mais bon, c'est con de ne pas avoir une station potable connectée.

Partager ce message


Lien à poster
Partager sur d’autres sites

×