Utilisant la station météo Netatmo par l’intermédiaire de ma box domotique (eedomus), je me suis retrouvé un matin, sans température extérieur.
L’application Netatmo m’indiquait qu’il n’y avait plus de communication avec le module extérieur. En fait, les piles du module extérieur étaient tout simplement« vides ».
Au niveau de l’API Netatmo de la station, nous n’avons pas cette information. En cherchant un peu sur le site de développement de Netatmo, j’ai trouvé le moyen d’avoir cette information.
Je vous propose donc, par l’intermédiaire de deux scripts, d’avoir le niveau de la batterie via une box domotique. Nous allons voir ici comment l’exploiter sur la box eedomus mais sachez que ce tuto est tout à fait transposable à une autre box.
Avant de commencer
Pour vous permettre d’utiliser ces scripts, vous aurez besoin d’un ordinateur type Raspberry Pi, je vais utiliser durant ce tuto un RPi B mais un autre modèle est également pleinement compatible.
Sur ce Rasbberry auront été installés avant de démarrer, un serveur web compatible php ainsi que le framework python (déjà installé sur les dernières versions de Raspbian).
Il faut aussi avoir un compte sur le site de développement Netatmo (https://dev.netatmo.com/).
Vous êtes prêts?
2 Pour commencer, il est nécessaire d’installer un package supplémentaire pour permettre au script python de fonctionner sans erreur.Pour cela passez la commande suivante dans le terminal
sudo apt-get install python-lxml
Je vous conseille d’installer les deux scripts dans un répertoire accessible du serveur web.
Placez vous dans le répertoire web de votre raspberry, généralement /var/www/html/
cd /var/www/html/
téléchargez à présent les fichier depuis github
git clone https://github.com/domoblog/Netatmo_battery.git
Télécharger depuis Github
Création d’une appli Netatmo
1 Afin de pouvoir interoger les données de la station Netatmo via un script, nous allons devoir créer un accès, pour cela rien de compliqué, il faut simplement créer une nouvelle application sur le portail Netatmo à l’adresse suivante: https://dev.netatmo.com/ 2 Après avoir cliqué sur CREATE YOUR APP vous arrivez sur la fenêtre suivante, saisissez les information concernant la nouvelle application puis faites, CREATE AN APP 3 Votre application est crée, cliquez sur son icône pour ouvrir son contenu 4 Copier les Client id et Client secret dans un coin pour la suite
La configuration du script
Il vous reste maintenant à modifier les informations liées à votre compte personnel et aux clients id et secret de l’application que vous venez de créer, dans le fichier python.
1 Premièrement, il faut éditer le fichier stationmeteo_battery.pysudo nano stationmeteo_battery.py2 L’API utilisée a besoin d’un access_token. La particularité de cet access_token est qu’il change de manière automatique. C’est pour cela qu’il est nécessaire de s’authentifier à chaque appel. C’est la première partie du script. Remplacer les phrases par vos identifiants Netatmo et client IDs copier plus haut dans les lignes 23 à 26 3 Ensuite, nous avons besoin de la ID de la station a renseigner en ligne 38 4 Pour cela, il est nécessaire d’utiliser une fonction du site de développement. Il faut être authentifié sur le site de développement Netatmo au préalable et se rendre sur l’URL suivante:
https://dev.netatmo.com/dev/resources/technical/reference/weatherstation/getstationsdata
5 Vous devez obtenir cette page 6 Cliquer sur la flèche Jaune. 7 Vous ne faites aucun changement. Vous devez avoir que le champ access_token de rempli. Vous cliquez sur TRY ITVous devez obtenir la page ci dessus. Maintenant, nous allons récupérer l’ID de la station.
8 Vous cliquer sur le triangle devant body.Vous devez obtenir cette page: 9 Vous cliquer sur le triangle devant devices.Vous devez obtenir cette page : 10 Vous cliquer sur le triangle devant [object Object]. Vous devez obtenir cette page :
L’ID de la station est ainsi fourni. Il ne reste plus qu’à mettre à jour le fichier stationmeteo_battery.py.
Dernier point concernant le fichier python. Il est important que le nom des modules soit sans espace.
Configuration coté eedomus
Au niveau de la configuration de la box domotique Eedomus, il suffit de créer un HTTP-Capteur, et ceci pour chaque module associé à la station météo dont vous souhaitez surveiller le niveau de la batterie.
Pour avoir le pourcentage de la batterie du module vendu par défaut avec la station, vous mettez le nom que vous avez défini via l’application Netatmo.
Il ne vous reste plus qu’à mettre en place une règle pour être prévenu du niveau faible de la batterie. Pour cela rien de plus simple configurez la règle ainsi
Et ajouter une notification par mail avec le contenu suivant:
Le niveau de batterie d'un périphérique Netatmo est faible, pensez à changer les piles. ----------------------------------------------------- Niveau bat Pluviomètre : [LAST_VALUE PERIPH_ID=xxxxx]% Niveau bat Anémomètre : [LAST_VALUE PERIPH_ID=xxxxx]% Niveau bat Module : [LAST_VALUE PERIPH_ID=xxxxx]% -----------------------------------------------------
Remplacez simplement les xxxxx par les codes API de vos modules
A présent, quand le niveau des pile sera trop faible, vous recevrez un mail pour les remplacer avant que le périphérique ne communique plus !
Conclusion
Maintenant vous ne manquerez plus les le remplacement des piles de vos modules netatmo, en fonction du niveau d’alerte configurer, il vous laisse même bien assez de temps pour réagir. A vous de jouer à présent !
Merci, installé sur un Syno avec le module Python de Synocommunity et ça fonctionne.
Dommage que tu n’aies pas de thermostat Netatmo, j’aurais bien aimé récup la valeur aussi 🙂
(Ceci dit je vais essayer d’adapter le script)
Yeah ça fonctionne, suffit de mettre read_thermostat à la place de read_station, remplacer l’adresse mac et https://api.netatmo.com/api/getthermostatsdata à la place de https://api.netatmo.com/api/getstationsdata
excellent 🙂 Merci à toi pour ce retour d’info 😉
Leixia as tu modifié le fichier php pour l’exécuter sur ton Syno ? car je n’arrive pas à générer le fichier xml
L’utilisateur sur ton synology a les droits d’écriture dans le répertoire où se trouve le fichier python ?
Oui je l’ai mis dans le répertoire web comme j’utilise déjà pour remonter les consommations eedomus
Peux tu essayer en lançant via une ligne de commande php ./netatmo_battery.php ?
@gougol69, tu as réussi car moi impossible (même en lançant via le navigateur) !
dommage …
Je précise juste que via un autre script php présent sur le répertoire web que j’appelle via eedomus j’arrive a créer un fichier xml. Le problème semble venir de la syntaxe pour lancer le fichier py.
oui c’est bizarre car on a l’impression qu’il manque juste un petit quelque chose pour que ça tourne 😉
Si @Leixia:disqus peut nous aider en nous décrivant comment faire … merci d’avance
Pour que je sois notifié, il faut répondre à mon commentaire !
As tu bien vérifié les droits via le chmod sur les 3 fichiers?
Sinon pas d’accent sur vos périphériques netatmo, si c’est le cas changez les dans votre application netatmo
Gagné … c’était les accents 😉
Merci @Leixia:disqus
Np, les accents sont souvent cause de soucis! En général, vaut mieux les éviter (comme les espaces)
Désolé pour le temps de réponse, mais je n’étais pas revenu sur l’article
idem, installé sur mon syno, il me génère bien un xml mais juste avec ça :
Ext>
j’ai du rater une étape mais laquelle ?
j’ai vérifié mes 3 modules s’appellent : pluviomètre, anémomètre et Extérieur
une idée svp?
Salut,
Je comprends pas trop ce qu’il faut mettre à la ligne 37 et 38 par rapport à _id et cipher_id. Peux-tu me dire stp ?
Merci
bonjour,
il faut mettre l’access token Netatmo qui est disponible dans le compte Netatmo développer. L’adresse MAC de la station et elle aussi indiqué dans les données du compte.
Bonjour,
Je n’arrive pas à récupérer avec ce script les infos. Et vous ?