Waterfall.py: Unterschied zwischen den Versionen
Dl1nux (Diskussion | Beiträge) |
Dl1nux (Diskussion | Beiträge) |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 12: | Zeile 12: | ||
== Installation und Einrichtung == | == Installation und Einrichtung == | ||
'''Hinweis: Um waterfall.py nutzen zu können, sind die dxlAPRS Tools vom | '''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 | waterfall.py kann direkt vom Server von Chris oe5dxl geladen werden | ||
Zeile 24: | Zeile 24: | ||
== Mögliche Anpassungen in waterfall.py == | == Mögliche Anpassungen in waterfall.py == | ||
<nowiki>IP=("0.0.0.0",18500)</nowiki> | <nowiki> | ||
IP=("0.0.0.0",18500) | |||
</nowiki> | |||
waterfall.py lauscht auf Port 18500 für alle IP-Quellen. | waterfall.py lauscht auf Port 18500 für alle IP-Quellen. | ||
<nowiki>CONTRAST=3.0 | <nowiki> | ||
BRIGHTNESS=50.0</nowiki> | CONTRAST=3.0 | ||
BRIGHTNESS=50.0 | |||
</nowiki> | |||
Einstellungen für die Wasserfalldarstellung. | Einstellungen für die Wasserfalldarstellung. | ||
<nowiki>im.save("/tmp/w.png")</nowiki> | <nowiki>im.save("/tmp/w.png")</nowiki> | ||
Hierhin wird die Wasserfalldatei geschrieben. | Hierhin wird die Wasserfalldatei geschrieben. /tmp sollte eine RAMDISK sein. Tipps dazu siehe weiter unten. | ||
== Benutzung == | == Benutzung == | ||
Zeile 38: | Zeile 42: | ||
=== Konfiguration in der sdrcfg.txt === | === Konfiguration in der sdrcfg.txt === | ||
In die [[sdrcfg.txt]] muss eine zusätzliche Zeile mit Parametern eingefügt werden, z.B.: | In die [[sdrcfg.txt]] muss eine zusätzliche Zeile mit Parametern ans Ende eingefügt werden, z.B.: | ||
<nowiki>s 402.000 404.000 2500 1 3000</nowiki> | <nowiki> | ||
s 402.000 404.000 2500 1 3000 | |||
</nowiki> | |||
Wichtig: Derzeit muss diese Zeile zwingend am Ende der sdrcfg.txt eingefügt werden, sonst gibt es Probleme mit dem sondeudp! | |||
# 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 === | === Konfiguration von sdrtst === | ||
Zeile 53: | Zeile 61: | ||
Beispiel: | Beispiel: | ||
<nowiki>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</nowiki> | <nowiki> | ||
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 | |||
</nowiki> | |||
=== Konfiguration von sondeudp === | === Konfiguration von sondeudp === | ||
Damit die Sondennummern mitgeschrieben werden können, müssen die Daten von Sondeudp ebenfalls an waterfall.py | 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: | Beispiel: | ||
<nowiki>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</nowiki> | <nowiki> | ||
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 | |||
</nowiki> | |||
== Tipps == | |||
=== Manueller Gain anstatt Automatik === | |||
Anstatt des Automatikgains p 8 1 kann man diesen auch manuell in der [[sdrcfg.txt]] konfigurieren: | |||
<nowiki> | |||
p 8 0 | |||
p 4 <gain> | |||
</nowiki> | |||
=== 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: | |||
<nowiki>sudo nano /etc/fstab</nowiki> | |||
Anschließend folgende Zeile hinzufügen: | |||
<nowiki>tmpfs /tmp tmpfs defaults,noatime 0 0</nowiki> | |||
Dann das System neu starten: | |||
<nowiki>sudo reboot</nowiki> | |||
Nach dem Neustart ist /tmp eine RAMDISK und kann beliebig oft wiederbeschrieben werden, ohne die SD-Karte bzw. den Datenträger zu beschädigen. |
Aktuelle Version vom 5. März 2021, 23:34 Uhr
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. /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!
- 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 ü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.