Easily track SAT GUS, the Space Selfie satellite by Mark Rober and CrunchLabs, directly from your TRMNL device with this plugin.
This project provides a TRMNL plugin for satellite tracking, distance and speed calculations for SAT GUS. Whether you're a space enthusiast or a CrunchLabs fan, you can follow SAT GUS as it orbits Earth from your location—all from your TRMNL device.
"Space Selfie", "SAT GUS", "Mark Rober", and any images of squirrels riding rocket ships are property of CrunchLabs LLC.
If you find this project enjoyable, or any of my other open source projects useful, please consider supporting me a bit. Your contributions help maintain this and other open source projects.
- SATGUS Tracking: Track SATGUS position using TLE (Two-Line Element) data
- Distance Calculations: Calculate distance from ground to satellite
- Speed Calculations: Calculate speed of the satellite
- Location Identification: Determine the country, continent, or body of water SATGUS is currently passing over, using geospatial data
This project uses Dev Containers for development. To get started, open the project in Dev Container supporting IDE and start coding.
trmnl_satgus/
├── .devcontainer/ # Dev container configuration
│ ├── docker-compose.yml
│ ├── devcontainer.json
│ ├── devenv.dockerfile
│ └── postCreate.sh
├── .github/
│ └── workflows/ # GitHub Actions workflows
│ ├── fetch-tle.yml # Automated TLE data fetching
│ └── fetch-position.yml # Automated position data fetching
├── docs/ # Documentation
│ └── images/ # Screenshots and images
│ ├── plugin-5bcb4c-canada.png
│ └── plugin-5bcb4c-indianocean.png
├── trmnl_data/ # Data files
│ ├── satgus_tle.json # TLE data - auto updated by GitHub Actions
│ ├── satgus_position.json # Satellite position data - auto updated by GitHub Actions
│ ├── ne_110m_ocean.geojson
│ ├── ne_110m_land.geojson
│ ├── ne_110m_geography_marine_polys.geojson
│ └── ne_110m_admin_0_countries.geojson
├── trmnl_plugin/ # Plugin files
│ ├── assets/ # Plugin assets
│ │ ├── gusrocket.webp # Rocket image
│ │ └── gusrocket_black_512x512.png
│ └── src/ # Plugin source
│ ├── full.liquid # Plugin template
│ └── settings.yml # Plugin settings
├── trmnl_satgus/ # Main package
│ ├── satgus/
│ │ ├── __init__.py
│ │ ├── calculate_position.py # Satellite position calculation
│ │ ├── fetch_tle.py # TLE data fetching
│ │ └── location_utils.py # Location utilities
│ ├── tests/ # Test files
│ │ ├── __init__.py
│ │ └── test_satellite.py # Tests for position calculation
│ ├── poetry.lock # Poetry lock file
│ ├── pyproject.toml # Poetry configuration
│ └── pre-commit.sh # Pre-commit script
├── pre-commit-config.yaml # Pre-commit hooks
└── README.md
Once inside the dev container, you can:
Use the following Poetry commands from within the trmnl_satgus submodule:
poetry install- Install dependenciespoetry run python trmnl_satgus/fetch_tle.py- Fetch the latest TLE data for SATGUSpoetry run python trmnl_satgus/calculate_position.py- Run the satellite position calculatorpoetry run pytest- Run testspoetry run black .- Format code with Blackpoetry run flake8 .- Lint code with Flake8poetry run isort .- Sort imports with isortpoetry run mypy .- Type check code with mypypoetry run bandit -r .- Run security linter with Bandit
Use the following TRMNLP commands from within the trmnl_plugin submodule:
trmnlp serve- Run the local TRMNL preview.
The project uses:
- skyfield: Astronomical calculations and satellite tracking
- numpy: Numerical computations
- requests: HTTP requests for data fetching
- reverse-geocoder: Reverse geocoding for locations
- geopandas: Geospatial data processing
- shapely: Geometry operations
- pyproj: Coordinate transformations
- pytest: Testing
- black: Code formatting
- flake8: Linting
- isort: Import sorting
- mypy: Type checking
- bandit: Security linting
This project was developed with the assistance of artificial intelligence tools to help with code generation, documentation, and automation. All code and documentation have been reviewed and tested by human contributors.