SeeVar - automated observatory

“De kosmos is erg groot, en voor een heer alleen is zij eigenlijk te veel. Maar met een groot denkraam komt men een heel eind.” (Vrij naar Heer Bommel)

Hi, Great news!
Is it possible to control the Seestar with this system and a Linux Desktop with Python?
If yes (like I think because Raspberry is in Linux), how?
Thank in avance!
JBD

Hi Ed,

I have turned Seestar on, it is in station mode, I have checked it’s IP address and entered it into config.toml, I have regenerated fleet as described and started the dashboard. It seems there is no communication between the scope and Raspi. Or am I wrong?

All services are running.

What is missing in your opinion?

Ah, that is the older version that uses JSON/RPC
This can no longer be used … ZWO blocked that quite recently. I am working on a new version that uses alpaca. Stay tuned, as I have not yet tested that fully ( something clouds and rain )

ASCOM Alpaca Protocol: Mac Observatory Automation in 2026 <

Many thanks!

Otherwise what will be the procedure to update the code on my Raspi? It is not necessary to run a complete setup again, I guess…

If there is something to test or install then don’t hesitate to share with me.

I found a lot of interesting readings in dev/logic :-).

Clear skies!

This is nice to do >

~/seevar/.venv/bin/pip install matplotlib

~/seevar/.venv/bin/python ~/seevar/core/preflight/horizon_scanner_v2.py
Takes quite some time though


That is my result, yours has to be different of course

~/seevar/.venv/bin/python ~/seevar/core/preflight/horizon.py
~/seevar/.venv/bin/python ~/seevar/core/preflight/nightly_planner.py
~/seevar/.venv/bin/python ~/seevar/dev/tools/horizon_audit.py

ed@SeeVar-DEV:~/seevar $ ~/seevar/.venv/bin/python ~/seevar/dev/tools/horizon_audit.py
╔═══════════════════════════════════════════════════════╗
║ SeeVar Horizon Audit — Real Camera-Scanned Profile ║
╚═══════════════════════════════════════════════════════╝

Horizon source: BOX MODEL FALLBACK
Observer: 52.38°N 4.60°E, 5m
Targets in plan: 26
Dark window: 22:25 – 05:10 (6.8h)

═══════════════════════════════════════════════════════════
CLEAR: 26 (observable tonight)
MARGINAL: 0 (<30 min clear window)
BLOCKED: 0 (behind buildings/trees)
BELOW 15°: 0 (never rises high enough)
BAD COORDS: 0
═══════════════════════════════════════════════════════════

TOP OBSERVABLE TARGETS (26 total)
Name Type Peak Hz Margin Clear Best


T UMi SR 69.1 36.0 +33.1° 405m 00:25
DO Dra UG/DQ 70.8 36.0 +34.8° 405m 22:40
R Cam M 58.7 36.0 +22.7° 405m 01:10
TW Boo RRAB 78.5 17.6 +60.9° 405m 01:40
TT Boo UGSU 78.2 17.6 +60.6° 405m 01:55
VW UMa SRB 72.5 36.0 +36.5° 405m 21:55
S UMi M 63.8 36.0 +27.8° 405m 02:25
R UMa M 73.7 36.0 +37.7° 405m 21:40
VY UMa SRB 75.1 36.0 +39.1° 405m 21:40
TV Boo RRC/BL 79.9 17.6 +62.3° 390m 01:10
R CVn M 77.0 17.6 +59.4° 360m 00:40
T CVn SRA 69.0 17.6 +51.4° 315m 23:25
TX CVn ZAND+ELL 74.2 17.6 +56.6° 300m 23:40
LN UMa UGZ/IW+VY 76.0 31.8 +44.2° 285m 20:55
ST LMi AM 62.6 17.6 +45.0° 255m 21:55
V0533 Her NA+NL/VY 65.5 29.9 +35.6° 240m 02:55
AR UMa AM 80.4 17.6 +62.8° 210m 22:10
V0344 Lyr UGSU 61.8 30.3 +31.5° 210m 02:55
R Lyr SRB 60.5 31.1 +29.4° 210m 02:55
RR Leo RRAB 61.4 17.6 +43.8° 195m 20:55
RR Lyr RRAB/BL 55.2 32.8 +22.4° 165m 02:55
U LMi SRA 73.5 17.6 +55.9° 135m 20:55
R LMi M 72.0 17.6 +54.4° 135m 20:40
RW Cnc RRAB 66.5 17.6 +48.9° 135m 20:25
RS Cnc SRB 68.2 17.6 +50.6° 120m 20:25
EG Cnc UGWZ 63.8 17.8 +46.0° 105m 20:25

