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¶
-
Close NINA if it's running
-
Navigate to the NINA plugins directory. The path includes your NINA version number:
For example, for NINA 3.0.0: -
Create a folder named
ScienceSchedulerinside the version folder (if it doesn't exist) -
Copy all plugin files into this folder:
Note: Replace 3.0.0 with your actual NINA version number.
- Restart NINA
Step 3: Verify Installation¶
- Open NINA
- Go to Options (gear icon) > Plugins
- Find Science Scheduler in the plugin list
- 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¶
- Go to Options > Plugins > Science Scheduler
- In the Plugin Updates section, click Check for Updates
- The plugin contacts the server and reports whether a new version is available
Installing an Update¶
- When an update is available, the version selector shows all available versions
- Select the version you want to install (the latest is pre-selected)
- Click Install Selected Version
- Wait for the download and installation to complete
- 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¶
- In NINA, go to Options > Plugins
- Click on Science Scheduler in the list
- 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¶
- Open NINA's Advanced Sequencer
- In the left palette, find Science Scheduler under containers
- 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:
- Connects to the server (if not already connected)
- Requests an observation from the queue
- Executes the assigned observation (slew, focus, capture)
- Uploads FITS files to the server
- Reports completion status
- Requests the next observation
- 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¶
- Open NINA Options > Imaging > Image File Settings
- Find the Compression setting
- Select Rice from the dropdown
- 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¶
- Download AstroImageJ from: https://www.astro.louisville.edu/software/astroimagej/
- Open the
.fits.fzfile directly - AstroImageJ handles decompression automatically - To save uncompressed: File > Save As > FITS
CFITSIO funpack (Command Line)¶
The funpack utility from NASA's CFITSIO library is the standard tool:
- Download CFITSIO from: https://heasarc.gsfc.nasa.gov/fitsio/
- Decompress a single file:
- Decompress multiple files:
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¶
- Download ASCOM Platform
- Get the ASCOM Platform from: https://ascom-standards.org/
-
Get the simulators from: https://ascom-standards.org/Downloads/DevTools.htm
-
Available Simulators
- Telescope Simulator: Simulates mount movement and tracking
- Camera Simulator: Generates test images with configurable properties
- Focuser Simulator: Simulates focus position changes
- Filter Wheel Simulator: Simulates filter changes
- Dome Simulator: Simulates dome rotation and shutter
Configuring NINA for Simulator Testing¶
- Open NINA Options > Equipment
- For each device type, select the ASCOM Simulator:
- Telescope: "ASCOM Telescope Simulator"
- Camera: "ASCOM Camera Simulator"
- Focuser: "ASCOM Focuser Simulator"
-
Filter Wheel: "ASCOM FilterWheel Simulator"
-
Connect to simulators and verify they respond
Testing Your Sequence¶
- Create a test observation in the web interface with a visible target
- Build your sequence with the Science Scheduler container
- Run the sequence with simulators connected
- Verify:
- Plugin connects to server
- Observation is assigned
- Simulated slew occurs
- Exposures are taken (simulated)
- Files are uploaded to server
- 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:
- Go to plugin settings
- Scroll to Database Management
- Click Clear Local Database
- 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¶
- New observatory? See Observatory Registration
- Ready to observe? Run your sequence with the Science Scheduler container
- Problems? See Troubleshooting