NINA Target Scheduler Setup Guide – Make the Most of Your Nights
Share
Target Scheduler is my favorite NINA plugin. It's a bit of a learning curve to set up, but once configured, it makes imaging and multi-target nights a breeze. This guide will walk you through getting Target Scheduler set up.
Prerequisites:
- You have a tested, reliable rig with the kinks worked out. Your NINA profile is fully set up and you've had multiple, problem-free nights of imaging using the advanced sequencer without Target Scheduler.
- Target Scheduler is designed for mono cameras with an electronic filter wheel. You can employ a workaround to use an OSC camera, though.
- You have the plugin installed via the Plugins tab in NINA
Navigating The Plugin:
The Plugin Tab
Navigate to your Plugin Tab > Installed > Target Scheduler.

Almost all of the Target Scheduler configuration is handled within this plugin tab -- not in your sequence itself. We'll get into how to set up your sequence later on. For now, focus on just the configuration within the plugin tab.
There are four twirl-down sections:
-
Target Management: All of your plugin configuration is done here. This is where you tell Target Scheduler what targets to shoot, for how long, with what filters, at what priority, etc.
-
Scheduler Preview: Once you have set up targets in Target Management, this will let you preview what Target Scheduler expects to do on a given night. When starting out, this is useful for verifying that your Target Management section is likely set up correctly.
-
Reporting: This menu is new to Target Scheduler, but it's useful for checking on the status of projects-in-progress.
-
Acquired Images: This menu displays the recent images taken via Target Scheduler. It's useful for looking back in time to see what you captured during a specific period. You can also use this tab to override Target Scheduler's automatic image grading.
Terminology:

Target Scheduler has its own, carefully-chosen terminology that is helpful to understand:
- A Target is one specific framing on whatever space object you are imaging. It's defined by RA and Dec coordinates, along with a rotation. For example, a mosaic project will contain a different target for each panel in the mosaic. A target could be named "Andromeda Panel 1", "Andromeda Panel 2", etc., or just "Andromeda" makes sense if you aren't doing a mosaic. You can specify the number of exposures for each target independently.
- The target(s) are grouped within a Project. A project containing panels for an Andromeda mosaic might be named "Andromeda Mosaic". Projects contain settings relevant to all of the targets within it, such as how to handle automatically capturing flats or how to prioritize that project against other projects.
- Profiles contain projects. You have one Target Scheduler profile for every NINA profile. So, for example, I have NINA profiles for my Rokinon 135 setup and my Esprit 100 ED setup. Therefore I have Target Scheduler profiles for my Rokinon 135 setup and my Esprit 100 ED setup as well.
There are other ways to arrange targets and projects (which is particularly useful for sky surveys, Messier marathons, or some alternative schools of thought when it comes to project organization). But for this guide, we're going to stick with the organization scheme I've outlined above.
Creating Your First Target:
Exposure Templates:
Later on when you create a target, you'll fill out its "Exposure Plan" (i.e., instructions on what filters to use with what exposure length, moon avoidance settings, etc). So as to not need to rewrite these instructions from scratch each time, Target Scheduler uses Exposure Templates to make filling out an Exposure Plan fast. In practice, make at least one Exposure Template per filter (though often you'll have some extras for different situations, which will be discussed later).
Lets create your first Exposure Template:
- Open the Target Management Tab
- In the bottom left, open the Exposure Templates section and select your profile
- Click the plus button ("Add Exposure Template" when you hover over it). This will create a new exposure template, which we need to configure.
- Click the edit icon and fill out the sections like this:
Basic Settings:
-
- Name: For just getting a basic set of Exposure Templates created, I like to name mine "[Filter Name] - [Exposure Time]". For example: "Sii - 300s"
- Filter: Select the first filter in your filter wheel
- Default Exposure: Input however long your typical exposure is on this filter. If you shoot a variety of exposure durations depending on the situation, we can create more later. For now, just input a good starting point.
- Gain: You probably want to leave this blank so it defaults to your Camera gain setting
- Offset: Likewise, leave this blank
- Binning: You probably want to leave this on 1x1 unless you have a good reason otherwise
- Readout Mode: Likewise, leave this blank
- Acceptable Twilight: Defines the time after sunset that Target Scheduler must wait before considering exposures on this Exposure Template. If it isn’t dark enough, Target Scheduler will try other templates on the same target that meet the twilight requirement; if none qualify, it moves on to another target and looks for a valid template. If no valid Exposure Templates are found, your scope will wait for it to get dark enough.
- Dither After Every: For now, just leave this blank. We'll control dither settings at the project level. But once you feel like you have a better handle on how the plugin works and you're looking to optimise your dithering, read the documentation here.
- Maximum Humidity: I leave this blank because I don't get much humidity where I live. But if you want Target Scheduler to skip some exposure plans if the humidity is too high and you have a weather device connected to NINA, you can input a number here.
Moon Avoidance:
Moon avoidance is one of the trickiest parts of Target Scheduler. The basic premise is that you may want to avoid shooting some filters if the moon is too bright and/or too close to your target. But this threshold is calculated in a manner that, honestly, I don't know if more than a couple dozen people on this planet understand. For now, I recommend that you just copy my moon avoidance parameters (listed below), but if you want to dig into the nitty-gritty of how this works, here's the section in the documentation. My moon avoidance parameters are at least an OK starting point.
For narrowband filters, I use these settings:

