Repository navigation
Home
PFR Sentinel is a live camera monitoring and image overlay system designed for observatories. It captures images — either from a watched directory or directly from a ZWO ASI camera — applies processing, auto-stretch and overlays, then distributes the result through several outputs at once. It can also start and stop capture from a N.I.N.A. sequence, keep a browsable archive of every night, and watch the sky for meteors. Built for 24/7 unattended operation on Windows.
Every capture cycle follows the same pipeline:
- A new frame arrives (from the camera sensor or a watched folder)
- The frame is resized, if you asked for a smaller output
- Auto-stretch (MTF), auto brightness and saturation are applied
- ML models optionally classify roof status and sky conditions from the unprocessed frame
- From the next release, the frame is cropped to your Output Framing box, if you drew one
- Text, image, and compass overlays are composited onto the frame
- The result is pushed to every active output — file, web server, Discord, Hermes, and the Image Library
- If enabled, the frame also feeds the timelapse recorder, the meteor tracker, and the all-sky calibration
All outputs run simultaneously, and the pipeline runs unattended for days at a time.
ZWO Camera captures directly from a connected ZWO ASI camera via the ASI SDK. This mode supports auto-exposure, gain control, white balance, RAW16 mode, per-camera settings, automatic recovery when the camera drops off USB, and scheduled capture (from the next release, a schedule can also follow the timelapse window). See Capture Settings.
Directory Watch monitors a folder for new images written by other capture software (NINA, SharpCap, or anything else). PFR Sentinel detects each file as it lands, reads any metadata file saved alongside it, processes the image, and moves on.
| Output | Description |
|---|---|
| File | Saves each processed frame to a folder, with filename tokens for building an archive |
| Web Server | Serves the latest frame at /latest and status at /status (JSON), plus the Image Library endpoints |
| Discord | Periodic image posts, plus error, roof-change and timelapse notifications |
| Hermes | Signed JSON webhook notifications, with optional per-event URLs |
| Image Library | A browsable archive of recent nights with a scrubber and a condition band |
| Timelapse | Nightly H.264 video via ffmpeg, with optional YouTube upload |
| NINA | A plugin that shows the pier camera inside NINA and adds Start/Stop Sentinel Capture sequencer instructions |
| Capture Control API | Token-protected HTTP endpoints to start and stop capture from scripts |
The window has four parts, top to bottom:
- App bar — pipeline status, the notifications bell, and the main Connect Camera / Start Capture / Stop button
- Status strip — WEB, DISCORD, ROOF, SKY, WEATHER and SEEING tiles, and the capture/camera state
- Content — the navigation rail on the left and the selected page. Most pages show the live preview beside their settings; Overlays, Library and Settings use the full width
- Telemetry bar — disk space, exposure, gain, sensor temperature, last capture time, and the app version
The navigation rail groups the pages:
| Group | Page | Purpose |
|---|---|---|
| Monitor | Live Monitoring | Live preview with zoom, histogram, recent activity, and performance |
| Monitor | Meteor Tracker | Automatic meteor trail detection with thumbnails and confirmation (beta) |
| Image | Capture | Capture mode, camera settings, and scheduled capture |
| Image | Image Processing | Resize, auto-stretch (MTF), brightness and saturation, ML models, the ASCOM safety file, and Output Framing (next release) |
| Image | Overlays | Text, image, and compass overlays with live preview |
| Image | All-Sky | Constellations, stars, deep-sky objects and planets on a fisheye frame, with automatic and guided calibration |
| Publish | Output | File output, web server, capture control API, NINA plugin, Discord, Hermes, and Image Library settings |
| Publish | Timelapse | Nightly timelapse recording and YouTube upload |
| Publish | Library | Browse past nights frame by frame |
| — | Logs | Application log viewer, and Diagnostics Export from the next release |
| — | Settings | Theme, start at login, system tray, weather API and coordinates, analytics, and updates |
- Auto-stretch (MTF): Midtone transfer function with configurable target median, shadow handling, dark scene colour correction, and SCNR green removal
- Auto-exposure: Calibration followed by per-frame adjustment and clipping protection for hands-off brightness control
- ML scene classification: Local ONNX models for roof open/closed detection and sky conditions, with results available as overlay tokens
- ASCOM safety file: ML roof status can be written to a file monitored by NINA's GenericFile safety monitor — see ML Models
- Overlay token system: Tokens for camera metadata, image statistics, weather data, and ML predictions
- Scheduled capture: Capture only inside a time window, or at a different rate inside the window. Following the timelapse window with a margin is new in the next release
- Weather integration: OpenWeatherMap data cached for 10 minutes, surfaced in overlays and the status strip
- All-sky overlay: Constellation lines, bright stars, Messier/NGC labels and planets projected onto fisheye frames, with automatic lens calibration and a guided calibration for difficult sites
- Meteor tracker: Detects meteor trails across a stack of frames, rejects planes and persistent artefacts, and keeps thumbnails for review
- Image Library: A per-night archive with a scrubber, roof and cloud condition band, and live updates while capturing
- NINA integration: Install the NINA plugin from the Output tab; capture follows your sequence
- Camera recovery: Reconnects a dropped camera, resets the USB device, and restarts the app if needed
- Per-camera profiles: Exposure, gain, white balance, and other settings stored independently for each camera
- Diagnostics Export: One ZIP with logs, redacted settings and a fresh raw frame to attach to a bug report (new in the next release)
- Output Framing: Crop saved and published images to a box you draw, while detection and calibration keep the full frame (new in the next release)
- Windows 10 or later, or an Apple-silicon Mac (macOS — new in the next release)
- For ZWO camera mode: the ZWO camera library (bundled with the app on Windows and macOS, or a folder you choose). On Linux, see ZWO cameras on macOS and Linux
- For timelapse: ffmpeg (installable via winget from the Timelapse tab)
- For weather data: a free OpenWeatherMap API key (see Weather Setup)
- For the all-sky overlay and sun-based timelapse windows: your latitude and longitude, entered on the Settings tab
- For the NINA plugin: NINA 3.x on the same PC
- Check the Logs page for errors
- Open a bug report, attaching a Diagnostics Export if your version has it