APRS Telemetrie

  • Hallo zusammen,

    da unser SmartRepeater über einige Sensoren verfügt (Spannung, Temperatur etc.) bietet es sich an, die Messwerte via APRS-Telemetrie zu verschicken.

    Ich habe herausgefunden, dass dafür wohl die https://github.com/sm0svx/svxlink…ocationInfo.cpp umgebaut werden muss. Da habe ich aber kein Angst vor, hi. Auch das APRS-Telemetrieprotokoll ist mir bekannt (bzw. liegt mir vor).

    Wie kann ich nun aber einen Messwert in die LocationInfo.cpp einlesen? Die Werte stehen jeweils einzeln im Ordner "/dev/shm" zur Verfügung. Also für die Temperatur z.B. in der Datei "/dev/shm/temp.txt". Dort ist z.B. "239" eingetragen. Das entspricht dann 23.9°C. Wie kann ich nun diesen Wert einlesen? Die anschließende Weiterverarbeitung/Umrechnung ist dabei aber weniger ein Problem. Das bekomme ich schon irgendwie hin.

    Ich brauche keine komplett fertige Lösung sondern nur einen ganz kleinen (entscheidenden) Tipp ;)

    Schönen Gruß
    Frank, DL3DCW

  • Moin Frank,

    das Beste wird sein, eine APRS-Message per pty extern einzuspeisen: PTY_PATH=/tmp/aprsstats .
    Die APRS-Message mußt Du Dir allerdings selber zusammenstellen, SvxLink ist hier nur der Übermittler.
    Ich würde hier nicht in der LocationInfo anfangen etwas zu ändern. Die Änderungen darin wären zu groß, als dass es sich schnell und auf einfache Art und Weise umsetzen ließe.
    Schreib Dir was einfaches in Perl oder Python und sende es dann an das pty device im Telemetrie-Format. Das Call ersetzt SvxLink automatisch mit seinem eigenen, wenn Du 'XXXXXX' an Stelle des Calls einfügst.

    vy 73s de Adi / DL1HRC

  • Hallo Adi,

    ok, danke für die Info. Ja, dass mit den PTYs ist vermutlich sauberer. Bin mir nur nicht sicher, ob sich das mit der bereits vorhandenen Telemetrie beisst. Mal testen ...

    Im Prinzip könnte ich es ja sogar völlig ohne SvXLink lösen. Eine Message an den APRS-Server zu senden ist ja nicht allzu schwer ...

    Schönen Gruß
    Frank, DL3DCW

  • Moin Frank,

    es geht natürlich auch ohne SvXLink, allerdings mußt Du Dich dann um alles selber kümmern, Aufbau der TCP-Verbindung zum APRS-Server, Reconnect, falls der Verbindungsaufbau fehlschlägt, Anmeldung beim APRS-Server, Senden der APRS-Message, Verbindungsabbau.
    Bitte bedenken: Manche APRS-Server lassen doppelte Verbindungen (Rufzeichen bzw. IP-Adresse) - und das würde ja sicher bei einer eigenen Applikation vom selben Server passieren - nicht zu was zu Reconnects führt.
    Will nur verhindern, dass Du die selbe Zeit, die ich schon verplämpert habe noch einmal verplämpern mußt :D

    vy 73s de Adi / DL1HRC

  • Funktioniert das denn dann mit der doppelten Telemetrie? Also die Statistik aus der LocationInfo und zusätzlich meine eigene? Blicke da noch nicht so recht durch ...

  • das sollte passen, SvxLink sendet nur die Nutzung nach Erlang, keine "wirklichen" Telemetrie-Meßdaten.
    Schau mal in http://www.aprs.org/doc/APRS101.PDF, im Abschnitt 13 (Seite 78) nach, den String mußt Du mit
    T einleiten, danach kommt eine Sequenznummer und dann Deine Messwerte.

    vy 73s de Adi / DL1HRC

  • Ja, die Doku habe ich. Unter dem SvxLink-Rufzeichen (z.B. ER-DB0WET) gibt es aber doch schon die Erlang-Telemetrie. Funktioniert dann unter dem gleichen Rufzeichen zusätzlich(!) eine weitere? Vielleicht sollte ich es einfach mal ausprobieren ... ;)

  • nee, Halt! habe gerade noch mal nachgeschaut, das wird bereits verwendet. Dann bleibt Dir nur Deine Daten unter einem anderen Objekt zu senden, z.B. als DB0WET an Stelle von ER-DB0WET. Ansonsten weiß ich nicht was da rauskommen würde :(

    Mann, Mann ist das lange her :o Das war 2009!

    vy 73s de Adi / DL1HRC

  • Hallo Adi,

    Quote from dl1hrc

    Mann, Mann ist das lange her :o Das war 2009!


    ja, meine APRS-Anfänge (und die Beschäftigung mit dem Protokoll) liegen auch schon sehr weit zurück. Hatte damals einen mobilen Tracker gebaut und komplett von Grund auf programmiert. Musste auch die AX25-Routinen selbst schreiben.

    BTW: Seit ein paar Tagen habe ich nun einen sehr viel schöneren Tracker: http://forum.aprs-dl.de/showthread.php?tid=8 ;)

    Aber auch wenn APRS schon recht "alt" ist: Ich finde die Möglichkeiten immer noch phantastisch. APRS wird viel zu sehr unterschätzt. Und gerät dadurch vielleicht auch etwas in Vergessenheit. Das hat es aber gar nicht verdient. Mit einfachsten Mitteln kann man damit nämlich viele tolle Sachen machen.

    Ich werde einfach mal ein wenig experimentieren. Wird schon irgendwie klappen ...

    Schönen Gruß
    Frank, DL3DCW

  • Nachtrag: Hast Du mal ein einfaches Beispiel wie ich etwas (z.B. einen APRS-String) auf das PTY schreiben kann? Muss ich noch irgendetwas in der SvxLink-Konfiguration machen? Habe das nämlich noch nie gemacht ...

  • also bei mir zu Hause speise ich die Positionsmeldungen von meinen Tetra-MTP's über genau diese Art ein. Im SvxLink-Log sieht das dann so aus:

    22.02.2017 07:44:01.850: DL2HXA-5>APRS,qAR,DB0HRC-10:!5113.35N/01156.60E>Andreas
    22.02.2017 07:45:01.572: DL2HXA-5>APRS,qAR,DB0HRC-10:!5113.45N/01157.66E>Andreas
    22.02.2017 07:46:00.210: DL2HXA-5>APRS,qAR,DB0HRC-10:>Rufaufbau GSSI 1, 22.02.2017 07:46:00

    Du sendest einfach (z.B. diese Statusinformation)

    Code
    DL2HXA-5>APRS,qAR,DB0HRC-10:>Rufaufbau GSSI 1, 22.02.2017 07:46:00

    an die PTY-Schnittstelle und SvxLink leitet es an den APRS-Server weiter.

    vy 73s de Adi / DL1HRC

  • Ja, soweit schon ok. Aber wie sende ich die Daten an die PTY-Schnittstelle? Genau da liegt mein Problem im Moment. Denn ich habe noch nie mit PTYs gearbeitet ...

    In einem ersten Versuch bastele ich mir die Telemetrie gerade über Netcat zusammen: http://aprs.fi/telemetry/a/DB0IS

    Eventuell macht es auch Sinn, dass wirklich von SvxLink zu trennen. Denn DB0IS ist ein Standort, der ausschließlich über Solar versorgt wird (kein Netzanschluss vorhanden). Somit müssen wir Strom sparen. Daher wird SvxLink automatisch beendet, wenn die Akkuspannung einen gewissen Wert unterschreitet. Somit sind dann nur noch die absolut wichtigsten Funktionen verfügbar. Zumindest solange, bis der Tiefentladeschutz alles abschaltet ...

  • im einfachsten Fall mit:

    Code
    echo "DL2HXA-5>APRS,qAR,DB0HRC-10:!5113.35N/01156.60E>Andreas" > /tmp/aprs

    wenn /tmp/aprs Dein vom SvxLink erzeugtes PTY ist.

  • So, die ersten Telemetriewerte sind schon live: http://aprs.fi/telemetry/DB0IS ;)

    Derzeit allerdings noch separat über Netcat. Was mich wundert: Immer 15 Sekunden nachdem ich einen Telemetrie-Datensatz via Netcat zum Server geschickt habe sendet SvxLink seine APRS-Bake. Und zwar unabhängig vom im SvxLink eingestellten Intervall! Beides hat jedoch überhaupt nichts miteinander zu tun. Ich sende:

    Code
    2017-02-23 15:16:35 CET: DB0IS>APRS,TCPIP*,qAC,DB0TV:!5123.68N/00743.33Er[SmartRepeater] Iserlohn2017-02-23 15:16:35 CET: DB0IS>APRS,TCPIP*,qAC,DB0TV::DB0IS    :PARM.BATT Voltage,CPU Temp,CASE Temp,OUT Temp,PA Power,Audio,Video,Talk,SvxLink,APRS,RemRX,WebSDR2017-02-23 15:16:35 CET: DB0IS>APRS,TCPIP*,qAC,DB0TV::DB0IS    :UNIT.Volt,Deg C,Deg C,Deg C,Watt2017-02-23 15:16:35 CET: DB0IS>APRS,TCPIP*,qAC,DB0TV::DB0IS    :EQNS.0,0.1,0,0,0.1,0,0,0.1,0,0,0.1,0,0,0.1,02017-02-23 15:16:35 CET: DB0IS>APRS,TCPIP*,qAC,DB0TV:T#17,242,536,301,0,1,11110000


    Und 15 Sekunden später sendet SvxLink unabhängig vom eingestellten Intervall seine eigene Bake:

    Code
    2017-02-23 15:16:50 CET: DB0IS>APRS,TCPIP*,qAC,DB0TV:;ER-DB0IS *111111z5123.68NE00743.33E0438.962MHz T000 R17k [Ruhrlink] Iserlohn


    Habe ich irgendwo einen kleinen Kobold im System? Denn SvxLink weiß von meiner eigenen Telemetrie doch garnichts ...

  • Ok, Kobold eingekreist: So wie Du schon angemerkt hast (und ich auch schon mal 'drüber gestolpert bin) mögen die APRS-Server keine doppelten Verbindungen mit dem gleichen Rufzeichen. Ich hab nun mal eine abweichende SSID angegeben. Mal sehen ob's so besser funktioniert ...