Script mis à jour: infos Netatmo sur sa box domotique

Cédric
2 juillet 2013

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:
Comment utiliser ChatGPT avec Home Assistant pour automatiser votre maison : Guide pour débutants !

 

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…

share Partager

Ces articles pourraient aussi vous intéresser:

Onduleur sous tension : décuplez sa puissance avec Home Assistant et devenez le maître de votre domotique

Découvrez comment intégrer votre onduleur à Home Assistant pour une gestion optimale de votre installation domotique. Guide complet, astuces et exemples concrets pour une maison connectée plus fiable que jamais !

Automatisez Noël avec Home Assistant et ChatGPT: Créez une maison festive et connectée en quelques clics !

Découvrez comment automatiser votre maison pour Noël avec Home Assistant ! Ce guide complet vous montre comment synchroniser lumières, musique, et effets festifs pour créer une ambiance magique et connectée. Transformez chaque recoin de votre maison en un véritable décor de Noël grâce à des scénarios simples et interactifs.

Maison hantée 2.0 : Utilisez Home Assistant pour une expérience d'Halloween connectée et terrifiante !

Découvrez comment transformer votre maison en maison hantée 2.0 avec Home Assistant ! Suivez nos scénarios d'automatisation pour Halloween et créez une expérience interactive et terrifiante à l'aide de lumières intelligentes, de sons effrayants, et bien plus encore. Surprenez vos invités avec une maison connectée qui prend vie la nuit !

37 réactions

Zebkha
15 juillet 2013

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

Cédric
23 juillet 2013

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

LV
22 août 2013

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

Hans-Christian Bohlmann
1 novembre 2013

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

Cedric Locqueneux
8 novembre 2013

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

Julien de Bon
10 décembre 2013

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

Julien de Bon
10 décembre 2013

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.

Camille Beddes
29 décembre 2013

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

David
5 janvier 2014

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

thibal
28 février 2014

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

thibal
28 février 2014

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

NicoLeOca
8 mars 2014

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

GPGA MARTIN
9 mars 2014

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

Enaelle78
22 mars 2014

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 :)

puccin0
25 avril 2014

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

Cyril
28 avril 2014

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

steeve
6 mai 2014

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

Olivier
7 mai 2014

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
7 mai 2014

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]

Cyril
7 mai 2014

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

Olivier
7 mai 2014

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
7 mai 2014

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
7 mai 2014

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

steeve
8 mai 2014

merci infiniment je test et je vous tiens au courant

steeve
8 mai 2014

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

Benoit
26 mai 2014

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

Dgak
5 juillet 2014

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 ?

Brica
8 août 2014

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.

christophe
26 août 2014

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

Cedric Gillette
13 septembre 2014

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

SebaFil
28 juin 2015

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 ?

julienL
12 janvier 2016

Bonjour Cédric,

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

Merci d’avance

mickaelR
17 février 2016

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,

mickaelR
17 février 2016

Bonsoir,

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

cdlt

pascal_B
23 novembre 2020

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

Votre réaction
Nom
Adresse de messagerie
Site internet