A voir
 

Script mis à jour: infos Netatmo sur sa box domotique

 
03
03
03

 
Présentation
 

Catégorie:
 
Prix:
 
Durée:
 
Mise en place
 
 
 
 
 


 
Utilisation
 
 
 
 
 


 
Utilité
 
 
 
 
 


 
Cout
 
 
 
 
 


 
Note Globale
 
 
 
 
 


Note des Lecteurs
9 Total des notes

 

Pour


Intégration des données de la station Netatmo sur le système domotique

Contre


Il manque certaines données dans l'API, comme l'indice officiel de pollution


Posté le2 juillet 2013 par

 
Tutorial Complet
 
 

Vous aimez ? Partagez le ! Share on FacebookShare on Google+Tweet about this on TwitterPin on PinterestShare on RedditShare on TumblrShare on LinkedInBuffer this pageFlattr the authorEmail this to someone

Je vous ai présenté hier la station météo Netatmo, une station météo connectée pour iPhone (et appareils Android également).

Cette station météo dispose d’une API, ce qui peut permettre par exemple de récupérer les infos de cette station météo sur son système domotique.

J’ai réalisé un petit script très simple qui se connecte à son compte Netatmo et récupère les mesures de la station météo pour en faire un fichier xml. Ces informations seront donc récupérables par tout système capable de lire un fichier xml, comme par exemple la box eedomus, la Zibase, ou encore la Vera (via un script Lua).

Je met le script à votre disposition comme les scripts vus précédemment, pour ceux qui n’ont pas la possibilité de l’héberger eux même. Pour ceux qui préfèrent l’héberger eux même, vous pouvez télécharger la source ici.

 

Ce script a été mis à jour pour supporter les modules additionnels qui viennent de sortir pour l’intérieur.

 

I. Utilisation du script

 

Le script est vraiment très simple. Il suffit d’appeler l’adresse

 

http://maison-et-domotique.com/scripts/netatmo.php?login=VOTRE_EMAIL&password=MOTDEPASSE&box=VOTRE_BOX

 

en complétant bien sûr l’adresse avec l’adresse mail de votre compte Netatmo et votre mot de passe. Pour le paramètre VOTRE_BOX (facultatif), il suffit d’indiquer le nom de la box utilisée (par exemple zibase, eedomus ou vera). C’est surtout utile actuellement pour la Zibase, qui nécessite de multiplier par 10 les températures, chose effectuée automatiquement par le script si vous indiquez le type de box.

Vous obtiendrez un fichier xml de cette forme, qui contiendra toutes les informations:

 

xml version= »1.0″ encoding= »utf8″ ?>
<netatmo>
<temperature_interieure>22.8</temperature_interieure>
<co2>472</co2>
<humidite_interieure>54</humidite_interieure>
<pression>1020.6</pression>
<niveau_sonore>36</niveau_sonore>
<temperature_exterieure>21.2</temperature_exterieure>
<humidite_exterieure>70</humidite_exterieure>
<temperature_additionnel1>21.8</temperature_additionnel1>
<co2_additionnel1>521</co2_additionnel1>
<humidite_additionnel1>57</humidite_additionnel1>
<temperature_additionnel2>21.9</temperature_additionnel2>
<co2_additionnel2>518</co2_additionnel2>
<humidite_additionnel2>57</humidite_additionnel2>
<temperature_additionnel3>22.3</temperature_additionnel3>
<co2_additionnel3>628</co2_additionnel3>
<humidite_additionnel3>58</humidite_additionnel3>
</netatmo>

Si vous possédez des modules additionnels, les informations seront également récupérées dans les tags temperature_additionnelx, co2_additionnelx, et humidite_additionnelx, « x » étant le numéro du module concerné.

 

II. Exemple d’utilisation

 

J’utilise ce script depuis plusieurs jours avec ma box eedomus. La configuration est très simple, il faudra juste créer un capteur HTTP pour chaque donnée qu’on souhaite récupérer. Exemple avec la mesure de CO2 du module principal:

 

netatmo_co2_eedomus

 

Dans URL de la requête, on indique l’adresse du script, dans laquelle vous aurez complété votre adresse mail et votre mot de passe, bien sûr.

Ensuite dans le chemin Xpath, vous indiquez //co2 pour récupérer la mesure de CO2. Vous pouvez indiquer l’une des balises présntes dans le fichier xml pour récupérer la valeur souhaitée.

Autre exemple pour le niveau de bruit:

 

