Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/idatum/adsb2mqtt
Process ADS-B messages from dump1090 and build up full flight details from multiple messages; track flights within threshold in nautical miles; publish tracked flights to MQTT.
https://github.com/idatum/adsb2mqtt
ads-b adsb dotnet dump1090 dump1090-fa mqtt netbsd tts
Last synced: 3 months ago
JSON representation
Process ADS-B messages from dump1090 and build up full flight details from multiple messages; track flights within threshold in nautical miles; publish tracked flights to MQTT.
- Host: GitHub
- URL: https://github.com/idatum/adsb2mqtt
- Owner: idatum
- License: mit
- Created: 2023-10-17T23:15:55.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-23T15:45:49.000Z (7 months ago)
- Last Synced: 2024-06-23T16:49:19.236Z (7 months ago)
- Topics: ads-b, adsb, dotnet, dump1090, dump1090-fa, mqtt, netbsd, tts
- Language: C#
- Homepage:
- Size: 60.5 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# adsb2mqtt
* Receive ADS-B messages from dump1090 TCP BaseStation output (default port 30003).
* Build up full flight details from multiple messages.
* Track and publish to MQTT within threshold in nautical miles.## Usage
**adsb2mqtt** has multiple settings you can set either direclty in appsettings.json or override with environment variables. I run it on a Docker container and use environment variables. See below for applications.
Setting | Default | Description
--- | --- | ---
BEAST_HOST | localhost | dump1090 host
BEAST_PORT | 30003 | dump1090 TCP BaseStation output port
MQTT_SERVER | localhost | MQTT host
MQTT_USE_TLS | false | Connect to MQTT using TLS (mqtts)
MQTT_PORT | 1883 | MQTT port.
MQTT_USERNAME | | MQTT user name
MQTT_PASSWORD | | MQTT password
TOPIC_BASE | ADSB/flight | MQTT topic containing JSON payload
LATITUDE | 47.9073 | Set to your latitude
LONGITUDE | -122.2821 | Set to your longitude
RADIUS_NM | 3.1 | Nautical mile radial distance threshold to publish flight
AIRCRAFT_DB_PATH | /usr/share/dump1090-fa/html/db | [dump1090-fa flight database](https://github.com/flightaware/dump1090/tree/master/public_html/db)I've tested both local MQTT and remote MQTTS Mosquitto hosts. The included Dockerfile is for an AMD64 server but I've run this standalone on an RPi3. [Link](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script) to the .NET install script instructions, including for a Raspbery Pi running Linux.
My main application of **adsb2mqtt** is a seperate MQTT Python client that uses text-to-speech (TTS) to periodically translate the ADSB/flight payload to a wave file using [Microsoft Cognitive Services](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/text-to-speech). Many other TTS options exist. Then publish another MQTT topic with the payload containing the wave filename.
Another option is to generate the wave to a media directory accessible to [HA](https://github.com/home-assistant) and write an Automation to play the wave. I haven't played with HA's recent improvements for TTS though -- might be able to skip creating the wave file.
One other option is a simple mosquitto_sub client on NetBSD to play the wave file. Something roughly like this:
```
#!/bin/shsubscribe_speech () {
mosquitto_sub -v -t "ADSB/speech/wave" -u username -P password -h localhost -p 1883 | while read msg
do
wave=$(echo $msg | awk '{print $2}')
curl --silent --output - -X POST -H "Content-Type: text/plain" --data "${wave}" "http://host_serving_tts_wave" | audioplay -d /dev/audio1
done
}while true
do
subscribe_speech
sleep 5
done
```
Ultimately, It's a simple pleasure to sit on your patio and hear the departure, airline, altitude (or whatever else you want), of planes you can spot flying over.I keep RADIUS_NM pretty short, basically I want to see the aircraft enough to roughly make out its type. You can also use an ICAO database to get the plane type. Where I live there's a route that planes fly within a 3nm radius usually under 5000ft MSL before landing at the nearby airport.
You don't need to set LATITUDE and LONGITUDE to your precise location (unlike with say dump1090-fa). Since I usually view planes on my porch looking North, I increase the LATITUDE a bit since my house blocks my view of planes approaching from the South.
## NetBSD 10_RC on a Pine64 Rock64 running [dump1090-fa](https://github.com/flightaware/dump1090)
I replaced an aging RPi3 running [piaware](https://github.com/flightaware/piaware) with a 4gb Rock64 running dump1090-fa. Here's a repo for getting this to run: [rtl-sdr-bsd](https://github.com/idatum/rtl-sdr-bsd). Here are more details of the overall project: [Experimenting with RTL-SDR on NetBSD 10](https://www.idatum.net/experimenting-with-rtl-sdr-on-netbsd-10.html).## FreeBSD 14 on the Rock64 running [dump1090-fa](https://github.com/flightaware/dump1090)
I've since switched from NetBSD 10 to running FreeBSD 14 on the Rock64 device and this resulted in a more stable host for dump1090. It's mainly about better support for RTL-SDR generally with USB on FreeBSD. Regardless of your O/S choice, adsb2mqtt should be able to connect to dump1090 and generate MQTT messages.