Observatory Configuration#
Astra requires a configuration file in YAML format for each observatory you want to operate. This file defines all devices, their settings, and how they interact with each other.
Before setting up your observatory, you’ll need to configure two main components:
Observatory Configuration - Defines your hardware devices and their settings
FITS Header Configuration - Maps device properties to FITS header keywords
Let’s start with the observatory configuration.
Telescope:
- device_name: telescope_observatoryname
ip: localhost:11111
device_number: 0
pointing_threshold: 0.1 # arcmins
settle_factor: 0.0 # exposure multiplier for calculated settle time after pointing (for SPIRIT like cameras)
guider: # populated using calibrate_guiding sequence
PIX2TIME: # ms/pixel for camera used for guiding
+x: 71.62908053771561
-x: 71.62926906533114
+y: 71.62775367838461
-y: 71.62771750106279
RA_AXIS: "x"
DIRECTIONS:
+x: East
-x: West
+y: North
-y: South
PID_COEFFS: # defaults
"x": {"p": 0.70, "i": 0.02, "d": 0.0}
"y": {"p": 0.50, "i": 0.02, "d": 0.0}
"set_x": 0.0
"set_y": 0.0
MIN_GUIDE_INTERVAL: 60 # seconds
Focuser:
- device_name: focuser_observatoryname
ip: localhost:11111
device_number: 0
focus_position: 10000
settle_time: 3 # seconds
connectable: true
Camera:
- device_name: camera_observatoryname
ip: localhost:11111
device_number: 0
temperature: -20
temperature_tolerance: 1
cooling_timeout: 30 # minutes
flats:
target_adu: 31500
target_adu_tolerance: 10500
bias_offset: 300
lower_exptime_limit: 1
upper_exptime_limit: 60
paired_devices:
Telescope: telescope_observatoryname
Focuser: focuser_observatoryname
Dome: dome_observatoryname
FilterWheel: fw_observatoryname
ObservingConditions: weather_observatoryname
SafetyMonitor: safety_observatoryname
Camera: camera_observatoryname
autofocus:
airmass_threshold: 1.01
exptime: 3.0
g_mag_range:
- 0
- 10
Dome:
- device_name: dome_observatoryname
ip: localhost:11111
device_number: 0
close_dome_on_telescope_error: false
telescopes:
- telescope_observatoryname
FilterWheel:
- device_name: fw_observatoryname
ip: localhost:11111
device_number: 0
ObservingConditions:
- device_name: weather_observatoryname
ip: localhost:11111
device_number: 0
polling_interval: 5
closing_limits:
Humidity:
- upper: 70
max_safe_duration: 30
- upper: 80
max_safe_duration: 150
- upper: 90
max_safe_duration: 300
Temperature:
- lower: 0
max_safe_duration: 30
WindSpeed:
- upper: 10
max_safe_duration: 30
SkyTemperature:
- upper: -30
max_safe_duration: 30
SkyBrightness:
- upper: 1000
max_safe_duration: 30
RelativeSkyTemp:
- upper: -40
max_safe_duration: 30
SafetyMonitor:
- device_name: safety_observatoryname
ip: localhost:11111
device_number: 0
max_safe_duration: 15
Misc:
# Webcam: http://localhost:8888/inside # hls stream, see https://github.com/bluenviron/mediamtx
backup_time: "12:00" # UTC back up time of polled data (e.g. CCDTemperature) and logs
This example configuration shows all supported device types and their parameters. You can customize this template for your specific observatory setup.
Device Types and Configuration#
Astra supports the following device types, all conforming to the ASCOM Alpaca standard:
Telescope
Focuser
Camera
Dome
FilterWheel
ObservingConditions
SafetyMonitor
CoverCalibrator
Rotator
Switch
Each device type has specific configuration parameters detailed below.
Common Device Parameters#
All devices share these required parameters:
device_name: Unique identifier for the device (string)ip: Network address of the Alpaca device (string, format: “hostname:port”)device_number: ASCOM Alpaca device number (integer)polling_interval: How often to poll ASCOM properties (set by FITS header configuration), in seconds (integer, optional, default: 5)connectable: Whether to attempt connection at startup (boolean, optional, default: true)
Telescope Configuration#
Additional parameters for telescope mounts:
pointing_threshold: Maximum acceptable pointing error in arcminutes if pointing correction enabled (float)settle_factor: Exposure multiplier for calculated settle time after pointing (float)guider: Autoguider calibration settings (dict, populated automatically by the calibrate_guiding sequence)
Focuser Configuration#
Focuser-specific parameters:
focus_position: Best known absolute focus position (integer)settle_time: Time in seconds to wait after move (integer)
Camera Configuration#
Camera-specific parameters for cooling and imaging:
Cooling Parameters:
temperature: Target cooling temperature in Celsius (float)temperature_tolerance: Acceptable temperature tolerance from target in Celsius (float)cooling_timeout: Time in minutes to wait to reach target temperature before timing out (int, default: 30)
Sky Flat Parameters:
flats: Configuration for automated flat field acquisition (dict)target_adu: Target median ADU value for sky flat frame (int)target_adu_tolerance: Acceptable tolerance around target ADU (int)bias_offset: Median bias level offset in ADU for exposure time calculations (int)lower_exptime_limit: Minimum allowed exposure time in seconds (int)upper_exptime_limit: Maximum allowed exposure time in seconds (int)
Device Associations:
paired_devices: Links to other devices for FITS headers and sequence coordination (dict)<device_type>: Must match thedevice_nameused in device configuration (string)
Autofocus Parameters:
autofocus: Configuration for automated focusing (dict)airmass_threshold: Maximum airmass to query local star catalogue (float)exptime: Exposure time for autofocus frames in seconds (float)g_mag_range: Range of G magnitudes for star selection [min, max] (list of float)
Dome Configuration#
Dome-specific parameters:
close_dome_on_telescope_error: Flag to close the dome in case of a telescope error. (boolean, default: false)telescopes: List of associated telescope(s) within the dome (list)
ObservingConditions Configuration#
Weather monitoring and safety parameters:
closing_limits: Weather safety thresholds that trigger observatory closure (dict)<parameter>: Weather parameter name (e.g.,Humidity,WindSpeed,Temperature)<parameter>[i].upper/lower: Threshold value -upperfor maximum safe value,lowerfor minimum (float)<parameter>[i].max_safe_duration: Time in minutes the parameter must stay within safe limits beforeweather_safeis set toTrue(int)
Supported Parameters:
Standard ASCOM:
CloudCover,DewPoint,Humidity,Pressure,RainRate,SkyBrightness,SkyQuality,SkyTemperature,StarFWHM,Temperature,WindDirection,WindGust,WindSpeedCustom:
RelativeSkyTemp(sky temperature minus ambient temperature, requires bothSkyTemperatureandTemperature)
SafetyMonitor Configuration#
Safety system monitoring parameters:
max_safe_duration: Time in minutes theIsSafeproperty must remainTruecontinuously before the observatory is consideredweather_safe(int)
Misc Options#
Optional observatory-wide settings:
webcam: URL for webcam feed (string, currently supports HLS stream format)backup_time: UTC time of day to perform automatic backups of polled data and logs (string, format: “HH:MM”)