Arduino und das Reverse Beacon Network

  • Hallo,


    ich hatte mal wieder nichts besseres zu tun: Der K2 lief, das Reverse Beacon Network lief und auf dem Tisch lag ein Arduino. Na ja, ich habe die Teile verbandelt und heraus kam ein Arduino, der die neuesten DX-Spots frisch aus dem Server auf dem Arduino anzeigt.


    Na ja ein paar Einschränkungen sind vorhanden, aber die Kiste läuft und ich kann den Rechner wegstellen. Weitere Infos wie immer in meinem Blog: Blog


    72 de Hajo

  • Moin,


    Raimund, unter http://www.sk6aw.net/cluster/ findest Du, wenn man sich angemeldet hat, die Möglicht die Clustermeldungen zu filtern. HamOffice kann ebenfalls die Clustermeldungen gefiltert anzeigen. Hajo verwendet für die schöne Idee einfach Telnet.


    Telnet kann man unter Windows mit Putty http://www.chiark.greenend.org…atham/putty/download.html oder http://www.poderosa.org/ verwenden. Oder mit dem hauseigenen Telnet-Client von Windows, der aber bei neueren Versionen nicht mehr als Standard mitinstalliert wird.


    Nun fehlt nur noch, wie von Hajo im Blog-Artikel beschrieben, der Filter für den DX-Cluster. Meistens ist es die Software DXSpider auf den Cluster-Servern. Die Dokumentation dazu gibt es hier http://www.dxcluster.org/main/, speziell für die Filter hier http://www.dxcluster.org/main/filtering_en.html


    Eine ganze Reihe an Cluster-Adressen sind hier zu finden: http://www.ng3k.com/misc/cluster.html Ich verwende gerne obigen Cluster, bei dem man sich mit telnet sk6aw.net unter Angabe des Rufzeichens auch per Telnet anmelden kann. Bei Putty einfach Port auf 8000 stellen, sk6aw.net in das Adressfeld eintragen und los geht es.


    73, Tom

  • Tja - da schaut man sich doch die Software von AB5K an - bisher die beste Clustersoftware, die ich als User nutzen kann - unzählige Filtermöglichkeiten - keine unsäglichen Makros/Befehle, die man irgendwo eingeben muss.


    http://www.ab5k.net/Home.aspx -> V6 client software.


    Ansonsten verwende ich nur N1MM -> hier kann man clientmässig ebenfalls einiges an "Spots" eliminieren - aber das obige Programm ist m.E. optimal für "normalen" Betrieb.


    Ich gehe nicht mehr ins RBN oder andere Telnetcluster - seitdem ich AB5K installiert habe.


    Sorry, meine Antwort war vielleicht doch OT - das mit dem Arduino hatte ich nicht richtig gelesen - aber der AB5K Client kann auch über Software angebunden werden. Vielleicht doch auch ein Versuch wert.

  • Moin,

    Sorry, meine Antwort war vielleicht doch OT - das mit dem Arduino hatte ich nicht richtig gelesen - aber der AB5K Client kann auch über Software angebunden werden. Vielleicht doch auch ein Versuch wert.

    Das "Monster" .NET samt dem dazugehörigen Windows wird wohl kaum auf einem Mikrocontroller laufen ;) Es ging ja um eine Anzeige der Cluster ganz ohne PC.


    Telnet geht aber schon recht simpel, mit dem Arduino oder aber mit jedem beliebigen Mikrocontroller der irgendwie ans Netzwerk angeschlossen ist, z.B. über einen Lantronix XPort oder mit einem ENC28J60, für den es auch viele Beispiele im Netz gibt. Damit man dann im Controller die richtigen Filter einsetzen kann, sollte man diese mit einem Telnet-Client vorher am PC testen, das erspart viel Mühe.


    Ich finde die Idee, das mit einem Controller zu machen, gut! Jetzt noch mit einem größeren Display koppeln und eine Baken-Uhr mit einbauen ;) Wenn ich Zeit hätte, hier liegt noch ein EA eDIP240 Touch-Display rum.


    73, Tom

  • Ok,


    daher wohl auch "OT" von mir - somit bitte als Info betrachten für Clusteruser/RBNUser mit .NET.


    Also "Sorry" das ich das nicht genauer gelesen hatte.


    Peter

  • Hallo,


    die Fernsteuerung der Filter laesst sich auch ganz gut mit dem VE7CC User Client machen.


    Aber nachdem sich einige beschwert hatten, dass das Display zu klein ist, bin ich auf die Suche gegangen und habe dies hier gefunden.


    Dafür gibt es auch Bibiotheken, um sie z.B. mit einem R-Pi zu betreiben.


    Alles ganz einfach und die Schritte 2-5 sind fast schon gelöst.


    Aber ich habe seit drei Tagen Probleme mit dem ersten Schritt:


    Das Einloggen unter Python.


    ############
    import telnetlib
    import sys


    host = "69.36.242.140"
    port = 7000


    tn = telnetlib.Telnet(host, port)


    #tn.read_until(b"callsign: ")
    tn.write(b' xx1xxx\n') # fake


    print(tn.read_all().decode('ascii'))
    #############


    Ich bekomme die Anfangsmeldung, aber wenn mein Rufzeichen gesendet wird, werde ich abgewiesen, da dies kein Rufzeichen waere.


    In der Zeile
    tn.write(b' xx1xxx\n')
    muss ich ein Leerzeichen davorsetzen und das Rufzeichen wird gross geschrieben.


    Wenn ich dieses nicht mache passiert gar nichts.


    Mit import getpass habe ich dieselben Ergebnisse.
    (Dies auf Windows und Linux Maschinen)


    Gibt es jemand im Forum, der in Python firm ist (meine zweiten Versuche) und das Telnetprotokoll kennt.


    Ich habe es lokal probiert und hier funktioniert es. Weiterhin bekomme ich von dem Server ein Echo zurück ...


    There must be a trick when talking to a unix-machine ;)


    Und ein Portsniffer gab mir einen Datenverkehr, den ich nicht nachvollziehen kann.


    72 de Hajo

  • Hallo Hajo,


    ich habe deinen Code genommen und das Leerzeichen vor dem Rufzeichen rausgenommen.


    Hier das funktionierende Beispiel (Python 2.7; OS X):



    import telnetlib


    host = "69.36.242.140"
    port = 7000


    tn = telnetlib.Telnet(host, port)
    tn.read_until(b"callsign: ")
    tn.write(b'xx1xxx\n') # fake
    while 1:
    print tn.read_until("\n")


    Solltest du noch andere Fragen haben, versuche ich gerne zu helfen. Eine RPi mit Raspbian habe ich auch.


    Alles Gute,
    Sanjin
    E71DX

  • Hallo Sanjin,


    das war es. Danke.
    Die Umwandlung von Strings zu Byte hat mich schon vorher verzweifeln lassen. Das naechste Mal bleibe ich bei einer Sprache, die ich kann 8| .


    Jetzt warte ich auf das Display. Die Idee stammt von kontroller.


    Und wenn es wieder Probleme gibt, dann weiss ich wo ich klingeln muss.


    72 de Hajo

  • Moin,


    das Problem lag aber IMHO woanders.


    In dem Code von Hajo steht:
    print(tn.read_all().decode('ascii'))


    In dem Code von Sanjin:
    while 1:
    print tn.read_until("\n")


    Telnet.read_all liest bis ein EOF kommt, was beim Telnet-Protokoll einem Schließen der Verbindung entspricht. Das führt dazu, dass keine Ausgabe erfolgt, bis die Connection wieder geschlossen wird.


    Sanjin verwendet am Ende eine Schleife und der Output erfolgt immer, wenn ein '\n' empfangen wird. Wenn man sich nicht sicher ist, dass ein bestimmtes Zeichen auch wirklich gesendet wird, kann man das auch mit einer Wartezeit machen.


    import sys
    import telnetlib
    import time


    host = "69.36.242.140"
    port = 7000


    tn = telnetlib.Telnet(host,port,10)
    # tn.set_debuglevel(10)
    tn.read_until("callsign",5)
    tn.write("DL7BJ\n");


    output = tn.read_some()
    while output:
    print(output.decode('ascii'))
    time.sleep(0.1)
    output = tn.read_some();


    Ich nutze Python aber gewöhnlich nicht, kann also sein, dass ich damit auch ganz verkehrt liege.


    73, Tom

  • Hallo,


    ich bin auf Python gekommen wie die Jungfrau ... , weil die Bibliothek für die Ansteuerung des Displays vorhanden ist und das Display auch noch ordentlich aussieht - fast ein Gehäuse hat.


    Dann hatte ich nach einer telnet Library gesucht und gefunden - nur den Beispielcode bekam ich s.o. nie zum Laufen.
    Ich hatte in diversen Foren (auch Python) gefragt, bekam aber keine Antwort, bis ich (trommelwirbel) wieder hier gelandet bin.


    Jetzt muss ich den Stream zeilenweise nur noch in einem String sammeln, diesen etwas zerschlagen und an das Display schicken und dann hat der R-Pi endlich etwas Sinnvolles zu tun. Meine anderen Experimente Fldigi etc. liefen zwar mit einem Kabelgewirr so lala, aber das konnte man mit einem Laptop besser realisieren.


    Noch ein schönes Wochenende


    72 de Hajo

  • Hallo Tom,


    da eigentliche Problem war die Verbindung. Mit einem Leerzeichen am Anfang bekommt man tatsächlich die Antwort wrong callsign...


    73, Sanjin
    E71DX

  • So, jetzt tut der Raspberry Pi auch dies was der Arduino schon konnte, nur besser :thumbup:
    Wie immer in meinem Blog beschrieben.


    72 de Hajo