A web-based interface for controlling OpenAstroTech (OAT) telescope mounts without requiring a laptop in the field.
OATHeadless provides a modern web interface for OAT telescope mount control, featuring a Flask backend with an Angular frontend. The system connects to telescope mounts via serial communication and integrates with INDI server for PHD2 compatibility.
- Backend: Flask REST API server with mount control via serial communication
- Frontend: Angular web application with Material Design components
- Mount Communication: OAT Meade command protocol implementation
- INDI Integration: Support for INDI server connection and PHD2 compatibility
- Status Monitoring: Real-time position (RA/DEC), tracking rate, and slewing status
- Homing Operations: Individual axis homing (RA/DEC) and full mount homing using Hall sensors
- Date/Time Setting: Sync mount time with device or manual entry
- Location Setting: GPS-based or manual coordinate entry with automatic format conversion
- Firmware Information: Retrieve and display mount firmware version
- Material Design: Modern, responsive Angular interface with Material components
- Message Console: Real-time logging of all operations with timestamps and status indicators
- Settings Management: Tabbed interface for location, time, and device configuration
- One-Click Setup: Automatic location and time configuration from browser
- Serial Communication: Robust mount communication with error handling and logging
- REST API: Complete RESTful interface for all mount operations
- Unit Testing: Comprehensive test coverage for all backend routes
- Error Handling: Detailed error reporting and user feedback
GET /mount/status- Comprehensive mount statusGET /mount/position- Current RA/DEC coordinatesGET /mount/tracking- Current tracking rateGET /mount/firmware- Firmware version
POST /mount/datetime- Set mount date and timePOST /mount/location- Set mount coordinatesPOST /mount/home- Home both axesPOST /mount/home/ra- Home RA axisPOST /mount/home/dec- Home DEC axis
GET /mount/target- Get current target coordinatesPOST /mount/target- Set target coordinates- Messier Catalog - Complete catalog of 110 Messier objects with searchable dialog interface
- Source: celestialprogramming.com/snippets/messier.json
- Search by object name, type, or constellation
- Automatic coordinate conversion from decimal to HMS/DMS format
GET /mount/indi/status- INDI server connection statusPOST /mount/indi/connection- Connect/disconnect INDI
cd server
pip install -r requirements.txt
python app.pycd client
npm install
npm start- Backend runs on
http://localhost:5000 - Frontend runs on
http://localhost:4200 - API endpoints available at
/api/mount/*
cd server
python -m pytest mount/test_*.py -v- Mount route testing with mocked serial communication
- Error condition handling and validation
- INDI integration testing
Uses OAT Meade command protocol:
:GR#- Get RA coordinate:GD#- Get DEC coordinate:SC#- Set date:SL#- Set local time:St#- Set latitude:Sg#- Set longitude:GVN#- Get firmware version:hF#- Home both axes:MHRL#- Home RA axis:MHDU#- Home DEC axis
This project serves as a practical implementation for OAT mount control and a development exercise with modern web technologies.
Open source project for the OpenAstroTech community.