Nouvelle année, nouvelle installation et nouveautés ! janvier 18, 2023 Voila au moins un an voir plus que j’étais passé d’un raspberry Pi2 a un mini PC à base de Debian. Oui mais voila dès le début, je rencontrais des freeze de ce miniPC ( freeze qui me posait pas mal de souci car je perdais les connexions réseaux filaires et wifi sur la partie bureau). J’avais tenté de mettre a jour que ce soit l’OS (Debian) ou même le pilote du dongle Wifi (le souci venait de là). Présentation de la nouvelle configuration Coté Station : Froggit WH6000 connecté en radio (868Mhz) à une base Capteur température intérieur Coté matériel : 1 Mini PC (d’une marque différente a l’ancien) 1 dongle Wifi 1 carte réseau 1 disque SSD 128Go Coté Logiciel : Distribution Ubuntu 22.04 Desktop Logiciel Weewx 4.9.1 Nginx broker Mosquitto Influxdb 2 Telegraf Grafana Coté nouveaux (et anciens) services dans WEEWX : j’utilise l’extension interceptor : https://github.com/matthewwall/weewx-interceptor C’est une extension qui permet de sniffer le reseau afin de recuperer les data venant de la base de la station et le dongle Wifi Cette extension est paramétrée en mode « listen » : [Interceptor] # This section is for the network traffic interceptor driver. driver = user.interceptor device_type = wu-client mode = listen iface = eth0 pcap_filter = src 192.168.0.30 and dst port 80 Service PWSWeather : [[PWSweather]] enable = true station = WH6000 password = xxxxxxxx Service Weatherunderground : [[Wunderground]] enable = true station = IPONTS4 password = xxxxxxxxx # to your API key: api_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx rapidfire = False Service MQTT : Cette extension est utile afin de faire du pseudo temps réel avec le template Belchertown : https://github.com/matthewwall/weewx-mqtt le tuto il faut le suivre ici : https://obrienlabs.net/how-to-setup-your-own-mqtt-broker/ J’ai eu quelques soucis pour installer la partie SSL mais c’est réglé. [[MQTT]] server_url = mqtt://steflp:steflp@127.0.0.1:1883/ topic = wx-froggit unit_system = METRIC binding = archive, loop aggregation = aggregate Service InfluxDB2 : Cette extension permet de récupérer les datas non pas dans la base « classique » de weewx mais également dans une base Influxdb2 ( un « bucket » de son vrai nom) Au départ, j’ai suivi cette extension https://github.com/matthewwall/weewx-influx mais la version d’influx que j’allais installer (influxdb2) j’ai du utiliser un fork : https://github.com/david-lutz/weewx-influx2 car j’ai trouvé un commentaire ici : https://github.com/matthewwall/weewx-influx/issues/28 ou ici https://github.com/matthewwall/weewx-influx/issues/32 [[Influx]] unit_system = METRICWX server_url = http://localhost:8086 org = xxxx bucket = froggit token = api_token tags = station=FROGGIT Nouveaux services sur le serveur Ubuntu : je suis parti tout simplement d’un post sur le groupe de discussion de Weewx ici : https://groups.google.com/g/weewx-user/c/kMfiFbFMrM8/m/InKXTGrcBwAJ En lisant pas mal de lien / site Web entre autre ici : https://foxutech.com/setup-influxdb-grafana-and-telegraf-on-ubuntu/ Voila ce que j’ai fait pour l’installation : Service InfluxDB Version 2 : tout est expliqué ici : https://portal.influxdata.com/downloads/ et si vous suivez correctement les différentes commandes vous vous retrouvez avec un service InfluxDB2 fonctionnel sur votre serveur. # influxdb.key GPG Fingerprint: 05CE15085FC09D18E99EFB22684A14CF2582E0C5 wget -q https://repos.influxdata.com/influxdb.key echo '23a1c8836f0afc5ed24e0486339d7cc8f6790b83886c4c96995b88a061c5bb5d influxdb.key' | sha256sum -c && cat influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list sudo apt-get update && sudo apt-get install influxdb2 Ensuite vous accédez au service en http://adresse_ip_locale:8086/ Service Grafana : Tout est expliqué ici : https://grafana.com/grafana/download add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" apt -y install grafana systemctl status grafana-server systemctl enable --now grafana-server systemctl status grafana-server systemctl start grafana-server Ensuite vous accédez au service Grafana en http://adresse_ip_locale:3000/ à la première connexion il faudra changer votre mot de passe bien entendu. Donc voici la synthèse : Weewx possède 1 nouvelle extension influxdb qui va me permettre d’alimenter 2 buckets : un bucket appelé « FROGGIT » qui va me permettre au final de faire des requêtes dans Grafana pour faire de jolis graphiques un bucket appelé « MQTT » qui va me permettre de récupérer les datas du broker Mosquitto venant du topic « Meteo » Service Telegraf de influxdata : Pour pouvoir alimenter les datas dans le bucket « MQTT » depuis le broker Mosquitto mqtt , il va falloir utiliser un « parser » via l’outil telegraf de influxdb. Pour installer telegraf rien de plus simple : se connecter ici : https://www.influxdata.com/time-series-platform/telegraf/ # influxdb.key GPG Fingerprint: 05CE15085FC09D18E99EFB22684A14CF2582E0C5 wget -q https://repos.influxdata.com/influxdb.key echo '23a1c8836f0afc5ed24e0486339d7cc8f6790b83886c4c96995b88a061c5bb5d influxdb.key' | sha256sum -c && cat influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list sudo apt-get update && sudo apt-get install telegraf il faut donc paramétrer un parser qui va permettre de decouper les données recues au format JSON : J’ai eu quelques difficultés à trouver les bonnes « clefs » pour que le « parser » fonctionne correctement : Ma demande est ici https://github.com/influxdata/telegraf/issues/12477 mais aussi sur le slack de Influxdata mqtt_consumer,host=meteo-Ubuntu,topic=wx-froggit/loop value="{\"dateTime\": \"1673379715.0\", \"barometer_mbar\": \"1032.84838843904\", \"outHumidity\": \"98.0\", \"inHumidity\": \"66.0\", \"outTemp_C\": \"12.5\", \"inTemp_C\": \"18.666666666666664\", \"windSpeed_kph\": \"6.1155072\", \"windGust_kph\": \"7.885785600000001\", \"windDir\": \"226.0\", \"dewpoint_C\": \"12.166666666666666\", \"rain_cm\": \"0.0\", \"UV\": \"0.0\", \"pressure_mbar\": \"1027.5808444974539\", \"altimeter_mbar\": \"1032.9098011100198\", \"appTemp_C\": \"11.989727372874231\", \"cloudbase_meter\": \"81.3673623286046\", \"heatindex_C\": \"12.364444444444445\", \"humidex_C\": \"14.860395130945525\", \"inDewpoint_C\": \"12.182370760129796\", \"maxSolarRad_Wpm2\": \"0.0\", \"rainRate_cm_per_hour\": \"0.20320000000000016\", \"windchill_C\": \"12.5\", \"hourRain_cm\": \"0.1778\", \"rain24_cm\": \"0.7874\", \"dayRain_cm\": \"0.7874\", \"usUnits\": \"16.0\"}" 1673379714548849790 mqtt_consumer,host=meteo-Ubuntu,topic=wx-froggit/loop value="{\"dateTime\": \"1673379727.0\", \"barometer_mbar\": \"1032.84838843904\", \"outHumidity\": \"98.0\", \"inHumidity\": \"66.0\", \"outTemp_C\": \"12.555555555555555\", \"inTemp_C\": \"18.666666666666664\", \"windSpeed_kph\": \"3.218688\", \"windGust_kph\": \"3.5405568000000005\", \"windDir\": \"240.0\", \"dewpoint_C\": \"12.277777777777779\", \"rain_cm\": \"0.0\", \"UV\": \"0.0\", \"pressure_mbar\": \"1027.580947056362\", \"altimeter_mbar\": \"1032.9099041038694\", \"appTemp_C\": \"12.625624869417384\", \"cloudbase_meter\": \"81.38439226867399\", \"heatindex_C\": \"12.425555555555555\", \"humidex_C\": \"14.945187800760525\", \"inDewpoint_C\": \"12.182370760129796\", \"maxSolarRad_Wpm2\": \"0.0\", \"rainRate_cm_per_hour\": \"0.20320000000000016\", \"windchill_C\": \"12.555555555555555\", \"hourRain_cm\": \"0.1778\", \"rain24_cm\": \"0.7874\", \"dayRain_cm\": \"0.7874\", \"usUnits\": \"16.0\"}" 1673379726532136651 mqtt_consumer,host=meteo-Ubuntu,topic=wx-froggit/loop value="{\"dateTime\": \"1673379739.0\", \"barometer_mbar\": \"1032.84838843904\", \"outHumidity\": \"98.0\", \"inHumidity\": \"66.0\", \"outTemp_C\": \"12.555555555555555\", \"inTemp_C\": \"18.666666666666664\", \"windSpeed_kph\": \"10.299801600000002\", \"windGust_kph\": \"11.7482112\", \"windDir\": \"227.0\", \"dewpoint_C\": \"12.277777777777779\", \"rain_cm\": \"0.0\", \"UV\": \"0.0\", \"pressure_mbar\": \"1027.580947056362\", \"altimeter_mbar\": \"1032.9099041038694\", \"appTemp_C\": \"11.248745091639607\", \"cloudbase_meter\": \"81.38439226867399\", \"heatindex_C\": \"12.425555555555555\", \"humidex_C\": \"14.945187800760525\", \"inDewpoint_C\": \"12.182370760129796\", \"maxSolarRad_Wpm2\": \"0.0\", \"rainRate_cm_per_hour\": \"0.20320000000000016\", \"windchill_C\": \"12.555555555555555\", \"hourRain_cm\": \"0.1778\", \"rain24_cm\": \"0.7874\", \"dayRain_cm\": \"0.7874\", \"usUnits\": \"16.0\"}" 1673379739031548060 mqtt_consumer,host=meteo-Ubuntu,topic=wx-froggit/loop value="{\"dateTime\": \"1673379751.0\", \"barometer_mbar\": \"1032.84838843904\", \"outHumidity\": \"98.0\", \"inHumidity\": \"66.0\", \"outTemp_C\": \"12.555555555555555\", \"inTemp_C\": \"18.666666666666664\", \"windSpeed_kph\": \"12.2310144\", \"windGust_kph\": \"20.760537600000003\", \"windDir\": \"169.0\", \"dewpoint_C\": \"12.277777777777779\", \"rain_cm\": \"0.0\", \"UV\": \"0.0\", \"pressure_mbar\": \"1027.580947056362\", \"altimeter_mbar\": \"1032.9099041038694\", \"appTemp_C\": \"10.873232424972944\", \"cloudbase_meter\": \"81.38439226867399\", \"heatindex_C\": \"12.425555555555555\", \"humidex_C\": \"14.945187800760525\", \"inDewpoint_C\": \"12.182370760129796\", \"maxSolarRad_Wpm2\": \"0.0\", \"rainRate_cm_per_hour\": \"0.20320000000000016\", \"windchill_C\": \"12.555555555555555\", \"hourRain_cm\": \"0.1778\", \"rain24_cm\": \"0.7874\", \"dayRain_cm\": \"0.7874\", \"usUnits\": \"16.0\"}" 1673379751476559244 Extrait du fichier de conf mqtt.conf [[inputs.mqtt_consumer]] servers = ["tcp://127.0.0.1:1883"] topics = ["wx-froggit/#"] data_format = "xpath_json" fielddrop = ["dateTime"] [[inputs.mqtt_consumer.xpath]] metric_name = "'meteo'" field_selection = "child::*" field_value = "number(.)" timestamp = "dateTime" timestamp_format = "unix" Mais tout cela pour que faire ? De jolis graphiques issus de Influxdb et du parser MQTT Cela fera le sujet d’un autre article ! Voici le schéma de principe : Navigation de l’article Broker MQTT + certificat SSL Let’s EncryptPlus de graphiques dans le Template Belchertown