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  :