4.0 KiB
plane-notify
Notify If a Selected Plane has taken off or landed using Python with OpenSky or ADS-B Exchange Data, outputs location of takeoff location of landing and takeoff by reverse lookup of coordinates.
Discord Output Example
More examples in the ExImages folder
Why I made it
Made it so I could track Elon Musk's Jet and share with others of his whereabouts on Twitter.
How It works
-
Takes data about every 15 seconds from OpenSky Network or ADS-B Exchange and compares it to previous data with what I've defined as a landing or takeoff event.
-
A takeoff event is the plane is not on the ground, below 10k feet and ((previously no data and now getting data) or was previously on the ground).
-
A landing event is previously below 10k feet and (previously getting data, no longer getting data and previously not on the ground) or (now on the ground and previously not on the ground).
-
Given the coordinates of the aircraft the coordinates are reverse looked up for a location name. (GeoPY Nomination Geolocator)
-
At the time of takeoff a takeoff time is set, which is referenced in the landing event to calculate approximate total flight time.
-
A Static map image is created based off location name. (Google Static Maps API) or a screenshot of https://global.adsbexchange.com/ is created using Selenium/ChromeDriver The selected plane is locked on in the screenshot.
-
If the landing event and takeoff events are true, It will output to any of the following built-in output methods. (Twitter, Pushbullet, and Discord all of which can be setup and enabled in config.ini). Outputs the location name, map image and takeoff time if landing. (Tweepy and "Pushbullet.py" and Discord_webhooks)
Required PIP packages
-
OpenSky API https://github.com/openskynetwork/opensky-api (If using OpenSky, which is default and anybody can use)
-
colorama https://github.com/tartley/colorama
Install OpenSky API
apt install git
git clone https://github.com/openskynetwork/opensky-api.git
pip install -e ~/opensky-api/python
Install Colorama and geopy
pip install colorama
pip install geopy
Install Pushbullet, Tweepy, and Discord optional output methods already implemented in code
pip install tweepy
pip install pushbullet.py
pip install discord_webhooks
Configure these methods of output in config.ini
Install Screen to run in the background
apt install screen
Make sure Python is installed
apt install python3
Download / Clone
git clone https://github.com/Jxck-S/plane-notify.git
cd plane-notify
Configure config file with keys and URLs (config.ini)
- edit them with nano or vi on the running machine or on your pc and transfer the config to where you will be running the bot
Enter and create new Screen Session
screen -R <name screen whatever you want>
Start Program
python3 NotifyBot.py
TODO
Move the lookup location of coordinates so that it only rungs when landing or takeoff occurs. So then Geopy/Nomination API is called less
Implement airport name, done by closest airport