Waterfall.py: Unterschied zwischen den Versionen

Aus DXL-Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== Was ist waterfall.py? == waterfall.py ist ein von Chris OE5DXL in Python3 geschriebenes Tool zum erstellen eines Langzeit-Wasserfalldiagramm als *.png Graf…“)
 
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Was ist 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.ä.
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.  
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.
* 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.


[[Datei:Waterfall.png]]
[[Datei:Waterfall.png]]
Zeile 8: Zeile 12:
== Installation und Einrichtung ==
== Installation und Einrichtung ==


'''Hinweis: Um waterfall.py nutzen zu können, sind die dxlAPRS Tools vom 03. März 2021 oder neuer notwendig ([[sdrtst]] und [[sondeudp]]).'''
'''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 20: 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 34: 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>


1. Wert: Startfrequenz
Wichtig: Derzeit muss diese Zeile zwingend am Ende der sdrcfg.txt eingefügt werden, sonst gibt es Probleme mit dem sondeudp!
2. Wert: Endfrequenz
 
3. Wert: Bandbreite in Hz pro Bildspalte (vertikale Pixelspalte)
# Wert: Startfrequenz
4. Wert: Geschwindigkeit. 1 = 2ms pro Bildspalte (schnellste Aufnahme). 6 = 12ms pro Bildspalte. Die Aufnahme wird mit steigendem Wert langsamer.
# Wert: Endfrequenz
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.
# 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 49: 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 übertagen werden mit -M IP:Port. Bei mehreren Instanzen von waterfall.py müssen unterschiedliche Ports verwendet werden.
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.

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.