For broadband filters, I use these settings:

Save your configuration using the floppy disk icon. Continue creating exposure templates for each filter in your filter wheel.
Here are some additional exposure templates you may wish to create, though feel free to come back to this after continuing with the rest of the guide:
- Longer and shorter versions of your templates for particularly dark/bright targets
- Extra short-exposure RGB templates for getting broadband stars to add to narrowband images. You can give these the same moon avoidance and acceptable twilight as your narrowband exposure templates, since light pollution doesn't matter as much for these.
- Versions of your exposure templates that have the most-generous acceptable twilight and moon avoidance parameters, for when you just want your scope to image a target and you don't care about getting high-quality subs. Useful for community outreach where you're showing people what your scope can see, and you don't want to sit there trying to troubleshoot why your moon avoidance parameters are preventing the plugin from selecting a target.
Creating a Project:
Above your Exposure Templates list is a section titled "Projects". Navigate to your Profile, and select it. Before creating a new project, notice the gear icon next to your profile's name -- this settings menu is often missed. Take a moment to explore it just so you know what's in there, but you can safely leave everything on its default settings for now.
Back out of that settings menu by clicking out of your profile and then back into it (there's no back button for some reason). Click the plus button to create a new project within your profile. Like before, here's what I do for each setting:
- Name: Something like "Andromeda Mosaic" or "M 42"
- Description: I've never felt the need to fill this in. But you can if there's some detail you'd like to make note of.
- State: Active. About 50% of the time when a new Target Scheduler user is wondering why the plugin isn't imaging their project, it's because they forgot to set it to "Active". Target Scheduler will ignore projects set to any state other than "Active". These other states are for your organization.
- Priority: Leave this at Normal for now. After you’ve loaded a few Projects and their Targets and run a Scheduler Preview, you may adjust it up or down to guide how the plugin schedules your Projects.
- Minimum Time: I leave this at thirty minutes.
- Minimum Altitude: I leave this off in favor of using a custom horizon, which is configured a couple lines down from here. But feel free to set this to a value that works for you if desired.
- Maximum Altitude: I leave this off because I, perhaps foolishly, do not fear pier collisions. Note that if you're imaging from a covered balcony, this could allow you to have a rudimentary "roof horizon" -- something that NINA does not yet natively support.
- Use Custom Horizon: I turn this on. I recommend you do as well, unless you truly have a zero-degree horizon in all directions. Note that this requires that you have set up a NINA horizon file.
- Horizon Offset: If you feel this is needed, set a value that feels appropriate to you (I do 5 degrees because I know my horizon is a little sloppy).
- Meridian Window: If you want Target Scheduler to only image this Project when it's within +/-X minutes of its meridian, enter that value of X here. I leave this at zero (disabling the feature), because I find that enforcing a meridian window often leaves my scope idle while it waits for any Target to get close to meridian. I'd rather my scope not waste its limited dark sky time waiting for ideal conditions.
-
Filter Switch Frequency: When we create a Target, we'll be filling out its Exposure Plan, telling it how many exposures of each filter we want. This setting controls how many exposures it should take per filter before cycling to the next one in the Exposure Plan. I set mine to 2, though for LRGB images I override this value so I can shoot LLLRGB. (You can override this value once we get to creating a Target).
- A value of zero would be useful if you don't have filter offsets set up, in which case it will only shoot one filter at a time until that filter is complete. (Though you should really set up filter offsets).
-
Dither After Every: If you set this to a value of X, Target Scheduler will take up to X exposures on each filter before dithering. For example, if your Filter Switch Frequency and Dither After Every are both set to 2, an LRGB Exposure Plan would do: LLRRGGBB Dither, LLRRGGBB Dither, [...]. Notice that it doesn't dither after the second exposure on the same filter (which would look like LL Dither RR Dither, etc)-- it dithers before the third exposure on the same filter.
- A value of zero will disable dithering.
- Smart Exposure Selection: If enabled, this prioritizes shooting your most moon-intolerant exposures (e.g., broadband subs) when the moon is down. Leave it off at least until you've had a successful night running Target Scheduler, as it adds a layer of complexity that makes it hard for a beginner to understand if Target Scheduler is behaving correctly or not.
-
Enable Image Grader: Target Scheduler will do some rudimentary evaluation of the quality of your exposures, only counting them towards your desired exposure count if they pass a threshold (details here).
- I personally turn this off, because while it's useful in theory I find that sometimes it sets a weird threshold on one of my filters and for whatever reason it will just reject subs that seem perfectly fine to me. But perhaps with some careful image grader parameter tuning (which can be done in the settings menu I showed you in the first paragraph of this section), it might be really effective.
- Mosaic Project: Turn this on if this Project is a mosaic with multiple Targets
-
Flats Handling: Target Scheduler can automatically take flats if you have an automatic flat panel (either a wall-mounted flat panel or a motorized flat panel on your dew shield). This requires that you have trained your flats already. This feature is quite nice, because it only takes flats that are needed -- it doesn't take flats for projects that it hasn't imaged. Note that this requires the addition of a flats instruction into your sequence (details to come later).
- If you set this to 1, it will take flats at the end of every night.
- If you set this to some value larger than 1, it will take flats at the end of the night only if it has been more than [X] nights since the last time Target Scheduler took flats for that Target.
- Set it to "Target Completion" if you want it to take flats only after it has finished taking all the requested lights for a Target.
- Set it to "Use With Immediate" if you want it to take flats in the middle of the night, before moving from one target to the next. This is useful if you have a rotator that can't reliably return to its previous position. But if you're shooting in a shared observatory or near other astronomers, it's quite rude to blast them with light spilling from your flat panel in the middle of their imaging session.
Scoring Engine Rule Weights
Leave these alone until you are inevitably annoyed with how Target Scheduler has prioritized one Project over another and you need to fiddle with these to make it behave how you want.
If I were to suggest one tweak, it would be to set "Setting Soonest" to zero. Unless you're trying to squeeze in a Target whose season is almost over, I don't see a reason to prioritize a Target that is setting soonest.
Click the save icon to save this configuration. When creating projects in the future, you may find it easier to clone an existing project rather than doing this all from scratch. I suggest cloning this project and naming the clone "_Template" to ensure it appears at the top of the alphabetical list of projects. The easiest way to clone a Project is to click on your Profile, click "Copy" next to the Project name, then "Paste" in the toolbar at the top of the screen.
Finally, Creating a Target:
Go to the Framing Assistant and pick out your desired framing. If you are doing a mosaic Project, make sure to enable the number of panels that you desire.
Return to the Project you just created and click the "Plus" symbol whose tooltip reads "Add Target". Then click the "Edit" button on your Target, followed by the "Import Coordinates" button (kind of looks like a download icon). Click the button next to "Framing Assistant". The coordinates, name, and rotation should import from the Framing Assistant. If you are importing a mosaic, this will create additional Targets for each panel.

Then click the "Plus" symbol below "Exposure Plans" to add your first Exposure Plan. Select which Exposure Template you'd like to use, then type in the number of Desired exposures for that Template. You can optionally override the exposure length set in your Exposure Template if you'd like. Repeat for all the Exposure Plans you'd like to add to this Target (typically one plan per filter you'd like to use). If you set up additional Exposure Plans for RGB stars, you can add those here too.
Click the "Save" button at the top.
At the bottom, notice the Exposure Order section. It will give you a preview of what the filter change/dither pattern will look like. e.g., SSHHOO Dither. If you would like to override this (like if you want to do LLLRGB Dither, as I often do), click the gear icon next to "Exposure Order: Default". Follow the instructions in the window that popped up to edit your Exposure Order -- be sure to include a Dither.
Sanity Checks
If everything is correct, there should be a green checkmark at the top of the screen when you click on your Project and your Target(s) in that Project.
As a final check, scroll down to the Scheduler Preview and click "Run". If everything went well, you should see results like this, but with your Project(s):

