SatelliteTracker
:satellite: A Python program to track the location of the ISS and other satellites
Install / Use
/learn @nfischer/SatelliteTrackerREADME
satelliteTracker
A Python CLI program to track the location of the ISS and other satellites.
Installation
Cloning the project
The recommended installation method is to first clone this git repo, as such:
# make sure to specify '--recursive' in order to install the submodules
$ git clone --recursive https://github.com/nfischer/satelliteTracker.git
SunriseSunsetCalculator
This project uses Jacques-Etienne Beaudet's SunriseSunsetCalculator, based on this algorithm for calculating sunrise and sunset
If you specified the --recursive flag when cloning, you should see a directory
structure like:
satelliteTracker/
LICENSE
README.md
satTracker.py
SunriseSunsetCalculator/
__init__.py
README.md
sunrise_sunset.py
Installing dependencies: Pyephem
Ubuntu/Debian:
$ sudo apt install python3-ephem
Other systems (replace apt with your system's package manager):
$ sudo apt install python3-pip
$ sudo pip install -r requirements.txt
What can it do?
SatelliteTracker can:
- update a satellite's location in real-time
- provide accurate longitude, latitude, elevation, and other location parameters
- display information about your ground station, as well as the next time your satellite passes overhead
- automatically update TLEs for various satellites
How does it work?
This project is made using the pyephem module to do the cool computations for longitude, latitude, etc. in real-time for your satellite of choice.
This program has two basic threads:
- The background thread that updates the values for the satellite's location.
- The foreground thread that prompts you for commands and then executes them.
The advantage of this concurrent design is that the program will always know where the satellite is, so this leaves room for future development on automatic alerts in real-time for when the satellite is passing overhead or for other events.
A note about parallelism in Python
Python doesn't have great support for parallelism, which is unfortunate. Due to Global Interpreter Lock, a lot of Python code runs concurrently, even if you use the appropriate multithreading modules.
This project does still work though. The background thread runs concurrently with the foreground thread, and they context switch often enough that everything works. So this means the project will still run smoothly, even if you have a singe-core machine (such as a Raspberry Pi).
