In einem meiner Artikel („APRS-IS mit dem Raspberry Pi“ aus 2013) habe ich ja schon beschrieben wie man mit nc, einem Text-File und dem APRS-IS Netzwerk eine APRS-Bake abesetzen kann. In diesem Artikel möchte ich euch zeigen wie ich APRS Telemetriedaten des RaspberryPi Sende.
Das APRS Protokoll beinhaltet eine möglichkeit Telemetrie zu versenden eine Erklärung findet man im APRS Protocol Reference (pdf) Handbuch.
Hier sieht man die Temperaturkurve des Raspberry CPUs.
Für die Telemetrie gibt es im APRS folgende felder das T (Telemetry Report Format), die PARM. (Parameter Name Message), die UNIT. (Unit/Label Message), die EQNS. (Equation Coefficients Message) und die BITS. (Bit Sense/Project Name Message). Da ich mein Datenpakt mit nc an den APRS-IS Server sende, muss ich mir das Paket selbst zusammenbauen. Wenn das Paket fertig ist sieht es bei mit so aus:
DO7TC-1>APE001,WIDE1-1,TCPIP*:!5236.49N/01324.96EI Denis / http://www.do7tc.de / RaspberryPi TESTBETRIEB DO7TC-1>APE001,WIDE1-1,TCPIP*:>Verbunden via HAMNET - Telemetrie zeigt System Status des RaspberryPi DO7TC-1>APE001,WIDE1-1,TCPIP*::DO7TC :UNIT.Gard C Temp,Voltage,Voltage,Off,kB DO7TC-1>APE001,WIDE1-1,TCPIP*::DO7TC :PARM.CPUCore Temp,V Core,V SDram,Off,FreeMem kB DO7TC-1>APE001,WIDE1-1,TCPIP*::DO7TC :BITS.00000000,RaspberryPi Status DO7TC-1>APE001,WIDE1-1,TCPIP*:T#160,39.0,1.2000,1.2250,50,25092,000000
Wie erstelle ich nun das Paket, dazu ich habe mir eine Skript geschrieben – das wie folgt aussieht:
#!/bin/bash echo "user DO7TC pass 17401 DO7TC-1>APE001,WIDE1-1,TCPIP*:!5236.49N/01324.96EI Denis / http://www.do7tc.de / RaspberryPi TESTBETRIEB DO7TC-1>APE001,WIDE1-1,TCPIP*:>Verbunden via HAMNET - Telemetrie zeigt System Status des RaspberryPi DO7TC-1>APE001,WIDE1-1,TCPIP*::DO7TC :UNIT.Gard C Temp,Voltage,Voltage,Off,kB DO7TC-1>APE001,WIDE1-1,TCPIP*::DO7TC :PARM.CPUCore Temp,V Core,V SDram,Off,FreeMem kB DO7TC-1>APE001,WIDE1-1,TCPIP*::DO7TC :BITS.00000000,RaspberryPi Status DO7TC-1>APE001,WIDE1-1,TCPIP*:T#"`cat /tmp/zahl.txt`\ ","`vcgencmd measure_temp | awk -F'=' '{print $2}' | awk -F"'" '{print $1}'\ `","`vcgencmd measure_volts core | awk -F'=' '{print $2}' | awk -F'V' '{print $1}'`\ ","`vcgencmd measure_volts sdram_p | awk -F'=' '{print $2}'| awk -F'V' '{print $1}'`\ ",50"``\ ","`free | grep Mem | awk '{print $3}'`\ ",000000"``\ > /tmp/aprs-telemetrie.txt quelle="$(cat /tmp/zahl.txt)" wert=1 ziel="/tmp/zahl.txt" zahlneu=$((quelle+wert)) echo $zahlneu > "$ziel"
In diesem Skript wird also das Telemetriepaket zusammen gebaut, (verzeiht mir bitte die Art und Weise – ich bin kein Entwickler, es hat so einfach funktioniert). Das Skript schreibt eine Datei nach /tmp/ diese übergebe ich dann nc und sende es an einen APRS-IS Server. In meinem fall direkt ins HAMNET mit
nc -w 5 44.225.73.2 14580 < /tmp/aprs-telemetrie.txt
So, dass soll es erst mal gewesen sein, schaut mal auf aprsdirekt oder aprs.fi. Anregungen, Verbesserungen und Fragen gern in die Kommentare.