Script mis à jour: infos Netatmo sur sa box domotique

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.

 

[box_tip]Ce script a été mis à jour pour supporter les modules additionnels qui viennent de sortir pour l'intérieur.[/box_tip]

 

I. Utilisation du script

 

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

 

https://www.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:

A lire également:
Nouveau lifting pour l’application Home + Security de Netatmo

 

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

 

[box_warning]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 :/[/box_warning]

 

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

 

031

 

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

 

042

 

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:

 

051

 

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:

 

zibase

 

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 = "https://www.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…
Pour information, cet article peut contenir des liens affiliés, sans aucun impact sur ce que vous gagnez vous même ou le prix que vous pouvez payer pour le produit. Passer par ce lien vous permet de me remercier pour le travail effectué sur le blog chaque jour, et d'aider à couvrir les dépenses du site (hébergement, frais de port pour les concours, etc.). Ca ne vous coute rien, mais ca m'aide beaucoup ! Merci donc à ceux qui joueront le jeu !

Inscrivez vous à notre newsletter !

Ne ratez plus aucun article, test de produit ou guide, grâce à un mail dans votre boite chaque vendredi !

37 Commentaires
  1. Bonjour,

    Je me suis permis d’adapter le script php afin de renvoyer les données au format json pour une exploitation plus aisée dans le Fibaro HC2. Si cela peut servir à certains parmi vous, le code et un petit tuto sont disponibles ici : http://www.eb-home.eu/blog/netatmo-data-on-fibaro-hc2

  2. Bonjour,

    Apparemment, le lien vers la source du script pointe toujours vers l’ancien script (sans la gestion des modules additionnels). Est ce possible d’avoir la version modifiée ?

    merci

  3. Bonjour,

    Avez vous comme moi des problèmes avec le script proposé au téléchargement? J’obtiens une température exterieure fixe de 6°C (ce qui n’est pas le cas) par contre le script hébergé fonctionne. Merci pour votre aide

  4. Merci pour le tuto. Je ne trouve pas comment inclure les infos Netatmo sur la Zipabox. Des infos?

  5. Désolé, je viens de le mettre à jour :p

  6. Bonjour,
    le script fonctionne bien depuis votre serveur mais pas depuis le fichier téléchargé sur mon propre serveur.

  7. Je viens de me rendre compte qu’il fallait que je demande une clé API à Netatmo, ça fonctionne à merveille maintenant.

    Encore merci pour tes scripts.

  8. Salut et bravo pour le script. J’ai suivi le tuto pour la zibase. J’ai bien mis mes identifiants. Lorsque je teste le scénario la connexion http est OK mais j’ai toujours la même valeur en retour 0 ou 34. J’ai essayé les températures intérieur et extérieur et l’humidité même résultat. Je ne comprends pas où est le soucis. Quelqu’un aurait il une solution? Merci

  9. Salut
    étant possesseur de la station et des module additionnel. je suis intéressé pour récupéré les infos de cette dernière sur un fichier xml hébergé chez moi le temps de recevoir ma futur box.
    quand je test le script j’ai une page blanche sans erreur ?
    quand je test par votre url j’ai aussi une page plage sans erreur ?

    netatmo a changer quelques part ?

    merci de votre aide

    Edit : Bon finalement j’ai réussis a récupéré les infos reste plus cas voir si avec la box quand je l’aurais reçus ;)

  10. Bonjour,
    j’ai le meme probleme avez vous trouvé la solution
    merci

  11. Bonjour,
    je vous remercie pour votre script.
    Par contre j’ai un souci les valeur récupère son fausse.
    Il m’indique 6 degré quelque doit intérieur extérieur.
    Savez vous pourquoi et avez vous une solution
    Merci

  12. Bonjour Cédric,

    En faisant exactement la même chose que ce que tu décris ici sur mon eedomus, celle-ci m’indique une “Valeur lue vide”.
    Est-ce un symptome connu?
    J’ai exactement le même matériel, ça devait pourtant être si simple…

    Merci

    NicoLeOca

  13. Bonjour, j’ai mis en place les éléments tels que décrit.

    MA box eedomus est capable de récuperer de temps en temps une valeur, par contre j’ai beaucoup d’erreurs

    Comment rendre cette information plus fiable

    Merci pour votre aide

  14. J’ai le même souci :) Le script marche très bien, j’ai toutes les valeurs que je veux en suivant ce super tuto, par contre j’ai sans arrêt un message d’erreur m’indiquant “Valeur non numérique”, et ce au moins 10 fois par heure. Quelqu’un aurait une solution ?

    Merci d’avance :)

  15. Merci pour ce script. Est il possible de faire une version pour le thermostat ?
    je peux essayer de l’adapter, mais je n’ai pas de serveur PHP pour l’instant et j’aimerai utiliser un lien type :
    http://maison-et-domotique.com/scripts/netatmo_Thermostat.php?login=VOTRE_EMAIL&password=MOTDEPASSE&box=VOTRE_BOX

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

  17. 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

  18. 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

  19. 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

  20. 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]

  21. 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

  22. 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

  23. 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

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

  25. merci infiniment je test et je vous tiens au courant

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

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

  28. 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 ?

  29. Bonjour, idem chez moi : arrêt sur la ligne 37. J’ai essayé de virer les https en les remplaçant par des http, cela ne fait pas avancer. Une idée ? Merci ! Un script succinct qui tient sur une page, c’est génial.

  30. salut Benoit tu as fais comment pour ton cumul jour/semaine/mois année cela intéresse du monde ici http://forum.eedomus.com/viewtopic.php?f=12&t=1901&p=16685#p16685

    merci de ton aide

  31. bonjour

    je n’arrive pas a recuperer les valeurs du pluviometre avec votre systeme

    les autres valeurs ca va bien

    pouvez vous m’aider

    cdt

  32. J’ai pareil mais je n’arive pas à trouver le pourquoi c’est embêtant.

  33. Bonjour,

    Apparemment, les récentes évolutions de l’API Netatmo ne permettent plus au script de fonctionner… Allez-vous prendre le temps de le mettre à niveau ?

  34. Bonjour Cédric,

    Croyez vous que c’est possible d intégrér cela à une IPX 800V4

    Merci d’avance

  35. Bonjour,

    Je suis également intéressé pour une intégration sur IPX800 V4 via jeedom, avez vous trouvé une solution?
    Quelqu’un pourrait il me détailler un peu plus clairement l’utilisation du script.
    merci,
    cdlt,

  36. Bonsoir,

    le fichier SKK PHP sur le répertoire GITHUB est il encore disponible car je ne le trouve pas.
    merci,

    cdlt

  37. Bonjour,
    Super ce script, moi ce qui m’intéresserais davantage ça serait de pouvoir récupérer les infos de température de la pièce du thermostat netatmo qui gère le chauffage. auriez vous quelque chose qui fait ça?
    merci d’avance pour votre retour.
    Pascal

Répondre à SebaFil Annuler la réponse

Maison et Domotique
Logo
Register New Account
Enregistrez vous, et stockez vos articles préférés sur votre compte pour les retrouver n'importe où, n'importe quand !
Compare items
  • Casques Audio (0)
  • Sondes de Piscine Connectées (0)
  • Smartphones (0)
Compare