Waterfall.py

Aus DXL-Wiki
Version vom 5. März 2021, 23:34 Uhr von Dl1nux (Diskussion | Beiträge) (→‎Konfiguration in der sdrcfg.txt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.

Waterfall.png

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. /tmp sollte eine RAMDISK sein. Tipps dazu siehe weiter unten.

Benutzung

Konfiguration in der sdrcfg.txt

In die sdrcfg.txt muss eine zusätzliche Zeile mit Parametern ans Ende eingefügt werden, z.B.:

s 402.000 404.000 2500 1 3000

Wichtig: Derzeit muss diese Zeile zwingend am Ende der sdrcfg.txt eingefügt werden, sonst gibt es Probleme mit dem sondeudp!

  1. Wert: Startfrequenz
  2. Wert: Endfrequenz
  3. Wert: Bandbreite in Hz pro Bildspalte (vertikale Pixelspalte)
  4. Wert: Geschwindigkeit. 1 = 2ms pro Bildspalte (schnellste Aufnahme). 6 = 12ms pro Bildspalte. Die Aufnahme wird mit steigendem Wert langsamer.
  5. 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 übertragen 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.