Schnittstelle zu Python

  • Quote

    Wäre sowas nicht irgendwie mit TCP/IP möglich zu realisieren ?

    Kann man natürlich alles machen. Wenn das aber auf einer Maschine läuft oder der Atmel8 erst mit einer Ethernetschnittstelle nachgerüstet werden muß und sich möglicherweise in der gleichen Kiste befindet ist es ein bisschen wie mit dem Schinken nach der Wurst geworfen.
    Interessant wird es erst, wenn man mehrere, über größere Entfernung abgesetzte Displays betreiben möchte. Dann ist ein kleines Android-Tablett mit 'nem Browser (was man bei eBay für ein paar Euros bekommt) eventuell auch wieder die bessere Wahl.

    vy 73s de Adi / DL1HRC

  • Hallo zusammen,

    so, nun ist wieder Zeit sich dem Thema zu widmen. Viele Baustellen zurzeit :)

    Zunächst einmal wäre es grundsätzlich zu wissen, wie man an Informationen kommt wie "wer spricht gerade", "wer ist eingeloggt", "wer (dis)connected sich gerade", "wie viele sind eingeloggt".
    Also im Grunde, das was das Windows Echolink und auch weitgehend im QTel auch vorhanden ist. Diese gilt es eben verfügbar zu machen und dann kommt eben die (für mich) größte Hürde, diese Informationen abzugreifen.

    Mit meinen bescheidenen Erfahrungen hatte ich auf Python gesetzt. Dies könnte im Hintergrund in zyklischen Abständen diese Infos`"abholen" und per I2C an den Arduino senden. Dort wird es zur Anzeige gebracht. So wie auch Telemetrie des Gates, Temp, Spannungen Ströme etc........

    Sollte es andere Wege geben, gerne. Allerdings bräuchten wir diese nachgeordnete I2C Anbindung aus o. g. Gründen.


    Grüße vom Niederrhein

    Stefan

  • Hallo Stefan,

    möglicherweise ist es gut hier ein einfaches Protokoll zu bauen, damit man die Meldungen zur Anzeige wieder trennen kann, z.B: kann man folgende Meldungen ausgeben lassen:

    DISC=DL1HRC
    CON=DB0ABC
    TX=DL1HRC,1
    usw.

    Mit Deinem Python-Skript mußte dann die Daten sammeln und entsprechend aufbereiten, damit diese sinnvoll dargestellt werden können. Eventuell mußt Du auch zwei Files getrennt beschreiben (normale Logic und EchoLink) weil sich das etwas einfacher gestaltet. Ich will nur darauf hinweisen, dass es eventuell noch "schönere" Varainten gibt aber fang erst mal damit an. Achtung, ich habe jetzt aus den Prozeduren alle Ansagen beim Connect/Disconnect rausgenommen, da ich ja nicht weiß wie das bei dir läuft. Diese mußt Du natürlich noch nachtragen.

    EchoLink: erstelle eine Datei /usr/share/svxlink/events.d/local/el-ausgaben.tcl mit folgendem Inhalt

    Nach dem Neustart sollten über die Datei /tmp/echolinkinfo die Ausgaben kommen. Auf der "Python-Seite" ersetzt Du dann die Strings entsprechend: "TX=DL1HRC,1" in "DL1HRC spricht gerade" oder wie Du das eben haben möchtest.

    vy 73s de Adi / DL1HRC

  • Hallo Adi,

    danke schon mal für Deine Arbeit.

    Heute morgen habe ich zunächst die TCL sowie die "echolinkinfo" wie von Dir beschrieben erstellt und Svxlink neu gestartet. Habe dann die "echolinkinfo" beobachtet mit folgendem Ergebnis

    [root@Echolink stefan]# tail -100f /tmp/echolinkinfo
    CON=Call1
    tail: /tmp/echolinkinfo: Datei abgeschnitten
    CON=Call2
    tail: /tmp/echolinkinfo: Datei abgeschnitten
    DISC=Call2

    usw.

    Die Datei wir jedes mal neu geschrieben, wenn sich eine neue Station neu ein-, oder ausloggt. Das ist auch ok so.

    Quote

    .....dann die Strings entsprechend: "TX=DL1HRC,1" in "DL1HRC spricht gerade"

    Klappt leider nicht. Wenn ich das richtig interpretiere, müsste das doch in dem Zweig

    Code
    proc is_receiving {rx call} {
        write_data "TX=$call,$rx";

    auch ausgeleitet werden, oder?


    Grüße

    Stefan

  • mit tail geht das leider nicht, die Datei wird nicht größer sondern bei jedem Event neu erstellt. Du mußt also ständig pollen.

    Das hier "CON=Call2" verstehe ich nicht, woher kommt Call2 ??

    vy 73s de Adi / DL1HRC

  • Hallo Adi,

    "Call1" und "Call2" steht natürlich symbolisch für irgendein Rufzeichen. Hmmm wenn das mit Tail nicht funktioniert...... Ok, werde mal sehen, wie ich dem auf die Spur komme.

    Trotzdem Danke zunächst.


    Grüße

    Stefan

  • Hallo Adi,

    muss mich leider noch einmal melden zu der /tmp/echolinkinfo

    Hast geschrieben

    Quote

    mit tail geht das leider nicht......

    Habe das nun mal mit

    Code
    watch cat /tmp/echolinkinfo

    gemacht und dabei wird ja alle 2 Sekunden der aktuelle Eintrag abgefragt. Soweit meine bescheidenden Kenntnisse :) Wie zuvor schon beschrieben, kann ich erkennen wenn jemand sich connected oder disconnected. Aber leider noch nicht wer gerade aktuell spricht. Ist mein benutzter Befehl auch nicht der richtige um den Inhalt anzeigen zu lassen? Oder hat es damit zu tun, dass nur alle 2 Sekunden abgefragt wird? Aber ich denke, der Eintrag sollte ja eigentlich so lange erhalten bleiben, bis der Netzteilnehmer die Taste wieder losgelassen hat und somit auch sichtbar sein, oder?

    Dann direkt noch eine Frage. Du hast ja zum Test die Ansagen deaktiviert. Welchen "Schalter" haste denn da umgelegt? :)


    Grüße

    Der Niederrheiner

  • Moin zusammen,

    Adi, habe soeben im laufenden Log folgenden Eintrag gefunden:

    Code
    So 12 Mär 2017 10:13:01 CET: Tx1: Turning the transmitter OFF
    So 12 Mär 2017 10:13:03 CET: *** ERROR: Unable to handle event: EchoLink::is_receiving 1 in logic SimplexLogic (wrong # args: should be "EchoLink::is_receiving rx call")
    So 12 Mär 2017 10:13:03 CET: Tx1: Turning the transmitter ON

    Passiert immer dann, wenn ein netzseitiger Teilnehmer spricht.


    Grüße

    Stefan

  • Ich habe einen LiveMonitor mit PHP und JavaScript gebastelt ist zwar etwas umständlich von der Ausführung her aber es klappt.

  • Quote

    So 12 Mär 2017 10:13:03 CET: *** ERROR: Unable to handle event: EchoLink::is_receiving 1 in logic SimplexLogic (wrong # args: should be "EchoLink::is_receiving rx call")

    da stimmt irgendwie Deine Prozedur is_receiving nicht. Es sollten zwei Parameter übergeben werden, das Rufzeichen und als zweiter Parameter der TX-Status (1 oder 0).
    Schau mal wie Deine is_receiving aussieht.

    73s de Adi

  • Hallo Adi,

    hmmm ich habe den Code so übernommen, wie Du ihn hier gepostet hattest. Du weißt doch, ich kann sowas doch gar nicht selber :roll: :):)


    Grüße

    Stefan