Waterfall.py
Was ist waterfall.py?
waterfall.py ist ein von Chris OE5DXL in Python3 geschriebenes Tool zum erstellen eines Langzeit-Wasserfalldiagramm als *.png Grafikdatei. Es nutzt dabei Daten des sdrtst Empfängers.
- Frequenzbereich und Abtastrate sind frei einstellbar.
- In Verbindung mit sondeudp können auch die Seriennummern der Wettersonden in der Grafik integriert werden.
- Es ist KEIN! live Diagramm wie in GQRX oder SDR# u.ä.
- Es können mehrere Instanzen von waterfall.py gleichzeitig laufen, z.B. pro SDR-Stick einer.
- Der Wasserfall wird parallel zur Dekodierung erzeugt, kann also jederzeit gestartet und gestoppt werden, ohne Einfluss auf die Dekodierung von Wettersonden.
Installation und Einrichtung
Hinweis: Um waterfall.py nutzen zu können, sind die dxlAPRS Tools vom 3. März 2021 oder neuer notwendig (sdrtst und sondeudp).
waterfall.py kann direkt vom Server von Chris oe5dxl geladen werden
wget -N --no-check-certificate https://oe5dxl.hamspirit.at:8024/wettersonde/waterfall.py
Damit es funktioniert muss Python3 installiert sein. Dies ist z.B. bei RaspberryPi OS (Raspbian) bereits der Fall. Bei anderen Systemen muss Python3 ggf. erst installiert werden: https://realpython.com/installing-python/
Falls notwendig, kann das Python-Modul PIL nachinstalliert werden: https://pillow.readthedocs.io/en/latest/installation.html
Mögliche Anpassungen in waterfall.py
IP=("0.0.0.0",18500)
waterfall.py lauscht auf Port 18500 für alle IP-Quellen.
CONTRAST=3.0 BRIGHTNESS=50.0
Einstellungen für die Wasserfalldarstellung.
im.save("/tmp/w.png")
Hierhin wird die Wasserfalldatei geschrieben.
Benutzung
Konfiguration in der sdrcfg.txt
In die sdrcfg.txt muss eine zusätzliche Zeile mit Parametern eingefügt werden, z.B.:
s 402.000 404.000 2500 1 3000
- Wert: Startfrequenz
- Wert: Endfrequenz
- Wert: Bandbreite in Hz pro Bildspalte (vertikale Pixelspalte)
- Wert: Geschwindigkeit. 1 = 2ms pro Bildspalte (schnellste Aufnahme). 6 = 12ms pro Bildspalte. Die Aufnahme wird mit steigendem Wert langsamer.
- Wert: ZF-Bandbreite in Hz. Um CPU Zeit zu sparen sollten hier die üblichen Werte verwendet werden, also z.B. 3000, 6000, 12000 usw.
Konfiguration von sdrtst
In sdrtst müssen die Daten zu waterfall.py ausgeleitet werden mit -L IP:Port. Bei mehreren Instanzen von waterfall.py müssen unterschiedliche Ports verwendet werden.
Beispiel:
sdrtst -t 127.0.0.1:18100 -r 16000 -s sondepipe0 -Z 100 -c sdrcfg0.txt -e -k -v -L 127.0.0.1:18500
Konfiguration von sondeudp
Damit die Sondennummern mitgeschrieben werden können, müssen die Daten von Sondeudp ebenfalls an waterfall.py übertagen werden mit -M IP:Port. Bei mehreren Instanzen von waterfall.py müssen unterschiedliche Ports verwendet werden.
Beispiel:
sondeudp -f 16000 -o sondepipe0 -I MYCALL-11 -L SDR0 -u 127.0.0.1:18000 -c 0 -v -n 0 -W 5 -M 127.0.0.1:18500
Tipps
Manueller Gain anstatt Automatik
Anstatt des Automatikgains p 8 1 kann man diesen auch manuell in der sdrcfg.txt konfigurieren:
p 8 0 p 4 <gain>
Erstellen der Grafik in einer RAMDISK
Wenn die Wasserfallerstellung dauerhaft läuft, empfiehlt es sich diese in eine RAMDISK, also auf einen flüchtigen Speicher im RAM, zu schreiben. Besonders auf dem RaspberryPI macht dies Sinn, da dieser meist mit einer SD-Karte ausgestattet ist und das dauerhafte Schreiben auf einer SD-Karte zu schnellem Verschleiß und Ausfall führt.
Standardmäßig wird die Datei in /tmp geschrieben. In vielen Systemen ist dieser Ordner bereits ein Ort in einer RAMDISK, leider jedoch nicht beim RaspbianOS (Raspbian). Um /tmp zu einer RAMDISK zu machen ist ein zusätzlicher Eintrag in der /etc/fstab notwendig.
/etc/fstab editieren:
sudo nano /etc/fstab
Anschließend folgende Zeile hinzufügen:
tmpfs /tmp tmpfs defaults,noatime 0 0
Dann das System neu starten:
sudo reboot
Nach dem Neustart ist /tmp eine RAMDISK und kann beliebig oft wiederbeschrieben werden, ohne die SD-Karte bzw. den Datenträger zu beschädigen.