An advanced autonomous satellite tracking system designed specifically for the Celestron Origin Intelligent Home Observatory. Track and image satellites automatically using the telescope's built-in AI capabilities and WebSocket API.
- π Autonomous Satellite Tracking - Automatically tracks satellites across the sky
- πΈ Intelligent Imaging - Captures high-quality images during satellite passes
- π Smart Scheduling - Optimized for single-night observation windows
- π Full API Integration - Complete integration with Celestron Origin WebSocket API
- π Real-time Dashboard - Web-based monitoring and control interface
- π Multi-Satellite Support - Track ISS, Starlink, and any NORAD-cataloged satellite
- β‘ Performance Optimized - Dynamic scheduling reduces API calls by 50%
- π Auto-Recovery - Robust error handling with automatic reconnection
- Precise Alt/Az positioning with sub-degree accuracy
- Pre-positioning 45 seconds before pass start
- 1Hz position updates during tracking
- Automatic sidereal tracking disable for satellites
- Configurable exposure times (0.1-30 seconds)
- ISO range 100-6400
- Binning support (1x1 to 4x4)
- 8/16/24-bit depth options
- AI-powered real-time image stacking
- Organized observation storage by satellite and timestamp
- Automatic image download from telescope
- JSON-based schedule persistence
- Comprehensive logging with Rich formatting
- Celestron Origin Intelligent Home Observatory (6" RASA telescope)
- Network connection to telescope (WiFi or Ethernet)
- Computer running Python 3.8+
- Python 3.8 or higher
- N2YO API key (free from n2yo.com)
git clone https://github.com/ctrevinoi1/celestial-tracker.git
cd celestial-trackerpip install -r requirements.txt# Copy sample configuration
cp config.ini.sample config.ini
# Edit with your settings
nano config.iniUpdate these key settings:
latitude,longitude,altitude_m- Your observation locationapi_key- Your N2YO API keyorigin_ip- Your telescope's IP address or hostname
# Copy sample NORAD IDs
cp norad_ids.txt.sample norad_ids.txt
# Or create your own list
echo "25544,20580" > norad_ids.txt # ISS and Hubblepython main_tracker.pycelestial-tracker/
βββ main_tracker.py # Main application entry point
βββ celestron_ws_client.py # WebSocket client for telescope control
βββ n2yo_api.py # Satellite pass prediction API
βββ sky_utils.py # Astronomical calculations
βββ dashboard_server.py # Web dashboard (optional)
βββ config.ini.sample # Configuration template
βββ requirements.txt # Python dependencies
βββ observations/ # Captured images directory
βββ docs/ # Documentation
β βββ SYSTEM_DOCUMENTATION.md
β βββ QUICK_REFERENCE.md
β βββ API_ALIGNMENT.md
βββ templates/ # Web dashboard templates
[OBSERVER]
latitude = 34.0522 # Decimal degrees
longitude = -118.2437 # Decimal degrees
altitude_m = 71 # Meters above sea level
[N2YO]
api_key = YOUR_KEY_HERE # From n2yo.com/api
[CELESTRON]
origin_ip = origin.local # Or IP like 192.168.1.100
[CAMERA]
exposure_seconds = 0.5 # Short for fast satellites
iso = 800 # Moderate sensitivity
binning = 2 # 2x2 for better sensitivityLaunch the monitoring dashboard:
python dashboard_server.pyAccess at http://localhost:5000 to view:
- Real-time tracking status
- Upcoming satellite passes
- System health metrics
- Live connection status
- Captured images gallery
Track any satellite with a NORAD catalog number:
| Satellite | NORAD ID | Brightness | Speed |
|---|---|---|---|
| ISS | 25544 | Very Bright | Medium |
| Hubble | 20580 | Moderate | Slow |
| Starlink | Various | Bright | Fast |
| Tiangong | 48274 | Bright | Medium |
Find more at celestrak.com
- Schedule Generation: < 30 seconds for 10 satellites
- API Efficiency: ~200 calls/hour (limit: 950)
- Tracking Accuracy: < 0.5Β° pointing error
- Image Capture Rate: Up to 12 per minute
- Position Updates: 1 Hz during tracking
- Uses Skyfield for precise astronomical calculations
- Converts topocentric Alt/Az to radians for mount control
- J2000 epoch for RA/Dec coordinates
- WGS84 for observer location
- WebSocket connection on port 80
- JSON-RPC style messaging
- Automatic reconnection with exponential backoff
- Comprehensive error handling
- Onboard AI stacking and enhancement
- FITS format support
- Automatic dark frame subtraction
- Real-time image optimization
Comprehensive documentation is available:
- System Documentation - Full technical details
- Quick Reference - Common operations
- API Alignment - API compliance details
- Improvements Roadmap - Future enhancements
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Connection Failed
- Verify telescope is on same network
- Check firewall settings
- Try IP address instead of hostname
No Satellites Scheduled
- Verify location settings are correct
- Check N2YO API key is valid
- Ensure observation time window is appropriate
Tracking Errors
- Confirm mount is aligned (StarSense)
- Check coordinates are in correct format
- Verify telescope has clear view of sky
See Quick Reference for more solutions.
This project is licensed under the MIT License - see the LICENSE file for details.
- Celestron for the Origin telescope and API
- N2YO.com for satellite tracking data
- Skyfield for astronomical calculations
- Rich for beautiful terminal output
- π Documentation
- π Issue Tracker
- π¬ Discussions
This is an independent project and is not affiliated with, endorsed by, or sponsored by Celestron, LLC. Celestron Origin is a trademark of Celestron, LLC.
Made with β€οΈ for the astronomy community
π Star this repository if you find it useful! π