Skip to content

NINA Plugin Setup Guide

Document Version: 1.4 | Last Updated: February 2026 Plugin Version: v3.2.14.0

What's New in v1.4 (February 2026): - Plugin version updated to v3.2.14.0 - Automatic update checking — plugin checks for updates at startup and every 4 hours - In-app plugin updates — download and install new versions directly from the plugin settings - Check for Updates button in plugin settings for manual update checks - Admins can enforce minimum plugin versions via the server

⚠️ IMPORTANT: Safety and Responsibility

YOU ARE SOLELY RESPONSIBLE FOR THE SAFETY OF YOUR EQUIPMENT.

The Science Scheduler executes observations but does not implement observatory safety logic. You must ensure your sequences include appropriate safety checks, weather monitoring, horizon limits, and equipment protection.

First Light Observatory Systems LLC accepts no responsibility for any damage to observatory equipment.

Before using with real equipment:

  • Implement safety checks in your sequences (horizon limits, weather, equipment protection)
  • Test thoroughly with ASCOM simulators first (see Testing with Simulators)
  • Configure NINA's safety features (weather triggers, dawn safety, equipment limits)
  • Supervise initial automated sessions to verify correct behavior

The Science Scheduler does not: check if it's safe to open your observatory, monitor weather, know your horizon limits, manage dome/roof operations, or implement emergency shutdowns. These are your responsibility.


Complete guide for installing and configuring the Science Scheduler plugin for NINA.

Prerequisites

Before installing the plugin, ensure you have:

Requirement Details
NINA Version 3.0.0.2001 or later - Download NINA
Operating System Windows 10 or Windows 11
.NET Runtime .NET 8.0 Runtime - Download .NET 8.0
Network Access Connection to your scheduler server

Installation

Step 1: Obtain the Plugin

Get the plugin files from your institution's administrator or the official distribution channel.

Required Files: - NINA.Plugin.ScienceScheduler.dll - Main plugin assembly - Dapper.dll - Database access library - manifest.json - Plugin manifest

