All telescope control operations in the Node v1 dashboard flow through the ALPACA client layer. The dashboard speaks to any ALPACA-compatible mount driver over UDP (for discovery) and HTTP (for all subsequent commands), so it works with Seestar, ASIAIR, and any other device that exposes the ASCOM Remote / ALPACA API. No driver installation is required on the node itself.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/skyrobot804/node_v1/llms.txt
Use this file to discover all available pages before exploring further.
Discovering and Connecting
Before any mount commands are available, the dashboard must discover and connect to an ALPACA server on your local network.Trigger discovery
Click the Discover button in the Connection panel. The dashboard sends
POST /api/discover, which broadcasts a UDP packet on the ALPACA discovery port. All ALPACA servers that respond are listed in the server dropdown.Select a server
Choose the correct server from the dropdown. The entry shows the server’s IP address and port number as reported during discovery.
Connect
Click Connect. The dashboard sends On success, the status indicator turns green and all mount-control buttons become active. The full device state is available at
POST /api/connect with the selected server’s address and port:GET /api/status.If the node and the mount controller are on different subnets, UDP broadcast discovery may not reach the server. In that case, type the IP address and port directly into the manual address fields before clicking Connect.
Park / Unpark
Parking and unparking commands move the mount to or from its designated park position and enable or disable axis movement respectively.| Action | Endpoint |
|---|---|
| Park the mount | POST /api/telescope/park |
| Unpark the mount | POST /api/telescope/unpark |
{} and return a status response.
Tracking
Sidereal tracking can be toggled independently of slewing. The dashboard’s Tracking toggle calls:"enabled": false to stop the drive motors without parking.
The tracking rate is controlled by the telescope.tracking_rate config key. A value of 0 selects sidereal rate (the correct setting for most targets). Other standard ALPACA rates—lunar, solar, king—can be set by changing the config value and reconnecting.
Tracking is automatically re-enabled by the schedule runner before each slew. You do not need to toggle it manually between scheduled targets.
Slewing to Coordinates
The Slew form accepts a target position in equatorial coordinates and sends:Right ascension of the target in decimal hours (0 – 24). For example, the Orion Nebula (M42) is at RA 5h 35m 17s ≈
5.588 hours. Do not supply degrees here.Declination of the target in decimal degrees (−90 to +90). Negative values are south of the celestial equator.
Joystick / Nudge
The on-screen joystick provides directional nudges for fine centering after a slew. Clicking any of the N / S / E / W arrow buttons sends:Cardinal direction:
"N", "S", "E", or "W".Angular distance to nudge, in arcseconds (valid range: 1–3600). The dashboard exposes two preset step sizes—Fine (small arcsecond value for precise centering) and Coarse (larger value for repositioning after a rough slew)—selectable with the step-size toggle above the joystick.
Nudge moves are non-tracking; the mount moves by the requested angle and then resumes tracking. For large repositioning, use the Slew form instead.
Autofocus
The autofocus module drives the focuser through a configurable range of positions, measures star FWHM at each point, and fits a parabola to find the best focus position. Start and stop it with:| Action | Endpoint |
|---|---|
| Start autofocus | POST /api/focus/auto |
| Stop / cancel autofocus | DELETE /api/focus/auto |
{}. Progress is reported in the live log stream.
The autofocus sequence is controlled by the following config.yaml keys:
| Config key | Type | Description |
|---|---|---|
autofocus.exposure_s | float | Exposure duration (seconds) for each focus frame |
autofocus.step_size | int | Focuser step increment between sample positions |
autofocus.steps_per_side | int | Number of steps to take on each side of the starting position |
autofocus.settle_s | float | Seconds to wait after each focuser move before capturing |
autofocus.samples_per_point | int | Number of frames to average at each focus position |
autofocus.min_position | int | Lower bound of the allowed focuser range |
autofocus.max_position | int | Upper bound of the allowed focuser range |
Auto-Centering
Auto-centering plate-solves the current field, calculates the offset from the requested target coordinates, and commands a correction slew. It repeats this loop until the target is within the configured tolerance or the iteration limit is reached.| Action | Endpoint |
|---|---|
| Start auto-centering | POST /api/center/run |
config.yaml keys:
| Config key | Type | Description |
|---|---|---|
centering.exposure_s | float | Exposure duration for each plate-solve frame |
centering.tolerance_arcmin | float | Acceptable distance from target center (arcminutes) |
centering.max_iterations | int | Maximum number of solve-and-slew cycles before giving up |
centering.settle_s | float | Seconds to wait after each correction slew before solving |
Auto-centering requires a working plate-solve installation (e.g., Astrometry.net local solver or the Seestar’s built-in solver). If the solver fails to return a result within the timeout, the centering run aborts and logs an error.
