-
Notifications
You must be signed in to change notification settings - Fork 0
/
query-adsb.sh
executable file
·74 lines (61 loc) · 1.66 KB
/
query-adsb.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash
# Pull ADS-B data from adsbexchange.com's API
# https://rapidapi.com/adsbx/api/adsbexchange-com1/
set -euo pipefail
readonly lat=51.0
readonly lon=10.3
readonly radius=360 # nautical miles, see https://jsfiddle.net/1jsaw50m/ for coverage
readonly SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
if [ -f "$HOME/hems-lookout.conf" ]; then
source "$HOME/hems-lookout.conf"
fi
d=$(date +%F)
t=$(date +%H-%M)
readonly ADSB="$SCRIPTDIR/data/adsb"
readonly HEMS="$SCRIPTDIR/data/hems"
# Pull json data and store in folders by date
[ -d "$ADSB/$d" ] || mkdir -p "$ADSB/$d"
[ -d "$HEMS/$d" ] || mkdir -p "$HEMS/$d"
curl -sS https://adsbexchange-com1.p.rapidapi.com/v2/lat/$lat/lon/$lon/dist/$radius/ \
--header "X-RapidAPI-Host: adsbexchange-com1.p.rapidapi.com" \
--header "X-RapidAPI-Key: $RAPIDAPI_KEY_ADSBEXCHANGE" \
> "$ADSB/${d}/${d}_${t}.json"
# Filter HEMS by squawk 0020/0034 and regex.
# For compatibility, prepend format description
regex="^(AIRESC|C|CH(R|XE?)|DOC|DRAGO|KR|LAS|LIFELN|MEDIC|NHX|RESQ|RGA|RK|SA(MU|REX))[0-9]+[A-Z]* *"
jq '{
"time": '$(date +%s)',
"desc": [
"icao24",
"callsign",
"reg",
"squawk",
"lat",
"lon",
"alt(baro)[ft]",
"vrate(baro)[ft/min]",
"track[deg]",
"groundspeed[kts]"
],
"states": [
.ac[] |
select((.squawk == ("0020", "0034")) or
(.flight // "" | match("'"$regex"'"))) |
[
.hex,
.flight,
.r,
.squawk,
.lat,
.lon,
.alt_baro,
.baro_rate,
.track,
.gs
]
] | unique
}' "$ADSB/${d}/${d}_${t}.json" \
> "$HEMS/${d}/${d}_${t}.json"
"$SCRIPTDIR/.venv/bin/python" "$SCRIPTDIR/notify.py" "$HEMS/${d}/${d}_${t}.json"
# Compress original JSON
xz -z9 "$ADSB/${d}/${d}_${t}.json"