netatmo_bruit_eedomus

 

Avec l’arrivée des modules additionnels, on peut également récupérer leurs infos, exemple pour la température du module additionnel n°1:

 

netatmo_additionnel_eedomus

 

Au niveau de la fréquence de la requête, inutile de mettre moins de 10min. D’une part vous risquez de saturer le serveur, mais surtout la station Netatmo ne remonte les infos que toutes les 10min, il n’y a donc aucun intérêt à l’interroger plus souvent.

Si des abus sont faits au niveau des temps de requête, je serais obligé de suspendre ce script, ce qui serait dommage :/

 

On peut ensuite utiliser les différentes représentations disponibles sur l’eedomus. J’ai par exemple ceci sur ma box:

 

 

Bien sûr on peut consulter l’historique des données:

 

 

Et les utiliser dans des scénarios. Un exemple ici qui déclenche un message vocal sur le Karotz si on dépasse le seuil des 1000 ppm en CO2:

 

 

Ces différentes informations peuvent être utiles pour bien des cas. Concernant la température et l’humidité, c’est du classique. Mais on peut imaginer également utiliser le niveau sonore pour indiquer une présence dans la maison, voire même le niveau de CO2, qui a vite fait d’augmenter quand plusieurs personnes sont présentes dans la pièce. Le niveau de CO2 peut aussi être utile pour augmenter ponctuellement la vitesse de la VMC afin de renouveler l’air, etc…

Ces informations peuvent également être récupérées sur la Zibase, en utilisant une requête http récupérant une valeur dans une variable:

 

 

Ou sur la Vera en utilisant la fonction extractElement dans un script Lua. Par exemple:

 

local function extractElement(tag, xml, default)

 local pattern = "< "..tag..">(.*)< /"..tag..">"
 local result = (xml:match(pattern) or default)
 return result
 end
local url = "http://maison-et-domotique.com/scripts/netatmo.php?login=VOTRE_EMAIL&password=MOTDEPASSE"
 local status, rss = luup.inet.wget(url, 10)
if (status == 0) then
 local tempext = extractElement("temperature_exterieure", rss, "N/A")
 luup.variable_set("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", tempext, 94)
 end


III. Conclusion

La station Netatmo est un excellent produit, qui, grâce à son API, nous permet en plus d’exploiter les mesures qu’elle effectue. Température et humidité sont des données courantes, mais les valeurs de CO2 ou de niveau sonore le sont nettement moins. D’ailleurs, je ne connais qu’un périphérique en Zwave capable d’analyser la qualité de l’air, mais qui coute deux fois le prix de la Netatmo. Le calcul est vite fait :p Les applications utilisant la station Netatmo risquent de fleurir dans les semaines à venir…