Step 2: Install Plugin Files

  1. Close NINA if it's running

  2. Navigate to the NINA plugins directory. The path includes your NINA version number:

    %LOCALAPPDATA%\NINA\Plugins\<Major>.<Minor>.<Build>\
    
    For example, for NINA 3.0.0:
    C:\Users\<YourUsername>\AppData\Local\NINA\Plugins\3.0.0\
    

  3. Create a folder named ScienceScheduler inside the version folder (if it doesn't exist)

  4. Copy all plugin files into this folder:

    C:\Users\<YourUsername>\AppData\Local\NINA\Plugins\3.0.0\ScienceScheduler\
    ├── NINA.Plugin.ScienceScheduler.dll
    ├── Dapper.dll
    └── manifest.json
    

Note: Replace 3.0.0 with your actual NINA version number.

  1. Restart NINA

Step 3: Verify Installation

  1. Open NINA
  2. Go to Options (gear icon) > Plugins
  3. Find Science Scheduler in the plugin list
  4. Confirm it shows as loaded (green checkmark)

If the plugin doesn't appear, see Troubleshooting.


Plugin Updates

Once installed and configured, the plugin can update itself directly from within NINA.

Automatic Update Checks

The plugin automatically checks for new versions:

  • At startup — a few seconds after NINA loads
  • Every 4 hours — periodic background checks while NINA is running
  • On server connection — when the plugin connects via WebSocket

If an update is available, a green banner appears in the plugin settings showing the new version and release notes.

Checking Manually

  1. Go to Options > Plugins > Science Scheduler
  2. In the Plugin Updates section, click Check for Updates
  3. The plugin contacts the server and reports whether a new version is available

Installing an Update

  1. When an update is available, the version selector shows all available versions
  2. Select the version you want to install (the latest is pre-selected)
  3. Click Install Selected Version
  4. Wait for the download and installation to complete
  5. Click Restart NINA when prompted, or restart NINA manually

Downgrading

You can also select an older version from the dropdown to downgrade if needed.

Restart Required

After installing an update, NINA must be restarted for the new version to take effect. The old plugin files are cleaned up automatically on restart.

Required Updates

Your administrator may set a minimum plugin version. If your plugin is below the minimum:

  • A red UPDATE REQUIRED banner appears in the plugin settings
  • The plugin will not execute observations until updated
  • Install the update and restart NINA to resume operations

Configuration

Accessing Plugin Settings

  1. In NINA, go to Options > Plugins
  2. Click on Science Scheduler in the list
  3. The settings panel appears on the right

Server Configuration

Field Description Example
Server URL WebSocket URL of your scheduler server ws://scheduler.example.com:8080
API Key Authentication key for your observatory Leave blank for new registration

Note: Get these values from your system administrator.

Observatory Information

These fields identify your observatory to the scheduling system.

Field Required Description
ID/Code Yes Short identifier (3-20 characters)
Name Yes Full name of your observatory
Description No Optional description
City No City location
Country No Country location
Contact Name No Primary contact person
Contact Email Yes Required for registration and notifications
Association(s) No Educational institution or organization

Observatory ID/Code Rules

The Observatory ID/Code must follow these rules: - Length: 3-20 characters - Allowed characters: - Letters (A-Z, a-z) - Numbers (0-9) - Dashes (-) - Underscores (_) - Not allowed: Spaces, special characters

Valid examples: PALOMAR-1, backyard_obs, MKO-2M Invalid examples: My Observatory (spaces), obs@home (special chars)

Automatic Location Detection

Your observatory's coordinates are automatically obtained from NINA's astrometry settings. You don't need to enter them in the plugin.

To verify/update coordinates: 1. Go to NINA Options > Astrometry 2. Check Latitude, Longitude, and Elevation

Operations Control

Setting Description
Enable Plugin Master switch - enables/disables the plugin entirely
Enable Operations Controls observation execution

Enable Plugin: - When ON: Plugin connects to server and is ready to receive work - When OFF: Plugin disconnects and goes dormant

Enable Operations: - When ON: Observatory accepts and executes observations - When OFF: Observatory stays connected but pauses execution (useful during maintenance or weather)

Status Display

The plugin shows real-time status:

Status Meaning
Disconnected Plugin disabled or not connected
Connecting... Attempting to connect to server
Ready Connected and waiting for observations
Executing Currently running an observation
Configuration Required Missing required settings

Using the Science Scheduler Container

Adding to Your Sequence

  1. Open NINA's Advanced Sequencer
  2. In the left palette, find Science Scheduler under containers
  3. Drag it into your sequence

The container can be placed: - As the main container (runs continuously) - Inside other containers (for specific timing)

Container Behavior

When the sequence runs, the Science Scheduler container:

  1. Connects to the server (if not already connected)
  2. Requests an observation from the queue
  3. Executes the assigned observation (slew, focus, capture)
  4. Uploads FITS files to the server
  5. Reports completion status
  6. Requests the next observation
  7. Repeats until queue is empty or operations are paused

Telemetry and Equipment Reporting

The plugin automatically reports telemetry data to the server, including:

  • Equipment configuration: Camera, mount, filter wheel, and focuser details
  • System information: Computer name, OS version, NINA version
  • Safety device status: Reports from connected weather/safety monitors

The telemetry collector starts and stops cleanly with the plugin connection, reducing resource usage when the plugin is idle.

Connection Model

The plugin uses a single-owner communications model — only one WebSocket connection is maintained per observatory, regardless of how many NINA container instances exist. This means:

  • No duplicate connections: NINA creates multiple container instances internally, but only one owns the WebSocket connection
  • Automatic reconnection: If the connection drops, the plugin reconnects automatically with exponential backoff
  • Clean sequence reload: When you load a new sequence, the plugin detects the stale owner and seamlessly transfers ownership without creating duplicate connections
  • Shared resources: All container instances share the same connection, ensuring messages route correctly

Time Remaining Display

During observation execution, the plugin displays a time remaining countdown in the NINA sequencer. This shows how much time is left in the current observation window and prevents new exposures from starting if they can't complete before the window ends (with a 15-second overhead buffer for image download and processing).

Integration with Safety Systems

The Science Scheduler works alongside NINA's safety features:

  • Weather Safety: NINA's safety triggers take precedence
  • Startup/Shutdown: Use NINA's standard sequences around the container
  • Park Positions: NINA handles equipment parking

Recommended sequence structure:

Startup (your standard startup sequence)
  ├── Connect Equipment
  ├── Cool Camera
  └── Unpark Mount

Science Scheduler Container
  └── [Observations executed here]

Shutdown (your standard shutdown sequence)
  ├── Park Mount
  ├── Warm Camera
  └── Disconnect Equipment


Rice Compression for FITS Files

The Science Scheduler supports Rice-compressed FITS files (.fits.fz), which can reduce file sizes by 50-70% while preserving all scientific data losslessly. This significantly reduces upload times and storage requirements.

Enabling Rice Compression in NINA

  1. Open NINA Options > Imaging > Image File Settings
  2. Find the Compression setting
  3. Select Rice from the dropdown
  4. Optionally adjust the Quantization Level (higher = more compression, slightly less precision for floating-point data)

When enabled, NINA will save all FITS files with the .fits.fz extension.

Benefits of Rice Compression

Aspect Benefit
File size 50-70% smaller than uncompressed FITS
Upload speed Faster uploads to the server
Storage Reduced storage costs
Data integrity Lossless compression - no data loss
Compatibility Widely supported in astronomy software

Decompressing .fz Files

If you need to work with the original uncompressed FITS files, several tools can decompress .fits.fz files:

AstroImageJ

  1. Download AstroImageJ from: https://www.astro.louisville.edu/software/astroimagej/
  2. Open the .fits.fz file directly - AstroImageJ handles decompression automatically
  3. To save uncompressed: File > Save As > FITS

CFITSIO funpack (Command Line)

The funpack utility from NASA's CFITSIO library is the standard tool:

  1. Download CFITSIO from: https://heasarc.gsfc.nasa.gov/fitsio/
  2. Decompress a single file:
    funpack image.fits.fz
    
  3. Decompress multiple files:
    funpack *.fz
    

Python with Astropy

from astropy.io import fits

# Read compressed file (automatic decompression)
data = fits.getdata('image.fits.fz')

# Save as uncompressed FITS
fits.writeto('image.fits', data)

Other Compatible Software

These applications can open Rice-compressed FITS files directly: - AstroImageJ - Full support - PixInsight - Full support - Siril - Full support - DS9 (SAOImage) - Full support


Testing with ASCOM Simulators

Before running sequences on your real observatory equipment, we strongly recommend testing with ASCOM simulators. This allows you to verify your sequence works correctly without risk to equipment or wasted observing time.

Why Test with Simulators?

  • No equipment risk: Test complex sequences without moving real hardware
  • Daytime testing: Develop and debug sequences during the day
  • Faster iteration: Simulators run quickly without real slew/exposure times
  • Verify logic: Confirm your sequence flows correctly before a real session

Installing ASCOM Simulators

  1. Download ASCOM Platform
  2. Get the ASCOM Platform from: https://ascom-standards.org/
  3. Get the simulators from: https://ascom-standards.org/Downloads/DevTools.htm

  4. Available Simulators

  5. Telescope Simulator: Simulates mount movement and tracking
  6. Camera Simulator: Generates test images with configurable properties
  7. Focuser Simulator: Simulates focus position changes
  8. Filter Wheel Simulator: Simulates filter changes
  9. Dome Simulator: Simulates dome rotation and shutter

Configuring NINA for Simulator Testing

  1. Open NINA Options > Equipment
  2. For each device type, select the ASCOM Simulator:
  3. Telescope: "ASCOM Telescope Simulator"
  4. Camera: "ASCOM Camera Simulator"
  5. Focuser: "ASCOM Focuser Simulator"
  6. Filter Wheel: "ASCOM FilterWheel Simulator"

  7. Connect to simulators and verify they respond

Testing Your Sequence

  1. Create a test observation in the web interface with a visible target
  2. Build your sequence with the Science Scheduler container
  3. Run the sequence with simulators connected
  4. Verify:
  5. Plugin connects to server
  6. Observation is assigned
  7. Simulated slew occurs
  8. Exposures are taken (simulated)
  9. Files are uploaded to server
  10. Observation completes successfully

Tips for Effective Testing

  • Use short exposure times (1-5 seconds) for faster testing
  • Create test observations with targets currently above the horizon
  • Test your startup and shutdown sequences too
  • Verify error handling by intentionally causing failures

Once your sequence works reliably with simulators, you can switch to real equipment with confidence.


Database Management

Local State Database

The plugin maintains a local SQLite database for: - Pending file uploads - Observation state recovery - Crash recovery information

Location: %LOCALAPPDATA%\NINA\ScienceScheduler\science_scheduler_state.db

Clear Local Database

If you experience issues with stuck observations or upload queue problems:

  1. Go to plugin settings
  2. Scroll to Database Management
  3. Click Clear Local Database
  4. Confirm the action

Warning: This removes all pending uploads and cached state. Use only when troubleshooting.


Troubleshooting Quick Reference

Issue Check
Plugin not loading NINA version, .NET runtime, file location
Can't connect Server URL, network access, firewall
Registration fails Required fields filled, valid email
No observations Queue status, operations enabled, visibility

See Troubleshooting for detailed solutions.


Next Steps