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:
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:
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:
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:
[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:
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
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)
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
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
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
Merci pour le tuto. Je ne trouve pas comment inclure les infos Netatmo sur la Zipabox. Des infos?
Désolé, je viens de le mettre à jour :p
Bonjour,
le script fonctionne bien depuis votre serveur mais pas depuis le fichier téléchargé sur mon propre serveur.
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.
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
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 ;)
Bonjour,
j’ai le meme probleme avez vous trouvé la solution
merci
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
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
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
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 :)
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
Bonjour Cédric
Le pluviomètre est sorti!
Ça serait possible de le rajouter au script existant ;-)
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
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
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
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]
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
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
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
Merci beaucoup!
Je vais regarder
heureusement qu’il y a des passionnés comme toi pour aider les débutants!
merci infiniment je test et je vous tiens au courant
Super merci infiniment
tous fonctionne il ne me reste plus qu’a faire l’association avec eedomus.
Merci beaucoup ! Cela m’a permis de mettre les différents cumuls de pluie (jour, semaine, mois) dans la eedomus.
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 ?
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.
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
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
J’ai pareil mais je n’arive pas à trouver le pourquoi c’est embêtant.
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 ?
Bonjour Cédric,
Croyez vous que c’est possible d intégrér cela à une IPX 800V4
Merci d’avance
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,
Bonsoir,
le fichier SKK PHP sur le répertoire GITHUB est il encore disponible car je ne le trouve pas.
merci,
cdlt
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