DULLIE – Der etwas andere DX-Cluster-Aggregator
Die Nutzung von Skimmer und Cluster ist im Contest seit Jahren nicht mehr wegzudenken. Meist hat die zeitnahe und stabile Verfügbarkeit der Daten einen erheblichen Einfluss auf meinen Score und vielleicht auch auf die Motivation. Aber es gibt ein paar Hürden. Viele Logger verfügen über nur einen Telnet-Port, also mit welchem Cluster soll ich mich denn nun verbinden? Im laufenden Betrieb fällt dann auch noch genau dieser Node aus und ich merke es erst nach Minuten, wenn die Bandmap immer leerer wird. Bei den großen Wettbewerben ist zudem eine enorme Flut von teilweise nicht benötigten Daten zu erwarten, die meinen Logger vielleicht ins Straucheln bringt, weil er einfach zu viele Dinge auf einmal erledigen muss und auch der PC nicht mehr ganz frisch ist. Dann ruckelt es schon mal in der Datenbank, die Tastung klemmt und es passieren sonstige unschöne Dinge, die den OP unentspannt werden lassen.
Das alles ist nicht neu und es gibt selbstverständlich Lösungen dazu wie beispielsweise den VE7CC-Client oder WinTelNetX und andere. Diese sind in die Jahre gekommen und für meine Vorstellungen viel zu mächtig, unübersichtlich und teilweise umständlich zu konfigurieren. Zudem unterstützen sie meist nur Windows-Plattformen. So reifte meine Idee zur Selbsthilfe.
Daraus entstanden ist DULLIE – und die KI meinte, das sei die Abkürzung für Duplicate Unifying & Local Linking Interface Engine. Klingt brutal intelligent, einverstanden.
Bevor ich DULLIE in seiner Funktionalität vorstelle, möchte ich ganz kurz was zur Programmierung sagen. Es handelt sich im Kern um ein Python-Skript mit dem eigentlichen Code und einem Config-File im JSON-Format, das mit jedem Texteditor bearbeitet werden kann. Der Code hat rund 1.000 Zeilen und ist weniger als 50 kB groß, was dazu führt, dass er fast auf allem läuft, was einen Prozessor hat und Python unterstützt. Da es sich nicht um ein ausführbares, betriebssystemspezifisches Programm handelt, ist DULLIE plattformunabhängig. Bei der Erstellung war mir die KI sehr hilfreich, hierbei waren die Erfahrungen mit Gemini und Claude am besten.
Das sind die Features, die DULLIE in der aktuellen Version liefert:
Die Kernfunktionen im Überblick
Multi-Cluster-Aggregation:
DULLIE verbindet sich gleichzeitig mit mehreren Clustern und Skimmern, natürlich auch lokal. Sämtliche Spots werden unmittelbar zusammengeführt, bereinigt und an alle verbundenen Endgeräte im lokalen Netz über den integrierten Telnet-Server verteilt. Fällt ein Node aus, läuft der Datenstrom über die anderen Verbindungen weiter. Zudem wird automatisch ein Verbindungsneuaufbau initialisiert.
Smartes Deduplizieren:
DULLIE merkt sich empfangene Spots für eine flexibel einstellbare Haltezeit (Hold Time). Kommt dieselbe Station innerhalb dieses Fensters auf fast derselben Frequenz (Toleranz über das Dashboard einstellbar) erneut rein, wird der Spot verworfen. Das hält die Bandmap im Logger aufgeräumt.
Direktes Telnet-Broadcasting:
Für Log-Programme verhält sich DULLIE wie ein ganz normaler DX-Cluster (Port 7388 – veränderbar im Code). Valide Spots werden unmittelbar an alle verbundenen Clients weitergereicht.
Exklusives Spotting:
Spots, die direkt aus der eigenen Log-Software oder dem Dashboard heraus abgesetzt werden, werden von DULLIE nicht ungefiltert an alle Cluster gestreut, sondern gezielt an genau einen im Web-UI gewählten TX-Cluster weitergeleitet. Hier ist natürlich vorher zu prüfen, ob dieser Node überhaupt Spots empfangen kann und ob man über die notwendigen Rechte bzw. Registrierungen verfügt, auch Spots absetzen zu dürfen. Mit DA0BCC funktioniert es bei mir zuverlässig.
Echtzeit-Webdashboard:
Über ein integriertes HTTP-Interface (Port 8088 – veränderbar im Code) lässt sich DULLIE von jedem PC, Tablet oder Smartphone im LAN über den Browser steuern:
- Spots in einer übersichtlichen Live-Liste verfolgen und nach Calls durchsuchen.
- Manuelle DX-Spots direkt per Web-Formular absetzen.
- Einzelne Bänder (160m–6m sowie V/U/SHF) oder Betriebsarten (CW, SSB, RTTY, FTx) per einfachem Mausklick filtern.
- Status und Kontrollfunktionen
Volle Kontrolle über Frequenztoleranzen:
Frequenzabweichungen durch unterschiedliche Quellen sowie die Hold-Zeit (wann wird auf dasselbe Call mit einem erneuten Spot reagiert) lassen sich einfach über das UI konfigurieren und in der config.json sichern.
Extrem ressourcensparend:
DULLIE ist vollständig asynchron programmiert. Da das Programm nicht blockierend arbeitet, liegt die CPU-Auslastung beispielsweise auf einem Raspberry Pi im niedrigen einstelligen Prozentbereich, auf modernen PCs ist sie komplett vernachlässigbar.
Wie bringe ich DULLIE zum Laufen?
Es ist wirklich einfach! Ich möchte an dieser Stelle nur darauf eingehen, wie man das Ganze unter Windows in Betrieb nimmt – es sind nur wenige Schritte. Für Linux und Android ist die Vorgehensweise prinzipiell ähnlich. iOS konnte ich bisher nicht testen.
Die Dateien dullie1_0.py und config.json müssen in einen beliebigen, aber gleichen Ordner kopiert werden, für den volle Zugriffsrechte bestehen. Dann ist in der Datei config.json einmalig das eigene Call einzutragen und die Datei zu speichern. Die Bearbeitung ist mit einem einfachen Texteditor möglich. Beim Speichern darauf achten, dass der Name der config.json nicht verändert wird, sonst wird sie vom Skript nicht gefunden. Einige Editoren hängen eigenmächtig beim Speichern beispielsweise .txt oder ähnliches dran.
Falls noch nicht vorhanden, Python 3 von der offiziellen Seite python.org herunterladen und installieren. Wichtig: Beim Setup unbedingt das Häkchen bei „Add python.exe to PATH“ setzen! Für andere Betriebssysteme braucht man vergleichbare Python 3 Umgebungen, z. B. Pydroid 3 für Android oder Pyto für iOS. Linux bzw. Raspberry PI OS haben in aller Regel standardmäßig Python an Bord. Jetzt einfach die Datei dullie1_0.py doppelt anklicken und schon geht’s los. Der Python-Interpreter wird im Hintergrund automatisch gestartet und führt das Skript aus. Eventuell muss die Firewall noch die notwendigen Rechte erhalten. Sie sollte sich beim ersten Start melden, sofern es sich um die bordseitige Firewall von Windows handelt.
Wenn alles funktioniert hat, sollte ein schwarzes Fenster aufgehen, das so aussieht:
Dieses Fenster kann problemlos minimiert werden. Wird es allerdings geschlossen, wird das Skript mit allen Funktionen beendet. Das sollte dann getan werden, wenn DULLIE nicht mehr gebraucht wird.
Verbindung des Loggers
Wenn DULLIE auf der gleichen Maschine läuft, ist bei der Telnet-Verbindung Folgendes einzutragen:
- Host/IP: 127.0.0.1, localhost oder IP des Rechners, auf dem DULLIE läuft
- Port: 7388
Je nach Logger kann es beim Connect wenige Sekunden dauern, bis Daten kommen – das ist normal. Danach geht es aber ohne Verzögerung. Es können mehrere Logger gleichzeitig mit DULLIE verbunden werden.
Das Dashboard
Die Steuerzentrale ist eine einzige Webseite, die ich von jedem Browser im LAN aufrufen kann, auch von mehreren gleichzeitig. Egal welcher angeschlossene Browser Änderungen vornimmt, sie werden sofort aktiv und in jedem anderen geöffneten Browser dargestellt und der Telnet-Server passt die bereitgestellten Daten entsprechend an. Der Browser muss während des Betriebes nicht laufen, er dient nur zu Konfigurations- und Überwachungszwecken. Die Webseite ist nicht gesichert (http), weil ich das im eigenen LAN als unnötig erachte, eventuelle Fehlermeldungen können ignoriert werden.
Das Dashboard ist in 3 Bereiche aufgeteilt. Die Bedienung ist einfach und bedarf nur einer geringen Erläuterung.
Bereich Filter
Filter können einfach durch Mausklick ein- oder ausgeschaltet werden, die Rückmeldung erfolgt grafisch. Die Bandfilter ordnen empfangene Spots anhand ihrer Frequenz festen Bandbereichen zu, wobei der V/U/SHF-Schalter alle Bänder ab 4 m aufwärts (4 m, 2 m, 70 cm, 23 cm, 13 cm) zusammenfasst. Deaktivierte Band-Schalter filtern gezielt nur die Spots heraus, die exakt in ihren jeweiligen Frequenzbereich fallen. Spots außerhalb der definierten Bänder oder mit fehlerhaften Frequenzdaten werden von den Band-Schaltern nicht blockiert, sondern stets durchgelassen. Die Filtereinstellungen werden im config-File gespeichert und bleiben somit bei einem Neustart erhalten.
Bereich Status & Control
Hier können Cluster hinzugefügt, gelöscht oder auch pausiert werden. Alle Cluster, bei denen „RX“ aktiv ist, werden automatisch verbunden und bei Abbruch wird regelmäßig versucht, die Verbindung wiederherzustellen. Wenn Cluster ab oder zugeschaltet werden (also RX on/off), kann es ein paar Sekunden dauern, bis das Ergebnis im Browser zurückgemeldet wird. Eine Statusanzeige informiert über den Verbindungsstatus zum betreffenden Node.
Ein einziger Node kann als Empfänger von selbst abgesetzten Spots durch „TX“-Markierung gewählt werden. Hierbei ist es egal, ob der Spot über das Dashboard oder den Logger abgesetzt wird. Als Spotter agiert das Call, das auch in DULLIE hinterlegt ist, nicht das Call im Logger. Zudem besteht die Möglichkeit, neue Cluster in die Liste einzutragen (ADD) oder bestehende zu löschen (DEL).
Außerdem können in diesem Bereich die Totzeit „Hold Time“ (wie viel Zeit muss vergehen, bis ein gespottetes Call auf der gleichen QRG erneut gespottet wird) und die Frequenztoleranz „Freq Tolerance“ eingegeben werden. Innerhalb der Toleranz wird ein Spot als Duplikat erkannt und verworfen. Vor allem in SSB macht es Sinn, hier eine etwas größere Spanne einzutragen, um Mehrfachspots zu vermeiden. Hier ist es wichtig, die Daten per Button mit „Save Settings“ zu speichern.
Im unteren Bereich findet sich die Übersicht, auf welchem Port der Telnet-Server aktiv ist (7388 – veränderbar im Code) und wie viele Clients aktuell verbunden sind.
Bereich DX-Spots
Hier sind die gefilterten Spots sichtbar, also das, was auch per Telnet-Server weitergeleitet wird. Änderungen an den Filtern sollten so direkt im Dashboard beobachtbar sein. Die eingebaute Suchfunktion funktioniert ähnlich dem Check-Partial: Hier kann man in den maximal 1.000 letzten Spots nach einem Call oder Teilen daraus suchen. Sehr hilfreich, wenn mal schnell dargestellt werden soll, wo der fehlende Multi denn sonst noch aktiv ist oder was eine DXpedition gerade so treibt. Die Zeile zum Absetzen von Spots ist selbsterklärend.
Hinweise für den Betrieb
Es ist mit Bedacht bei der Auswahl der Cluster und Skimmer vorzugehen. So sollte man bekanntermaßen das RBN nicht direkt connecten (auch wenn das in meinen Screenshots zu sehen ist). Auch ist weniger mehr. Es macht keinen Sinn, sich wild durch die Welt zu verbinden, nur weil es möglich ist. Mein persönliches Maß liegt irgendwo bei 3 bis 5 zuverlässigen Nodes.
Zudem sollten alle Cluster und Skimmer auf anderem Wege (Telnet, PuTTY) vorher einmal connected und die gewünschten Einstellungen vorgenommen werden. DULLIE kann nur Spots absetzen, keine Clusterbefehle. Ich persönlich habe in keinem Node Filter gesetzt und überall Skimmerdaten aktiviert, soweit das angeboten wurde.
Persönliche Erfahrungen
Das System läuft bei mir und einigen OV-Kollegen auf ausgedienten Raspberry Pi 2B/3B im 24/7-Betrieb vollkommen unauffällig. Niemand muss sich mehr darum kümmern und der Energiebedarf ist vernachlässigbar.
Versuche, DULLIE auf einem Smartphone unter Android laufen zu lassen, waren ebenfalls erfolgreich. Nur iOS konnte ich nicht testen. Hier könnte es spannend werden, weil Server-Prozesse stark eingeschränkt laufen – über Rückmeldungen und Erfahrungen würde ich mich sehr freuen.
Die Lösung ist auf meine Bedürfnisse zugeschnitten und ich beabsichtige nicht, große Erweiterungen zu machen, da wie bereits erwähnt die Schlankheit und Performance für mich das Entscheidende bei der Entwicklung waren.
Schlusswort & Lizenz
DULLIE versteht sich als Projekt von einem Contester für Contester. Der Code darf für nicht-kommerzielle Zwecke frei verwendet, an eigene Bedürfnisse angepasst und im privaten Rahmen weitergegeben werden. Bei jeglicher Weitergabe oder Verwendung von Modifikationen ist der ursprüngliche Urheber (DF3VM) zu erwähnen.
Bitte beachten: Die Veröffentlichung und das Bereitstellen der Dateien auf sonstigen Online-Plattformen oder in anderen Communities ist ausdrücklich nicht gestattet – eine offizielle Bereitstellung erfolgt exklusiv über die Seiten des Bavarian-Contest-Club (BCC).
Viel Spaß beim Ausprobieren, wir hören uns im nächsten Contest. Schauen wir mal, was DULLIE beim CQWW macht.







