The Imaging panel brings together four related capabilities: manual camera control for single-frame or test exposures, a FITS file browser for reviewing and analyzing saved frames, a pier camera live view for monitoring the physical mount, and a live stacking module that co-adds incoming sub-frames to reveal faint detail in real time. All four are accessible from a single panel in the dashboard without needing a separate application.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.
Manual Exposure
The Expose form lets you trigger a single camera exposure on demand. Click Capture to send:Exposure duration in seconds. Fractional values are accepted (e.g.
0.5 for a half-second frame).Camera pixel binning factor.
1 = 1×1 (full resolution), 2 = 2×2 (quarter resolution, four times the sensitivity), etc.| Config key | Description |
|---|---|
camera.exposure_duration | Pre-filled exposure duration when the Expose form loads |
camera.binning | Pre-filled binning when the Expose form loads |
Manual exposures are saved to the same watch directory as scheduled exposures and immediately appear in the FITS Browser. They are also logged in the observation history.
FITS Browser
The FITS Browser panel lists every FITS file in the node’s configured watch directory. Clicking Refresh (or waiting for the auto-refresh interval) sends:- Run Photometry — triggers
POST /api/photometryon the selected file, sending it through the aperture photometry pipeline. Results appear in the Photometry status panel. - Submit to AAVSO — available after a successful photometry run; sends
POST /api/aavsowith the measured magnitude and metadata. - Open in History — links the file back to its parent observation record in the history modal.
Pier Camera
The pier camera is an optional secondary USB camera—typically a ZWO ASI unit—mounted on the pier or tripod to provide a wide-angle view of the scope and mount during a session. It is useful for verifying that cables are not snagging, the mount is moving freely, and the scope cap is off. Enable the pier cam by settingpier_cam.enabled: true in config.yaml. When enabled, the dashboard displays a live MJPEG-style feed in the Pier Cam panel, fetched from:
config.yaml keys:
| Config key | Type | Description |
|---|---|---|
pier_cam.enabled | bool | Set to true to activate the pier cam feed |
pier_cam.device_index | int | USB device index of the ASI camera (0 = first connected) |
pier_cam.exposure_ms | int | Sensor exposure time in milliseconds per frame |
pier_cam.gain | int | Analog gain setting (ASI driver scale, e.g. 0–500) |
pier_cam.bin | int | Binning factor applied to the pier cam sensor |
pier_cam.target_fps | float | Target frame delivery rate for the live view |
pier_cam.jpeg_quality | int | JPEG compression quality (1–100; 80 is a good default) |
The pier cam runs independently of the main imaging camera and does not affect exposures or the FITS pipeline. Its frames are served as JPEGs only and are not saved to disk.
Live Stacking
Live stacking co-adds incoming sub-frames in real time to accumulate signal and improve the signal-to-noise ratio as the night progresses. Each new frame is aligned to the first frame using RANSAC-based translation estimation, then added to the running stack. Because noise averages out while signal adds coherently, SNR improves proportionally to the square root of the number of stacked frames (√N): stacking 25 frames yields a 5× SNR improvement over a single frame. Start and stop stacking with:| Action | Endpoint |
|---|---|
| Start live stacking | POST /api/stack/start |
| Stop live stacking | DELETE /api/stack/start |
{}.
The stacking module is configured via config.yaml:
| Config key | Type | Description |
|---|---|---|
stacking.frames | int | Total number of sub-frames to accumulate before stopping automatically (0 = run until stopped manually) |
stacking.exposure_s | float | Duration of each sub-frame exposure triggered by the stacker |
stacking.preview_every | int | Update the dashboard preview PNG after every N new frames |
stacking.preview_every frames, so setting this to 1 gives a live update after every frame at the cost of extra CPU.
RANSAC translation alignment handles small tracking errors and atmospheric drift, but it does not correct for field rotation. For mounts without polar alignment or for long focal lengths, field rotation will degrade stack quality over long sequences. Use an equatorially mounted scope with reasonable polar alignment for best results.
