In diesem Beitrag beschreibe ich, wie die Wetterdaten einer LaCrosse WS2300 Wetterstation zusätzlich an das APRS-IS Netzwerk gesendet werden können.
Das Wetter in Ostfriesland ist oft wechselhaft und meist windig, geprägt von milden Sommern, kühlen Wintern und häufigen Regenschauern. Die Nähe zur Nordseeküste sorgt generell für ein maritimes Klima. Als Technik-affiner Funkamateur finde ich es sehr spannend, die Wetterdaten selbst zu erfassen. Damals kaufte ich mir dazu eine gebrauchte LaCrosse WS2300 Wetterstation, da diese in der APRS-Gemeinschaft oft verwendet wurde. Dieses lag nicht zuletzt daran, dass zahlreiche APRS-Hardware den direkten Anschluss und somit die Übertragung der Wetterdaten ins APRS-Netzwerk ermöglichten.
So betrieb ich die Wetterstation einige Jahre an meinem ehemaligen QTH am Bodensee, bevor sie nach dem Umzug in einem Karton verschwand.
Da die Wetteranlage meines Vaters DL9BGG dem rauen Ostfriesischen Wetter auf Dauer nicht gewachsen war entschlossen wir uns im Mai diesen Jahres kurzerhand, meine alte Wetterstation zu testen und an seinem QTH zu installieren.
Ein erster Test im Innenraum wurde erfolgreich bestanden und so Stand einer Installation auf dem Hausdach nichts mehr im Wege.
Da mein Vater keinen APRS-Sender betreibt, ich die Daten aber gerne ins APRS-Netzwerk spielen wollte, um mir auch in Singapur ein Bild über das aktuelle Wetter in Singapur machen zu können, suchte ich nun nach einem Weg, die Daten direkt ins APRS-IS Netzwerk zu senden.
Da ich das Rad, auch aus Zeitgründen, nicht komplett neu erfinden wollte und ich mir sicher war, dass dieses in etlichen Projekten bereits realisiert wurde, recherchierte ich im Internet nach geeigneten Lösungen. Nach nur kurzer Zeit wurde ich im Internet fündig und musste mir die einzelnen Bausteine nur gemäß meiner Konfiguration zusammensetzen.
Der slowenische OM Andrej S55MA beschreibt in seinem HAM Blog in dem Beitrag “La Crosse WS2300, WS2307 series APRS with Xastir” ein vom ihm geschriebenes Script, welches das Programm Fetch2300 nutzt und die Daten der Wetterstation zunächst in eine temporäre Textdatei schreibt. Fetch2300 kommt als Teil des open2300 Projektes von dem Dänen Kenneth Lavrsen, welches nicht mehr weiterentwickelt wird. Das Script von Andrej S55MA öffnet dann diese Textdatei um sie zu lesen, wertet die Daten dann aus und schreibt sie in einen Textstring, der von der Linux APRS-Software Xastir gelesen werden kann. Sein Script stellt außerdem einen Webserver bereit, mit dem sich Xastir dann verbinden kann, um sich die Textzeile mit den Wetterdaten zu holen. In seinem Blog beschreibt er außerdem detailliert die dazu erforderlichen Installationsschritte.
Xastir erfordert jedoch die Verwendung einer grafischen Oberfläche (Gui). Da ich das Ganze auf einem Raspberry Pi nebenher laufen lassen wollte, auf dem bereits ein OpenWebRX+ ohne grafische Oberfläche läuft und ich die anderen Funktionalitäten einer vollen APRS-Software in meinem Fall nicht benötige, suchte ich nach einer anderen Möglichkeit. OpenWebRX+ verwendet DireWolf von WB2OSZ, um die mit dem SDR empfangenen APRS-Pakete zu decodieren und ins APRS-IS Netzwerk weiterzuleiten. Was lag also näher, eine entsprechende Bake für die Wetterdaten zu konfigurieren?
Leider führte mich auch das in eine Sackgasse. Zwar konnte ich die Wetterdaten als Bake aussenden, jedoch nicht in dem Bakenformat, um sie als Wetterstation zu erkennen. Eine neue Lösung musste also her. Ich entschied mich kurzerhand, das Script von Andrej S55MA so umzuschreiben, dass es statt der Bereitstellung eines Webservers, über den die Daten abgerufen werden, die Daten gleich selbst ans APRS-IS Netzwerk sendet. Glücklicherweise fand sich unter dem Titel “Send APRS objects or telemetry via Bash“ auch für diese Aufgabe eine passende Anleitung in Andrej’s Blog. Ich musste also nur seine beiden Blog Einträge kombinieren und schon hatte ich Erfolg.
Wetterdaten von DL9BGG-13 auf aprs.fi
Die Anpassung meines Scriptes basiert auf Version 1.6 seines Scriptes. Im Eingangsbereich des Scriptes konfigurieren wir zunächst unser Rufzeichen, die zu verwendende SSID, den dazugehörigen Passcode, den Längen- und Breitengrad der Wetterstation im DDM-Format (Dezimal-Minuten), sowie optional einen statischen Kommentar (z.B., welche Wetterstation verwendet wird). Außerdem definieren wir noch, an welchen APRS-IS Server gesendet werden soll, dessen Port und das Intervall in Sekunden, indem gesendet werden soll. Schließlich benötigt das Script noch den vollständigen Pfad zur open2300 Konfigurationsdatei. Abweichend zu Andrej’s Anleitung habe ich diese in dem Verzeichnis “/usr/local/etc/” liegen.
#DEFINE VARIABLES
callsign="xxxxxx"
aprsssid="13"
passcode="xxxxx"
lat="0000.00N"
long="00000.00E"
comment="LaCrosse WS2300"
server="euro.aprs2.net"
port="14580"
interval="60"
ws2300config="/usr/local/etc/open2300.conf"
Das Auswerten und schreiben der einzelnen Werte ist identisch zu Andrej’s Script mit dem Unterschied, dass ich zusätzlich noch die Tendenz und die Vorhersage auswerte und später mit in den Kommentar schreibe.
tendency=$(cat "$fetch_path" | grep -oP 'Tendency\s+\K\S+')
forecast=$(cat "$fetch_path" | grep -oP 'Forecast\s+\K\S+')
Interessanter wird es jetzt beim Zusammenbau des Bakenstrings. Der zusammengebaute Bakentext mit den Werten sieht dann beispielhaft so aus:
DL9BGG-13>APN000,TCPIP*,qAC,T2PRT:@025940z5336.60N/00709.97E_157/009g...t068r000p000P...h71b10544LaCrosse WS2300, Tendency: Falling, Forecast: Rainy
Schließlich starte ich das Script einfach durch einen cronjob, wenn der Raspberry Pi hochfährt. Führt dazu den Befehl sudo crontab -e aus und ergänzt in einer neuen Zeile:
@reboot bash /usr/local/sbin/wxdata.sh &
Interessierte können mein modifiziertes Script hier herunterladen.
#This script reads weather data via fetch program which is part of Open2300 suite written by Kenneth Lavrsen (http://www.
#lavrsen.dk/foswiki/bin/view/Open2300/WebHome).
#It outputs the right data needed to feed Xastir for APRS weather reports. The scripts utilizes Ncat utility as server to
#serve the fetched output to Xastir.
#Fetched Data is pushed to Ncat server and then to Xastir. (Fetched data -> Ncat server -> Xastir)
#Ncat is part of Nmap, get it by installing Nmap.
#This script should work for LaCrosse weather stations, WS23xx series. Testing was done with WS2307.
#Written by S55MA and S56IUL, May 2016
#Origin Source: https://s55ma.radioamater.si/2016/05/03/la-crosse-ws2300-ws2307-series-aprs-with-xastir/
# Modified by DG1BGS/9V1LH, 23rd June 2024
# Removed the web server. APRS data is now sent directly to the APRS-IS network using ncat.
# Please update the variables in the section below.
# For more information, visit dl-nordwest.com
Tipp: Vergabe von eindeutigen Com-Port Namen unter Linux
Um sicherzustellen, dass einem externen Gerät unter Linux immer der gleiche Com-Port zugewiesen wird, kann man externen Geräten eindeutige Namen zuweisen. In meinem Fall habe ich in dem Verzeichnis /etc/udev/rules.d eine Datei mit dem Namen 99-usb-serial.rules angelegt und die folgenden Zeilen eingefügt:
#Weather station open2300
#ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port / Mobile Phone Data Cable
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="ttyWX"
Die Vendor- und Product-ID eures externen Gerätes erhaltet ihr nach Eingabe des Befehls lsusb. In meinem Fall erhalte ich nach Eingabe des Befehls u.a. die folgende Ausgabe:
Bus 003 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port / Mobile Phone Data Cable
Ab dem nächsten Neustart des Rechners wird der Wetterstation in diesem Beispiel jetzt immer der Com-Port /dev/ttyWX zugeordnet, den ich auch in der open2300.conf gesetzt habe.
Fazit
Das Projekt war kurzweilig und hat viel Spaß gemacht, da sich nach nur kurzer Zeit ein Erfolg eingestellt hat. Durch die gute Programmierarbeit und Dokumentation von Andrej S55MA war es sehr einfach, das Gewünschte entsprechend der eigenen Umgebung zu implementieren. An dieser Stelle meinen herzlichen Dank an alle, die ihre Projekte für andere zur Verfügung stellen und dokumentieren.
Durch das übermitteln der Wetterdaten an das APRS-IS Netzwerk sind diese jetzt nicht nur lokal verfügbar, sondern auch von jedermann weltweit abrufbar. Und obendrein erhält man auf aprs.fi noch eine statistische Darstellung der Wetterdaten.
Ich habe auch schon Ideen für künftige Erweiterungen: Die Wetterdaten könnten zusätzlich an einen MQTT-Broker gesendet werden, um sie auch an andere Stelle auszuwerten und darzustellen. Ggf. wäre das auch ein tolles Projekt für ein Wetterdisplay mit ePaper-Display. Außerdem könnte man die APRS-Baken zusätzlich durch den Einsatz eines kleinen Funkmoduls auch über VHF lokal abstrahlen und oder oder sie für eine LoRa-Telemetriebake nutzen.
Betriebt ihr auch eine eigene Wetterstation und nutzt die Daten nicht nur für euch selber? Wenn ja, berichtet gerne in den Kommentare unter diesem Beitrag über euer Projekt oder diskutiert es mit uns in unserer Telegram- und oder WhatsApp-Gruppe. Eventuell habt ihr ja auch Lust, euer eigenes Projekt hier mal vorzustellen.
Möchtest du das Projekt DL-Nordwest unterstützen? Dann teile gerne unsere Beiträge und oder oder hinterlasse uns eine (kleine) Spende 🤑 Danke! 😘