If you receive an error message instead, there are a few potential reasons why. Here are the most common ones I see:
- You did not enable your Project -- it's still set to "Draft"
- Your Target either has no Exposure Plans or it is set to "Disabled"
- The moon is up and all of your Exposure Plans have moon avoidance settings that cause the scheduler to reject them
- The Target you've selected is not visible in the sky tonight from your location
If you get an output but it's not what you expect (it's prioritizing targets in a perplexing way, or if you expand the details on a Target it's only shooting some of the Exposure Plans), click "View Details" to view a verbose breakdown of how the Scheduler evaluates targets.
Scheduler Setup:
Don't worry, the hard part is over. You're almost done. In your scheduler, this is likely all you need to do. Just replace your current imaging instructions with this:

Note the placement of my triggers: They're not under the "Custom Event Containers" > "Triggers" dropdown. This is correct. This "Triggers" section is very, very rarely used -- only in special circumstances.
Unless you have your Flats Handling set to "Use With Immediate", you likely do not need any instructions in the Custom Event Containers. If you have immediate flats enabled, drop the "Target Scheduler Immediate Flats" instruction into the "After Each Target Instructions" custom event container. Target Scheduler Immediate Flats will automatically close & reopen the flat panel. If you use a wall-mounted flat panel, consult this documentation to see how to arrange your sequence.
If your Flats Handling is set to a numerical value or "Target Completion", place the "Target Scheduler Flats" instruction after your Target Scheduler imaging container. I put mine in my shutdown instructions, after a waiting period to allow the sun to rise (so I don't blast any nearby fellow astronomers).
If you think your setup requires other custom event container instructions, I highly recommend you consult the documentation to figure out exactly how your edge-case situation needs to be set up.
Image File Pattern Configuration
Target Scheduler is all about automation. So you probably want to automate how NINA organizes your lights & flats taken with the plugin so that you can easily import it into WBPP and let the grouping keywords handle everything. Here is the Image File Pattern I have set up in Options > Imaging:
$$CAMERA$$\$$TELESCOPE$$\$$TARGETNAME$$\SESSION_$$TSSESSIONID$$\$$IMAGETYPE$$\$$FILTER$$\$$DATETIME$$_$$FILTER$$_$$SENSORTEMP$$_$$EXPOSURETIME$$s_$$FRAMENR$$_$$TSPROJECTNAME$$
The SESSION_$$TSSESSIONID$$ will group your flats and lights together appropriately.
It's Over. It's Finally Done.
You did it. You set up Target Scheduler. Everything should work now.
If you need help, the #target-scheduler channel in the NINA Discord is quite good.