Vous aimez ? Partagez le ! Share on FacebookShare on Google+Tweet about this on TwitterPin on PinterestShare on RedditShare on TumblrShare on LinkedInBuffer this pageFlattr the authorEmail this to someone







  
  • puccin0

    Bonjour Cédric
    Le pluviomètre est sorti!
    Ça serait possible de le rajouter au script existant ;-)

    • Cyril

      J’ai fait la mise a jour avec le relevé de pluie cumulé sur la journée

      Comme je n’ai pu tester que dans mon cas, j’ai un doute sur son fonctionnement chez quelqu’un qui n’a pas trois modules d’intérieur additionnel
      Je pense que le pluviomètre devient le module additionnel suivant

      A tester
      Si sa ne fonctionne pas il faudra décaler le module 4 pour qu’il remonte vers le numero d’additionnel suivant

      http://www.ituilerie.com/wp-content/uploads/2014/04/netatmo.php_.zip

      MAJ : Le script mis a jour ne fonctionne pas, quand j’ai ecrit les modifs mes modules additionnel etait chez Netatmo en reparation (problème de conso de batterie) a leur retour (il m’ont fait un echange standart en fait) j’ai du les reinstaller et j’ai constaté que le script ne marchait plus
      J’ai commencer a regarder
      J’ai constaté que le pluviomettre etait maintenant l’additionnel 1 et donc les additionnel se decallai d’une place pour aller jusqu’au 4, mais sa c’est peut etre due au fait que j’ai reinstallé les modules car avant il etait en 4
      J’ai donc l’impression que le pluvio va pouvoir avoir n’importe quelle position
      donc dans le script vous avez tout le code qu’il faut, il vous faudrat donc replacer le pluviometre a la bonne place par rapport a votre installation

      • Olivier

        Merci beaucoup pour la mise à jour!!

        En revanche quand je test avec la page test Xpath d’eedomus

        Je n’ai que ça…..

        23.11181531017.55114.59821.471355

        Je n’ai pas la pluie

        • Cyril

          A voir les infos que tu recupére, je dirai que tu a 1 module additionnel puis le pluviometre

          Dans ton cas le pluviometre est considéré comme l’additionnel 2

          je pense que si tu modifie cette partie

          $module_additionnel1 = $json_devices["body"]["modules"][1]["_id"];

          $module_additionnel2 = $json_devices["body"]["modules"][2]["_id"];

          $module_additionnel3 = $json_devices["body"]["modules"][3]["_id"];

          $module_additionnel4 = $json_devices["body"]["modules"][4]["_id"];

          en

          $module_additionnel1 = $json_devices["body"]["modules"][1]["_id"];

          $module_additionnel2 = $json_devices["body"]["modules"][4]["_id"];

          $module_additionnel3 = $json_devices["body"]["modules"][3]["_id"];

          $module_additionnel4 = $json_devices["body"]["modules"][2]["_id"];

          Sa devrais le faire
          Ya juste le [2] qui devient [4] et le [4] qui devient [2]

          • Olivier

            Super! C’est bien ça un module add + un pluvio
            ça marche niquel!
            Merci beaucoup

            Je te sollicite encore :-)
            comment choisis-tu l’information de pluie à afficher? valeur max; cumulée sur la journée; mm/heure.. etc…
            Merci d’avance

          • Cyril

            c’est sur cette ligne

            $url_mesures_additionnel4 = « https://api.netatmo.net/api/getmeasure?access_token= » . $params['access_token'] . « &device_id= » . $module_interne . « &module_id= » . $module_additionnel4 . « &scale=1day&type=sum_rain&date_end=last »;

            dans type ici il y a sum_rain pour summary rain donc la journée

            sur scale qui est a un jour

            le plus simple est de regarder cette page

            http://dev.netatmo.com/doc/restapi/getmeasure

            tu trouvera toute les possibilité pour scale type et date

          • Olivier

            Merci beaucoup!
            Je vais regarder
            heureusement qu’il y a des passionnés comme toi pour aider les débutants!

          • Benoit

            Merci beaucoup ! Cela m’a permis de mettre les différents cumuls de pluie (jour, semaine, mois) dans la eedomus.

  • steeve

    Bonjour,

    Le script fonctionne bien avec ma box edomus.

    J’aimerai en faire autant mais:

    J’ai créé un serveur LAMP sous raspberry Pi, crée une application
    avec netatmo j’ai obtenu un « Client id » et « Client secret » copier les fichiers de configuration dans le dossier www de mon serveur. Au niveau du serveur aucun
    problème un fichier test .php ou index.html est accessible et le serveur
    fonctionne parfaitement. mon gros problème c’est que je n’y connais rien en php
    et après avoir lutté pendant deux demi-journées je n’arrive toujours pas
    configurer les fichiers malgré toutes les aides accessibles sur le web:

    Mon gros problème vient de l’authentification que je
    n’arrive pas a initialisé « instantiate a new NAApiClient object with your
    client_id and client_secret: » je n’ai pas compris ou et comment crée un
    autre fichier ??

    Merci de votre aide.

    Cordialement

    • Cyril

      Avec le script de cedric tu n’a rien a créer comme fichier, il te suffit juste de renseigner les lignes

      $app_id = ‘xxxxxxxxxx’;

      $app_secret = ‘xxxxxxxxxxxxxx’;

      avec le Client id et le Client secret

      puis quand tu execute le script l’URL pour l’executer doit etre du type

      http://adresse du respPi/scripts/netatmo.php?login=VOTRE_EMAIL&password=MOTDEPASSE

      enfin ça, sa depend de ton serveur mais surtout la deuxieme partie ?login=VOTRE_EMAIL&password=MOTDEPASSE

      • steeve

        merci infiniment je test et je vous tiens au courant

      • steeve

        Super merci infiniment
        tous fonctionne il ne me reste plus qu’a faire l’association avec eedomus.

  • Dgak

    Le script ne fonctionne pas chez moi :

    Warning: file_get_contents(https://api.netatmo.net/oauth2/token) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/xxxxxxxx/www/Netatmo-API-PHP-master/netatmo.php on line 37

    je me plante ?