Transmettre/recupérer données météo Weewx >> Jeedom

Bonjour

Je vous propose un petit tuto pour récupérer les données météo générées par Weewx.

Commentaires, corrections et ajouts sont les bienvenus.
Merci

Hervé

2 « J'aime »

Weewx >>>>> Jeedom
Comment récupérer sur Jeedom les données de sa station météo connectée à Weewx.

-1- Weewx

Les prérequis :
La station météo est bien connectée à Weewx qui génère une page internet affichant les données de la station météo.

Préambule :
Lors de l’installation de weewx il est demandé quel type de station va être connectée.
Cela charge le driver correspondant qui va gérer les données transmissent par la station météo.
La page weewx: Hardware Guide fourni pour chaque driver les données météo qui sont récupérées.
Par exemple pour ma station WH1080 c’est le driver FineOffsetUSB qui est utilisé. Les données enregistrées sont :

Création des page web à partir des ‘skins’ :
Weewx fourni en standard, dans le répertoire ~/weewx/skins, des « habillages » qui permettent de générer des rapports (HTML, XML, FTP …).
Le fichier weewx.conf défini, dans la partie [StdReport], quels skins sont utilisés et où ils sont générés.
Par exemple voici un extrait de mon fichier weewx.conf :

[StdReport]
##Emplacement des skins, par rapport à WEEWX_ROOT
SKIN_ROOT = /etc/weewx/skins
##Emplacement des rapports générés, par rapport à WEEWX_ROOT
HTML_ROOT = /var/www/html/weewx
 [[SeasonsReport]]
    skin = Seasons
    enable = true
[[SmartphoneReport]]
    skin = Smartphone
    enable = false
    HTML_ROOT = /var/www/html/weewx/smartphone
[[neowx-material]]
    skin = neowx-material
    enable = true
    HTML_ROOT = /var/www/html/weewx/neowx

HTML_ROOT défini où les pages sont générées (ici >> ip_serveur_weewx/weewx).
Le skin Seasons est défini par le bloc [[SeasonsReport]]
Skin = Seasons >> nom du répertoire
enable = true >> skin actif)
HTML_ROOT n’est pas défini, Seasons s’affichera directement à l’adresse : ip_serveur_weewx/weewx

Le skin Smartphone n’est pas affiché car enable = false.

Pour le skin neowx-material :
HTML_ROOT = /var/www/html/weewx/neowx >> visible à l’adresse : ip_serveur_weewx/weewx/ neowx

Transmettre les données météo à Jeedom :
C’est le ‘skin’ Seasons, fourni en standard, qui est utilisé dans ce tuto.
Pour expédier les données météo de la station à Jeedom

  • Il faut créer un fichier XML (par exemple jeedom.xml.tmpl) dans le répertoire ~/weewx/skins/Seasons. Le plugins « Scripts » de Jeedom va récupérer les données contenues dans ce fichier.
  • Dans le fichier skin.conf (répertoire Seasons), rajouter à la fin du chapitre [[ToDate]] ces lignes :
    [[[Jeedom]]]
    template = jeedom.xml.tmpl

Toutes les 5 minutes, weewx génère du contenu (rapport) correspondant aux fichiers .tmpl présent dans les répertoires de skins actifs. Un fichier jeedom.xml sera donc généré dans le répertoire html du skin Seasons.

Fichier XML :
Il faut mettre dans le fichier jeedom.xml.tmpl toutes les données à transmettre. La syntaxe est :
<nom_de_la_donnée>donnée< / nom_de_la_donnée>
Weewx permet de transmettre de données « simple » comme $current.inTemp (température intérieure actuelle) ou des calculs de données comme des sommes, des moyennes, des mini ou maxi ….
Il faudra plonger dans les docs de weewx pour en saisir toutes les possibilités :blush:
Voici pour exemple mon fichier jeedom.xml.tmpl (récupéré dans cette discussion de l’ancien forum >> ici ) :

<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
   <weewx>
 <heure>$current.dateTime.format("%H:%M")</heure>
 <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>
 <Precipitationmois>$month.rain.sum.formatted</Precipitationmois>
 <Precipitationannuelle>$year.rain.sum.formatted</Precipitationannuelle>
 <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>

Contrôle de la création du fichier jeedom.xml :
Allez à l’adresse >> ip_serveur_weewx/weewx/jeedom.xml

C’est fini du côté de Weewx

-2- Jeedom

Installer le plugin Scripts :

Ajouter un script :
weewx_jeedom_5

Onglet Equipement

Onglet Commandes :

Ajouter autant de commande script que de données méteo :

weewx_jeedom_10

Résultat :