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:

  1. Observatory Configuration - Defines your hardware devices and their settings

  2. FITS Header Configuration - Maps device properties to FITS header keywords

Let’s start with the observatory configuration.

Example Observatory Configuration Template#
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 the device_name used 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 - upper for maximum safe value, lower for minimum (float)

    • <parameter>[i].max_safe_duration: Time in minutes the parameter must stay within safe limits before weather_safe is set to True (int)

Supported Parameters:

  • Standard ASCOM: CloudCover, DewPoint, Humidity, Pressure, RainRate, SkyBrightness, SkyQuality, SkyTemperature, StarFWHM, Temperature, WindDirection, WindGust, WindSpeed

  • Custom: RelativeSkyTemp (sky temperature minus ambient temperature, requires both SkyTemperature and Temperature)

SafetyMonitor Configuration#

Safety system monitoring parameters:

  • max_safe_duration: Time in minutes the IsSafe property must remain True continuously before the observatory is considered weather_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”)