Wetterstation mit WeeWX und APRS.fi Anbindung

Schon seit längerem Betreibe ich zu Hause eine Wetterstation WX-2013 bzw. WH1080 mit diversen Sensoren. Bereits kurz nach dem Erwerb entschloss ich mich die Daten etwas besser nutzen zu können, im LAN per PC, Smartphone und Tablet. Nach etwas Recherche fand ich die Software WeeWX, welche unter http://www.weewx.com zu bekommen ist. Diese ist auch sehr gut dokumentiert und hat eine große Community.

Die ersten Versuche mit einem Jessie Image auf einem RaspberryPi B schlugen fehl. Erfolgreich wurde ich dann aber mit dem HamServerPi Image, welches auf Debian Wheezy basiert. Mit dem ansehlichen Image „Sofaskin“ (Quelle) wurde eine schöne Seite daraus 

Der RaspberryPi ist dann auch ganz schnell in das HAMNET gewandert, damit auch andere von den Daten profitieren können bzw. ich von extern auch mal darauf zugreifen kann.

Die Wetterstation ist im HAMNET unter folgenden Adressen erreichbar:

Schon bald hatte ich Pläne die Wetterstation auch an APRS.fi zu binden. Dort können die Daten dann einem noch größeren Publikum nützlich sein. Leider wusste ich nicht, wie das funktioniert. Also blieb dieser Wunsch lange unerfüllt.

Im Juni 2018 habe ich dann auch mal ein neues Image aufgesetzt. Grund war, dass wohl nach knapp 2 Jahren die SD-Karte schlapp gemacht hat. Das Dateisystem war defekt. Nachdem ich die Datenbank (weewx.sdb) gesichert habe, habe ich ein neues Image auf Basis von Debian Stretch aufgesetzt, und zwar in der Lite Version. Das Image sollte relativ schlank bleiben und es sollten keine unnötigen Dienste im Hintergrund mitlaufen. Beim HamServerPi liefen trotz nicht-Aktivierung von Haus aus etliche unnötige Dienste im Hintergrund. Ein schlankes Stretch Image mit WeeWX und nginx als Webserver war schnell aufgesetzt. Die Datenbank und Konfigurationsdatei von WeeWX aus dem alten Image konnte ich noch retten und direkt ins neue Image einspielen. Das Ganze hat übrigens locker auf einer 2 GB SD-Karte Platz.

Per Zufall las ich dann wenige Tage später einen Beitrag in Facebook in der HAMNET Gruppe, wo OM Peter DL6MB davon sprach das er WeeWX einsetzt und diesen an APRS anbinden wollte – er brauchte dazu nur ein passendes Gateway aus dem Hamnet. Ein Glücksfall für mich, ich habe mich in die Diskussion gleich mit eingeschmuggelt. Peter und OM Egbert DD9QP konnten auch schnell helfen.

Nach etwas Probieren war es dann auch schnell erledigt.

Folgende Zeilen müssen in der /etc/weewx/weewx.conf editiert werden:

[[CWOP]]
enable = true
station = RUFZEICHEN [Hier kommt das Rufzeichen rein, mit dem die Station in APRS.fi erscheinen soll]
passcode = 12345 [Für AFu Stationen notwendig: Passcode kann z.B. hier generiert werden https://apps.magicbug.co.uk/passcode/ ]
server_list = aprsc.db0gw.ampr.org:14580, db0res.ampr.org:14580, rotate.aprs.net:14580, rotate.aprs2.net:14580, cwop.aprs.net:14580, cwop.aprs.net:23
log_success = true
log_failure = true

Achtung, Zeilenumbrüche beachten! Der Text wird umgebrochen in der Webseitendarstellung.

Die Serverangabe hat übrigens Probleme bereitet. Ich hatte zuerst nur aprsc.db0gw.qmpr.org angegeben, das hatte WeeWX sowohl mit als auch ohne Gänsefüßchen nicht korrekt interpretiert und mit der folgenden „lustigen“ Meldung quittiert:

Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'a'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'p'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'r'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 's'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'c'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: '.'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'd'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'b'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: '0'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'g'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'w'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: '.'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'a'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'm'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'p'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'r'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: '.'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'o'; ignored
Jun 19 21:06:03 weewx weewx[759]: restx: CWOP: Bad server address: 'r'; ignored
Jun 19 21:06:04 weewx weewx[759]: restx: CWOP: Bad server address: 'g'; ignored
Jun 19 21:06:04 weewx weewx[759]: restx: CWOP: Bad server address: ':'; ignored
Jun 19 21:06:04 weewx weewx[759]: restx: CWOP: Bad server address: '1'; ignored
Jun 19 21:06:04 weewx weewx[759]: restx: CWOP: Bad server address: '4'; ignored
Jun 19 21:06:04 weewx weewx[759]: restx: CWOP: Bad server address: '5'; ignored
Jun 19 21:06:04 weewx weewx[759]: restx: CWOP: Bad server address: '8'; ignored
Jun 19 21:06:04 weewx weewx[759]: restx: CWOP: Bad server address: '0'; ignored
Jun 19 21:06:04 weewx weewx[759]: restx: CWOP: Failed to publish record 2018-06-19 21:06:00 CEST (1529435160): Tried 26 servers 3 times each

Warum auch immer, aber ich habe dann einfach noch ein paar Server hinzugefügt. Seitdem nimmt er es korrekt an.

In der obigen Serverliste sind erst zwei HAMNET APRSC Server gelistet, dahinter nochmal vier Server aus dem Internet als Fallback-Lösung, falls das HAMNET oder die beiden HAMNET Server nicht erreichbar sein sollten.

Die „log_“ Abschnitte dienen dazu, einen Logeintrag in die /var/log/syslog zu schreiben, wenn das Übermitteln der Daten erfolgreich war oder nicht. Diese sind für den eigentlichen Betrieb nicht notwendig, ich habe sie Informationshalber aber mit eingebaut.

Eine gute Dokumentation dieses Abschnitts findet man auch im WeeWX User Guide im Abschnitt [[CWOP]].

Der WeeWX Server kann übrigens mit folgendem Befehl sofort neu gestartet werden, ein Reboot des ganzen PI ist nicht notwendig.

sudo /etc/init.d/weewx restart

Das Endergebnis sieht auf APRS.fi dann so aus: