Airspy ADS-B decoder

Set up is here
https://xavierberger.github.io/RPi-Monitor-docs/11_installation.html

After that is setup, you can install and configure the avionics template.
(Sample one in German)

I believe I got my base template from
https://www.jeremybrown.co.nz/monitorADSB.php

but that site doesn’t seem to work anymore.
There used to be a tutorial in some forum post on some flight tracking site, but can’t find it now. :wink:

Template goes here
/etc/rpimonitor/template/avionics.conf

rpimonitor has an interactive mode, which helps make it easy to test commands and regexes to get the values you want to monitor. See
https://xavierberger.github.io/RPi-Monitor-docs/23_configuration_helper.html

If you want to crib off my template, feel free, its very hacky, due to many of these feeder bits all behaving differently, like for getting the version.
You’ll have to change local IPs to those of your pi(s), and likely mess with other things like URLs to your feeders on the various sites, update feedIDs, etc.

 $ cat /etc/rpimonitor/template/avionics.conf
########################################################################
# Extract information about Opened Port
#  Page: 1
#  Information               Status
#  - dump1090-fa port (8080)           - yes      - no
#  - Flightradar24 Feeder/Decoder port (8754)  - yes      - no
#  - FlightAware port (30104)          - yes      - no
#  - PlaneFinder port (30053)        - yes      - no
#  - Virtual Radar Server port (8081) - yes - no
#  - ModeSMixer2 port (8787) - yes - no
#  - lighttpd port (80) - yes - no
#  - collectd status - active - inactive|failed|activating|deactivating
#  - dump978-fa port (30978) -yes -no
#  - RadarBox status - active - inactive|failed|activating|deactivating
########################################################################
dynamic.1.name=dump1090
dynamic.1.source=netstat -nlt
dynamic.1.regexp=tcp .*:(8080).*LISTEN

dynamic.2.name=fr24
dynamic.2.source=netstat -nlt
dynamic.2.regexp=tcp .*:(8754).*LISTEN

dynamic.3.name=piware
dynamic.3.source=netstat -nlt
dynamic.3.regexp=tcp .*:(30104).*LISTEN

dynamic.4.name=finder
dynamic.4.source=netstat -nlt
dynamic.4.regexp=tcp .*:(30053).*LISTEN

dynamic.5.name=vrs
dynamic.5.source=netstat -nlt
dynamic.5.regexp=tcp .*:(8081).*LISTEN

dynamic.6.name=modesmixer2
dynamic.6.source=netstat -nlt
dynamic.6.regexp=tcp .*:(8787).*LISTEN

dynamic.7.name=lighttpd
dynamic.7.source=netstat -nlt
dynamic.7.regexp=tcp .*:(80).*LISTEN

dynamic.8.name=collectd
dynamic.8.source=service collectd status
dynamic.8.regexp=Active: (.*) \(

dynamic.9.name=dump978
dynamic.9.source=netstat -nlt
dynamic.9.regexp=tcp .*:(30978).*LISTEN

dynamic.10.name=rbfeeder
dynamic.10.source=service rbfeeder status
dynamic.10.regexp=Active: (.*) \(

dynamic.11.name=adsbexchange
dynamic.11.source=ps awwux | grep socat | grep -v grep | grep feed
dynamic.11.regexp=feed.adsbexchange.com:(.*)

dynamic.12.name=opensky
dynamic.12.source=service opensky-feeder status
dynamic.12.regexp=Active: (.*) \(

static.1.name=dump1090ver
static.1.source=dump1090-fa --help
static.1.regexp=dump1090-fa (.*\b)

static.2.name=fr24ver
static.2.source=fr24feed --help
static.2.regexp=Version: (.*)/

static.3.name=piwarever
static.3.source=piaware -v
static.3.regexp=(^.*)

static.4.name=finderver
static.4.source=pfclient -v
static.4.regexp=version:(.*)

static.5.name=modesmixer2ver
static.5.source=/home/pi/mm2/modesmixer2 --help
static.5.regexp=ModeSMixer2 v\.(.*)

static.6.name=lighttpdver
static.6.source=lighttpd -v
static.6.regexp=lighttpd/(.*) \(

static.7.name=collectdver
static.7.source=collectd -h
static.7.regexp=collectd(.*)\.git\,

static.8.name=dump978ver
static.8.source=dump978-fa --version 2>&1 | grep dump | awk '{print $2}'
static.8.regexp=(.*)

static.9.name=rbfeederver
static.9.source=/usr/bin/rbfeeder --help 2>&1 | grep "Version " | awk '{print $4}'
static.9.regexp=(.*)

static.10.name=openskyver
static.10.source=journalctl -u opensky-feeder --no-pager
static.10.regexp=Version (.*)

web.status.1.content.1.name=Avionics
web.status.1.content.1.icon=daemons.png
web.status.1.content.1.line.1="<table class='table'><thead><tr><th>Application</th><th>Status</th><th>Version</th><th>Web interface</th></tr></thead><tbody>"
web.status.1.content.1.line.2="<tr>"
web.status.1.content.1.line.3="<td><a href='https://github.com/flightaware/dump1090' target=_blank>dump1090-fa</a></td><td>" + Label(data.dump1090,"==8080","active","success") + Label(data.dump1090,"!=8080","inactive","danger") + "</td><td>" + data.dump1090ver + "</td><td><a href='http://127.0.0.1:8080/' target=_blank>DUMP1090</a></td>"
web.status.1.content.1.line.4="</tr>"
web.status.1.content.1.line.5="<tr>"
web.status.1.content.1.line.6="<td><a href='http://feed.flightradar24.com/#raspberry-pi' target=_blank>fr24feed</a></td><td>" + Label(data.fr24,"==8754","active","success") + Label(data.fr24,"!=8754","inactive","danger") + "</td><td>" + data.fr24ver + "</td><td><a href='http://127.0.0.1:8754' target=_blank>FR24 Feeder Status</a><br /><a href='https://www.flightradar24.com/premium/' target=_blank>Flightradar24.com Premium</a></td>"
web.status.1.content.1.line.7="</tr>"
web.status.1.content.1.line.8="<tr>"
web.status.1.content.1.line.9="<td><a href='http://ja.flightaware.com/adsb/piaware/' target=_blank>piaware</a></td><td>" + Label(data.piware,"==30104","active","success") + Label(data.piware,"!=30104","inactive","danger") + "</td><td>" + data.piwarever + "</td><td><a href='https://flightaware.com/adsb/stats/user/you' target=_blank>FlightAware</a></td>"
web.status.1.content.1.line.10="</tr>"
web.status.1.content.1.line.11="<tr>"
web.status.1.content.1.line.12="<td><a href='https://planefinder.net/sharing/client' target=_blank>pfclient</a></td><td>" + Label(data.finder,"==30053","active","success") + Label(data.finder,"!=30053","inactive","danger") + "</td><td>" + data.finderver + "</td><td><a href='http://127.0.0.1:30053' target=_blank>Plane Finder Client</a></td>"
web.status.1.content.1.line.13="</tr>"
web.status.1.content.1.line.14="<tr>"
web.status.1.content.1.line.15="<td><a href='http://www.virtualradarserver.co.uk/Download.aspx' target=_blank>VirtualRadar</a></td><td>" + Label(data.vrs,"==8082","active","success") + Label(data.vrs,"!=8082","inactive","danger") + "</td><td>2.4<br />31-JUL-2016</td><td><a href='http://127.0.0.1:8082/VirtualRadar/WebAdmin/Index.html' target=_blank>VRS Web Admin</a><br /><a href='http://127.0.0.1:8082/VirtualRadar' target=_blank>Virtual Radar Server</a><br /><a href='http://www.adsbexchange.com/' target=_blank>ADS-B Exchange</a></td>"
web.status.1.content.1.line.16="</tr>"
web.status.1.content.1.line.17="<tr>"
web.status.1.content.1.line.18="<td><a href='http://xdeco.org/?page_id=30#mm2' target=_blank>modesmixer2</a></td><td>" + Label(data.modesmixer2,"==8787","active","success") + Label(data.modesmixer2,"!=8787","inactive","danger") + "</td><td>" + data.modesmixer2ver + "</td><td><a href='http://127.0.0.1:8787' target=_blank>ModeSMixer2</a><br /></td>"
web.status.1.content.1.line.19="</tr>"
web.status.1.content.1.line.20="<tr>"
web.status.1.content.1.line.21="<td>lighttpd</td><td>" + Label(data.lighttpd,"==80","active","success") + Label(data.lighttpd,"!=80","inactive","danger") + "</td><td>" + data.lighttpdver + "</td><td><a href='http://127.0.0.1:8080/3d/' target=_blank>MyRadar24</a></td>"
web.status.1.content.1.line.22="</tr>"
web.status.1.content.1.line.23="<tr>"
web.status.1.content.1.line.24="<td>collectd</td><td>" + Label(data.collectd,"=='active'","active","success") + Label(data.collectd,"!='active'","inactive","danger") + "</td><td>" + data.collectdver + "</td><td><a href='127.0.0.1/collectd/' target=_blank>dump1090-tools</a></td>"
web.status.1.content.1.line.25="</tr>"
web.status.1.content.1.line.26="<tr>"
web.status.1.content.1.line.27="<td><a href='https://github.com/flightaware/dump978' target=_blank>dump978-fa</a></td><td>" + Label(data.dump978,"==30978","active","success") + Label(data.dump978,"!=30978","inactive","danger") + "</td><td>" + data.dump978ver + "</td><td><a href='http://127.0.0.1/skyaware978' target=_blank>dump978-fa</a></td>"
web.status.1.content.1.line.28="</tr>"
web.status.1.content.1.line.29="<tr>"
web.status.1.content.1.line.30="<td><a href='https://www.radarbox24.com/raspberry-pi/guide' target=_blank>RadarBox</a></td><td>" + Label(data.rbfeeder,"=='active'","active","success") + Label(data.rbfeeder,"!='active'","inactive","danger") + "</td><td>" + data.rbfeederver + "</td><td><a href='https://www.radarbox24.com/stations/EXTRPI00000' target=_blank>RadarBox</a></td>"
web.status.1.content.1.line.31="</tr>"
web.status.1.content.1.line.32="<tr>"
web.status.1.content.1.line.33="<td><a href='https://www.adsbexchange.com/active-feeds/' target=_blank>ADSBExchange</a></td><td>" + Label(data.adsbexchange,"==30005","active","success") + Label(data.adsbexchange,"!=30005","inactive","danger") + "</td><td>N/A</td><td><a href='http://www.adsbexchange.com/coverage-1D/?new' target=_blank>ADSBExchangeFeeder</a></td>"
web.status.1.content.1.line.34="</tr>"
web.status.1.content.1.line.35="<tr>"
web.status.1.content.1.line.36="<td><a href='https://opensky-network.org' target=_blank>OpenSkyNetwork</a></td><td>" + Label(data.opensky,"=='active'","active","success") + Label(data.opensky,"!='active'","inactive","danger") + "</td><td>" + data.openskyver + "</td><td><a href='https://opensky-network.org/receiver-profile?s=00000' target=_blank>OpenSkyFeeder</a></td>"
web.status.1.content.1.line.37="</tr>"
web.status.1.content.1.line.38="</tbody></table>"

then you edit

/etc/rpimonitor/data.conf

and add the avionics.conf template

include=/etc/rpimonitor/template/avionics.conf

Restart rpimonitor and collectd

sudo systemctl stop collectd rpimonitor
sudo systemctl start collectd rpimonitor
2 Likes