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)