I wrote a little python program to send my iGate telemetry through APRS. The metrics include the temperature of the Raspberry-Pi, the load average, the amount of free memory, and network traffic.
Sending the iGate metrics through APRS allows me to use the graph tools offered by aprs.fi or the excellent aprsdirect.com, to access the health of my iGate from anywhere in the world.
The program written in python is called igate_telem and can be found on my github. I am run this program on a Raspberry Pi running Ubuntu Mate, but it should work without any or minimal changes on any other Linux distribution.
I am going to describe how to integrate igate_telem with an already working DireWolf installation. DireWolf is a software TNC1 with a lot of features and options and describing how to configure it would be the subject of a completely different article.
Since you are already running DireWolf on your machine, I assume you
already have installed all the tools that will be needed to install
and run this program. However, make sure the python module
setuptools is installed. On Debian based systems such as Ubuntu,
just run the command
sudo apt install python-setuptools in a
terminal to make sure it is installed.
Then go to your favorite working directory and clone the igate_telem repository and run the install with the following command.
$ git clone https://github.com/0x9900/igate_telem $ cd igate_telem
Edit the file
igate/telem.py to add your callsign. Then install the
program using the following command.
$ sudo python setup.py install
The installation process displays a bunch of lines on your
terminal. At the prompt, you can then invoke the program with the
--help to make sure it has been correctly installed.
$ /usr/local/bin/igate_telem --help usage: telem.py [-h] [-c CALLSIGN] (-d | -e | -p | -u) APRS RaspberryPi temperature optional arguments: -h, --help show this help message and exit -c CALLSIGN, --callsign CALLSIGN iGate full callsign [default: W6BSD-5 -d, --data Send the APRS data -e, --eqns Send the APRS equation -p, --param Send the APRS param -u, --unit Send the APRS units
In APRS there are two kinds of telemetry messages: telemetry data and metadata.
--data in igate_telem gather and format the data before
sending it through APRS. The options
--param, --unit, --eqns will
send the different metadata used to format the data.
$ /usr/local/bin/igate_telem --eqns :W6BSD-5 :EQNS.0,0.001,0,0,0.001,0,0,1,0,0,1,0,0,1,0
In your DireWolf configuration, insert the following line.
CBEACON delay=0:45 every=60:00 SENDTO=IG info="https://github.com/0x9900/igate_telem" CBEACON delay=0:10 every=5:00 SENDTO=IG infocmd="/usr/local/bin/igate_telem --param" CBEACON delay=0:12 every=5:00 SENDTO=IG infocmd="/usr/local/bin/igate_telem --unit" CBEACON delay=0:14 every=5:00 SENDTO=IG infocmd="/usr/local/bin/igate_telem --eqns" CBEACON delay=0:15 every=5:00 SENDTO=IG infocmd="/usr/local/bin/igate_telem --data"
The first line sends a message every hour, indicating where the source of the telemetry can be downloaded from GitHub.
The next lines send the telemetry metadata:
--param will list the name of the different variables sent.
--unit will send a string indicating the units for each
variables, such as Degrees, Megabyte, etc.
--eqns are the equation coefficients for scaling values.
The last line sends the actual data.
In each line, the field
delay means DireWolf will wait for
before executing the line when the DireWolf is starting. On the first
line, for example, the info will be sent 45 seconds after startup.
every will tell DireWolf to send the information every
SENDTO tells DireWolf how to send the information. For
this example, the data is sent using the internet. If you don't
specify this field, the default transmission mode is used. The default
transmission mode is through the air-waves.
You can find an example of how telemetry works by looking for the
W6BSD-5 on aprs.fi or on aprsdirect.com
For more info on APRS telemetry, you can read the excellent documentation by Kenneth Finnegan.
See also APRS iGate for Parachute Mobile
A Terminal Node Controller (TNC) is a device used by amateur radio operators to participate in AX.25 packet radio networks. ↩