Science potential: 26 targets × avg 44° margin above horizon
Total clear observing: 123h 30m across all targets
Types: 5 M, 4 SRB, 3 RRAB, 2 SRA, 2 AM, 2 UGSU, 1 UGWZ, 1 ZAND+ELL, 1 UGZ/IW+VY, 1 SR, 1 UG/DQ, 1 NA+NL/VY, 1 RRAB/BL, 1 RRC/BL

Hi Ed,

I have updated my system. In my opinion Alpaca works, now I can connect to my Seestar:

Here the checks I have done:

(.venv) dl@raspiobs:~/seevar/logs $ curl http://192.168.1.189:32323/management/apiversions
{“ClientTransactionID":0,“ServerTransactionID”:425,“ErrorNumber”:0,“ErrorMessage”:“”,“Value”:[1]}(.venv)

(.venv) dl@raspiobs:~/seevar $ ~/seevar/.venv/bin/python ~/seevar/core/flight/sim_runner.py --targets 1
10:16:49 [INFO] :brain: FSM Initialized in state: IDLE
10:16:49 [INFO] :rocket: SIMULATION MODE ENGAGED - Hardware checks disabled.
10:16:49 [INFO] :telescope: Orchestrator starting — SeeVar Federation v2.0.0 (FSM-Governed)
10:16:50 [INFO] STATE → PREFLIGHT | Night sky confirmed (or forced by Simulation).
10:16:50 [INFO] :airplane_departure: PREFLIGHT sequence initiated.
10:16:50 [INFO] [A3] Session init baseline
10:16:50 [INFO] [SIM][A3] Session init — mock telemetry generated
10:16:50 [INFO] STATE → PLANNING | Preflight complete.
10:16:50 [INFO] :clipboard: Loading mission targets…
10:16:50 [INFO] STATE → ABORTED | No mission targets available.
10:16:50 [INFO] Simulation complete. Terminating process.

(.venv) dl@raspiobs:~/seevar $ ~/seevar/.venv/bin/python ~/seevar/core/preflight/nightly_planner.py
— INITIATING NIGHTLY TRIAGE —
[+] Catalog total : 0
[-] Deferred by cadence audit : 0
[+] Survive dark : 0
[+] Survive local horizon : 0
[+] Survive +5° margin : 0
[+] Survive required block : 0
[=] Final tonight-plan count : 0
[=] Sector survivors : N=0 E=0 S=0 W=0
Tonight plan secured: tonights_plan.json

(.venv) dl@raspiobs:~/seevar $ ~/seevar/.venv/bin/python ~/seevar/dev/tools/horizon_audit.py

╔══════════════════════════════════════════════════════════╗

║ SeeVar Horizon Audit — Real Camera-Scanned Profile ║

╚══════════════════════════════════════════════════════════╝

Horizon source: PROFILE

Observer: 47.92°N 19.17°E, 223m

Targets in plan: 0

Nothing to audit.

I see as a problem that my canonical A1-A12 flow breaks after A3 and tonights_plan.json is empty, no targets in it.

In which direction should I do further steps?

BR
László

1 Like

I found some problems as well. Kept hitting up to A7, made some patches.
Will work on updates tomorrow. Looks like I have some success ( and finally a clear sky )

These are now waiting for processing, but the fits are there …

-rw-r–r-- 1 ed ed 16594560 Apr 7 00:40 S_UMi_20260406T224016_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:38 TT_Boo_20260406T223843_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:37 TW_Boo_20260406T223710_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:35 TV_Boo_20260406T223551_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:34 R_Cam_20260406T223421_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:32 DO_Dra_20260406T223257_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:31 RY_Dra_20260406T223137_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:29 T_UMi_20260406T222912_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:27 T_CVn_20260406T222725_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:26 TX_CVn_20260406T222608_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:24 ST_LMi_20260406T222451_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:21 AR_UMa_20260406T222123_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:18 U_LMi_20260406T221811_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 7 00:02 AR_UMa_20260406T220213_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 6 23:56 RW_Cnc_20260406T215607_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 6 23:47 RS_Cnc_20260406T214759_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 6 23:40 U_LMi_20260406T214018_Raw.fits
-rw-r–r-- 1 ed ed 16594560 Apr 6 23:26 U_LMi_20260406T212616_Raw.fits

Congrats! I can’t wait to make new update :blush:. I had also clear sky so gathered first lights.
strong text

Hi! Just a quick thought: are you sure both the Seestar and the Raspberry Pi are on the same Wi-Fi frequency (2.4GHz vs 5GHz)? Sometimes Station Mode acts weird if they are on different bands even within the same router. Hope you get it working!

Hi,

thanks for the typ.
Frequency is the same.
My problem starts much earlier. My federation_catalog.json was empty, so now I run again librarian.py, that has filled federation_catalog.json and afterwards I could run a simulation, but now there I have a new error which I will insert at the end of this post.

I would kindly ask @e.delarie if I need somehow to get VSX catalog, as librarian.py told me “VSX catalog not found”. Earlier I have downloaded a huge amount of star data with chart_fetcher.py.

And now the log of the simulation run:
08:22:03 [INFO] ^= FSM Initialized in state: IDLE
08:22:03 [INFO] ^=^z^ SIMULATION MODE ENGAGED - Hardware checks disabled. 08:22:03 [INFO] ^=^t Orchestrator starting ^^t SeeVar Federation v2.0.0 (FSM-Governed)
08:22:04 [INFO] STATE → PREFLIGHT | Night sky confirmed (or forced by Simulation).
08:22:04 [INFO] ^=^{ PREFLIGHT sequence initiated.
08:22:04 [INFO] [A3] Session init baseline
08:22:04 [INFO] [SIM][A3] Session init ^^t mock telemetry generated 08:22:04 [INFO] STATE -> PLANNING | Preflight complete. 08:22:04 [INFO] ^=^s^k Loading mission targets... 08:22:04 [INFO] ^|^e Flight plan locked from tonights_plan.json: 1 target(s) 08:22:04 [INFO] STATE -> FLIGHT | Flight plan locked. 08:22:04 [INFO] [simulation] ignoring real-time window gate for AU CVn 08:22:04 [INFO] [A1] Target lock ^^t AU CVn
08:22:04 [INFO] [A2] Safety gate passed
08:22:04 [INFO] [A9] Exposure plan ^^t exp_ms=5000 08:22:04 [INFO] Executing target via FSM: AU CVn RA=13.17h 08:22:04 [INFO] ^=^t^d FSM State updated to: WORKING 08:22:04 [INFO] [A3] Session init for AU CVn 08:22:04 [INFO] [SIM][A3] Session init ^^t mock telemetry generated
08:22:04 [INFO] [A10] Acquire 1 frame(s) for AU CVn
08:22:04 [INFO] [A10] Executing frame 1/1
08:22:04 [INFO] [A4] SIM Slew command to AU CVn
08:22:04 [INFO] Bridge: [A4] Slew command to AU CVn
08:22:04 [INFO] [A5] SIM Slew verify complete
08:22:04 [INFO] Bridge: [A5] Slew verify complete
08:22:04 [INFO] [A6] SIM Settle complete
08:22:04 [INFO] Bridge: [A6] Settle complete
08:22:05 [INFO] [A7] SIM Pointing verify placeholder
08:22:05 [INFO] Bridge: [A7] Pointing verify placeholder
08:22:05 [ERROR] ^=^r FSM Critical Failure: ‘Header’ object has no attribute ‘parent’
Traceback (most recent call last):
File “/home/dl/seevar/core/flight/fsm.py”, line 54, in execute_target
result = self.sequence.acquire(
^^^^^^^^^^^^^^^^^^^^^^
File “/home/dl/seevar/core/flight/orchestrator.py”, line 252, in acquire
write_fits(out_path, final, header)
File “/home/dl/seevar/core/flight/pilot.py”, line 547, in write_fits
output_path.parent.mkdir(parents=True, exist_ok=True)
^^^^^^^^^^^^^^^^^^
AttributeError: ‘Header’ object has no attribute ‘parent’
08:22:05 [INFO] ^=^t^d FSM State updated to: ERROR
08:22:05 [INFO] [A12] Commit failure state
08:22:05 [INFO] ^}^l FSM Sequence failed for AU CVn
08:22:05 [INFO] STATE → POSTFLIGHT | Target list exhausted.
08:22:05 [INFO] ^=^s^j Flight operations concluded.
08:22:05 [INFO] [simulation] dark acquisition skipped
08:22:05 [INFO] ^= Handing over to Accountant.
08:22:05 [INFO] [simulation] accountant skipped
08:22:05 [INFO] STATE → PARKED | Mission complete.
08:22:05 [INFO] Simulation complete. Terminating process.

1 Like

There is a toggle in config.toml to change whether it is a simulation or not.
But I would like to ask you to report this via github. The aavso forum is not the best spot for this.

Grtz Ed

Hi,

this horizon_scanner is a cool tool! Here’s my site’s profile:

2 Likes