[TUTO] Intégrer nos stations météo personnelles dans Jeedom avec XML
Publié : 04 août 2019, 15:37
Bonjour
Après de longues recherches, je viens enfin de réussir à intégrer les données de ma station Davis Vantage Pro2 https://www.davisinstruments.com/solution/vantage-pro2/ dans Jeedom (Cela pourra aussi fonctionner pour d'autres stations telles que des Oregon...)
Et cela grâce à un logiciel libre qui tourne sous linux : WEEWX http://www.weewx.com/. A priori très léger et peu gourmand, il peut tourner sur un RPI3. Pour ma part, je l'ai installé sur un NUC virtualisé avec Proxmox sur une machine virtuelle sous Débian 9, de 512 à 1024Mo de mémoire, 1 CPU et 1 coeur et enfin 16Go d'espace disque.
Je n'expliquerai pas ici l'installation de WEEWX car on trouve pas mal de tutos sur le net, il faut aussi installer APACHE car WEEWX crée des fichiers de site internet.
Lorsque le station est raccordée et transmet bien ces données à WEEWX, je vais faire générer un ficher XML par WEEWX.
Pour cela il faut éditer le fichier suivant
Rechercher la rubrique [CheetahGenerator] et sa sous-rubrique [[ToDate]]. En fin de cette sous-rubrique, ajouter le code suivant :
.
Il faut maintenant créer ce fichier jeedom.xml.tmpl sous cette forme :
Attention : il s'agit ici des codes pour une station Vantage, vérifier si ceux-ci sont les même pour les autre types de station. Ensuite, il existe d'autre codes pour d'autre valeurs, à voir si cela peut être intéressant d'en rajouter....
Il faut copier ce fichier sous le même répertoire que celui du skin modifié ci-dessus.
A partir de cet instant, WEEWX va générer à chaque réception de données un fichier "jeedom.xml".
Ce fichier sera copié sous le répertoire dédié par APACHE aux sites Internet. Pour ma part, il se trouve sous :
Maintenant, il suffit simplement de récupérer ces données sous Jeedom à l'aide du plugin Script. Bien penser à appliquer une auto-actualisation du cron suivant la périodicité de réception des données (pour la Vantage c'est toutes les minutes).
Il suffit de créer autant de commande script que de données récupérées par le fichier XML en mettant les option suivantes : Type script : XML, Requête : le nom de la variable dans le fichier XML et enfin l'URL qui sera du type http://IPdelamachineWEEWX/weewx/jeedom.xml.
Penser aussi aux type d'info qui sont soit numérique soit autre.
J'espère que vous en ferez bon usage
Stéphane
Après de longues recherches, je viens enfin de réussir à intégrer les données de ma station Davis Vantage Pro2 https://www.davisinstruments.com/solution/vantage-pro2/ dans Jeedom (Cela pourra aussi fonctionner pour d'autres stations telles que des Oregon...)
Et cela grâce à un logiciel libre qui tourne sous linux : WEEWX http://www.weewx.com/. A priori très léger et peu gourmand, il peut tourner sur un RPI3. Pour ma part, je l'ai installé sur un NUC virtualisé avec Proxmox sur une machine virtuelle sous Débian 9, de 512 à 1024Mo de mémoire, 1 CPU et 1 coeur et enfin 16Go d'espace disque.
Je n'expliquerai pas ici l'installation de WEEWX car on trouve pas mal de tutos sur le net, il faut aussi installer APACHE car WEEWX crée des fichiers de site internet.
Lorsque le station est raccordée et transmet bien ces données à WEEWX, je vais faire générer un ficher XML par WEEWX.
Pour cela il faut éditer le fichier suivant
Code : Tout sélectionner
/etc/weewx/skins/Seasons/skin.conf
Code : Tout sélectionner
[[[Jeedom]]]
template = jeedom.xml.tmpl
Il faut maintenant créer ce fichier jeedom.xml.tmpl sous cette forme :
Code : Tout sélectionner
<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
<weewx>
<time>$current.dateTime</time>
<tempExt>$current.outTemp.formatted</tempExt>
<MaxTempExt>$day.outTemp.max.formatted</MaxTempExt>
<HeureMaxTempExt>$day.outTemp.maxtime</HeureMaxTempExt>
<MinTempExt>$day.outTemp.min.formatted</MinTempExt>
<HeureMinTempExt>$day.outTemp.mintime</HeureMinTempExt>
<windChill>$current.windchill.formatted</windChill>
<indChaleur>$current.heatindex.formatted</indChaleur>
<pointRosee>$current.dewpoint.formatted</pointRosee>
<humExt>$current.outHumidity.formatted</humExt>
<pression>$current.barometer.formatted</pression>
<tendancePression>$trend.barometer.formatted</tendancePression>
<vitVent>$current.windSpeed.formatted</vitVent>
<dirVent>$current.windDir.formatted</dirVent>
<compasVent>$current.windDir.ordinal_compass</compasVent>
<vitMaxVent>$day.wind.max.formatted</vitMaxVent>
<HeureVitMaxVent>$day.wind.maxtime</HeureVitMaxVent>
<DirMaxVent>$day.wind.gustdir.formatted</DirMaxVent>
<Precipitation>$day.rain.sum.formatted</Precipitation>
<TauxPrecipitation>$current.rainRate.formatted</TauxPrecipitation>
<TauxMaxPrecipitation>$day.rainRate.max.formatted</TauxMaxPrecipitation>
<HeureTauxMaxPrecipitation>$day.rainRate.maxtime</HeureTauxMaxPrecipitation>
<UV>$current.UV</UV>
<UVMax>$day.UV.max</UVMax>
<HeureUVMax>$day.UV.maxtime</HeureUVMax>
<tempInt>$current.inTemp.formatted</tempInt>
<humInt>$current.inHumidity.formatted</humInt>
</weewx>
Il faut copier ce fichier sous le même répertoire que celui du skin modifié ci-dessus.
A partir de cet instant, WEEWX va générer à chaque réception de données un fichier "jeedom.xml".
Ce fichier sera copié sous le répertoire dédié par APACHE aux sites Internet. Pour ma part, il se trouve sous :
Code : Tout sélectionner
/var/www/html/weewx
Il suffit de créer autant de commande script que de données récupérées par le fichier XML en mettant les option suivantes : Type script : XML, Requête : le nom de la variable dans le fichier XML et enfin l'URL qui sera du type http://IPdelamachineWEEWX/weewx/jeedom.xml.
Penser aussi aux type d'info qui sont soit numérique soit autre.
J'espère que vous en ferez bon usage
Stéphane