David's Astronomy Pages
Notes - Session 1389 (2025-12-30)

 
Bullet Session Aims & Highlights
 - Observing Result
 - Night Summary Plot
 - Session Event Log
Bullet Operational Issues
- Critical Issues (0),  Major Issues (0),  Minor Issues (1),  Small Defects (1),  Continuous Improvement (14)
- Figures (0)
   
Bullet Images from 2025-12-30  >>           
   
2026-01-04
Bullet ObsComm - Observatory's New UDP Based Communication System
   
2026-01-12
Bullet AstroMain - Refactoring the Create/Reopen Session pipeline
   

Session Aims & Highlights (2025-12-30)

Main aims

  1. Targets.  Acquire images of a selection of variable stars, nearby stars, comets & deep sky targets as allowed by sky conditions.

 Equipment & Software

Highlights

NotesNotes

Summary Plots & Logs

Observing Plan
Image
  
Observing Result
Image
   
Image
 
Dome & Scope Slewing Performance
Image
  
Slew/Centering Performance
Image
  
Guiding Performance
Image
  
Sky Conditions (Locate Frames)
Image 
  
Night Sky Summary Plot
Top axis: Sky Brightness at Zenith (in ADU/s)
Lefthand axis: Local Time (hh LT). Righthand axis: Sun Altitude (degs)
Note:  The NorthCam Star Count line is unreliable and should be ignored
(The AstroNorthCam 'Find' Star method is producing many false positives from clouds)
Image   
  
Actual Weather vs Pre-Session Weather Forecast
Image
Image
 
Session Event Log
Time     Event Detail
17:53:47 Session Monitoring AutoStart monitoring for Live Session opportunity between 17:53 & 06:46
17:53:49 Session AutoStarting Session autostarting (17:53)
17:54:01   CCDSoft Restarting CCDSoft being restarted (to set AutoSave No.)
17:54:16 Session Created Session Created (Live, 2025-12-30 S01389, ImageSaveNum: 1389001)
17:54:24   Scope Switched On Telescope Power has been switched on via UPB Switch
17:56:11   Services Started Observatory Services started
17:56:22 Observatory (Auto) Observatory placed in Fully-Automated Mode
17:56:24 Session Pending Session pending (2025-12-30)
17:56:26 Session Initiating Session initiating (2025-12-30)
17:56:45   Camera1 Connected SBIG Camera connected (Set point -25°C)
17:56:53   Plan Requested Observing Plan requested from AstroPlan (1.45.7)
17:58:09   Plan Loaded Observing Plan loaded to queue (Plan ID: 1179)
17:58:50   Telescope Connected Telescope connected (TheSky6)
17:59:14 Session Equilibration Session ready to Open Dome
17:59:59   Dome Opened Dome opened (Opening time 45s, Zigbee 41s)
18:00:02 Session Running Session running
18:00:05   Queue Started Observing Queue started (46 targets selected)
18:00:07     Target Started (NrZen) Target started (Focus Field 0, HIP 106)
18:04:47       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
18:07:28       Focusing Completed Foc1 AutoFocus Completed (Profile No 1, wide)
18:09:49       Focusing Completed Foc1 AutoFocus Completed (Profile No 1)
18:10:10       Focusing Started-Foc2 Foc2 Focusing Started (Secondary Scope, using ShCap)
18:11:26       SoftSuspend Called Soft Suspend called due to Deteriorating Conditions (too few stars)
18:11:58       Focusing Completed Foc2 AutoFocus Completed (Profile No 2, wide)
18:13:48       Focusing Completed Foc2 AutoFocus Completed (Profile No 2)
18:13:51   Critical Cloud Alert Critical Cloud Alert (Obs.Manager will close the Dome)
18:13:53   HardSuspend Called Hard Suspend called due to Critical Conditions (cloud)
18:14:09     Target Aborted (NrZen) Target aborted (Focus Field 0, HIP 106) due to cloud
18:14:12     Target Aborted (1/46) Target aborted (1/46, C/2025 T1 (ATLAS)) due to Unknown Reason
18:14:14   Queue Paused Queue paused for Session Suspension
18:14:16 Session Suspending Session suspending
18:15:01   Dome Closed Dome closed (Closing time 48s, Zigbee 43s)
18:15:04 Session Suspended Session suspended
18:27:52     Target Cancelled Target cancelled (1/46, C/2025 T1 (ATLAS)) due to cloud
18:47:37     Target Cancelled Target cancelled (2/46, M31 w/AT2025agmm) due to cloud
18:56:06 Session Resuming Session resuming
18:56:51   Dome Opened Dome opened (Opening time 45s, Zigbee 41s)
18:56:54 Session Running Session running
18:56:56   Queue Resumed Observing Queue resumed
18:56:58     Target Started (3/46) Target started (3/46, GCVS TT Ari)
19:02:47       Focusing Skipped Foc1 focusing skipped - unable to find a star (TCF-LSI)
19:08:31     Target Completed Target partially completed (3/46, GCVS TT Ari)
19:08:35     Target Started (4/46) Target started (4/46, 61 Cyg)
19:13:59     Target Completed Target completed (4/46, 61 Cyg)
19:14:04     Target Started (5/46) Target started (5/46, GCVS SS Cyg)
19:19:18       SoftSuspend Called Soft Suspend called due to Deteriorating Conditions (too few stars)
19:22:43   Critical Cloud Alert Critical Cloud Alert (Obs.Manager will close the Dome)
19:22:45   HardSuspend Called Hard Suspend called due to Critical Conditions (cloud)
19:22:53     Target Aborted (5/46) Target aborted (5/46, GCVS SS Cyg) due to cloud
19:22:55   Queue Paused Queue paused for Session Suspension
19:22:57 Session Suspending Session suspending
19:23:54   Dome Closing Dome closure hasn't finished after 60s (ShutterState=Closing)
19:25:14 Session Suspended Session suspended
19:25:44   Pulsar Dome Recovering Dome
19:25:57   Pulsar Dome Restarting Dome Controller
19:26:52   Pulsar Dome Dome Controller has been restarted
19:27:04   Pulsar Dome Dome Service has been restarted
19:27:44   Telescope Connected Telescope connected (TheSky6)
19:28:54   Dome Closed Dome closed (Closing time 45s, Zigbee 357s)
19:29:24 Session Resuming Session resuming
19:30:09   Dome Opened Dome opened (Opening time 45s, Zigbee 41s)
19:30:11 Session Running Session running
19:30:13   Queue Resumed Observing Queue resumed
19:30:16     Target Started (6/46) Target started (6/46, GCVS BL Lac)
19:30:31       Dome Unparked Dome unparked
19:36:11     Target Completed Target partially completed (6/46, GCVS BL Lac)
19:36:16     Target Started (7/46) Target started (7/46, M31 w/M31N 2025-10a?)
19:56:14     Target Completed Target completed (7/46, M31 w/M31N 2025-10a?)
19:56:18     Target Started (8/46) Target started (8/46, M31 w/AT2025ahch)
20:00:11       Focusing Skipped Foc1 focusing skipped - star is too dim (TCF-LSI)
20:04:53       SoftSuspend Called Soft Suspend called due to Deteriorating Conditions (too few stars)
20:08:03       SoftSuspend Cancelled Soft Suspend is cancelled due to improved conditions
20:08:33       SoftSuspend Called Soft Suspend called due to Deteriorating Conditions (too few stars)
20:09:13       SoftSuspend Cancelled Soft Suspend is cancelled due to improved conditions
20:16:22     Target Completed Target completed (8/46, M31 w/AT2025ahch)
20:16:26     Target Started (9/46) Target started (9/46, GCVS U And)
20:19:47       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
20:22:10       Focusing Completed Foc1 AutoFocus Completed (Profile No 3)
20:31:16     Target Completed Target completed (9/46, GCVS U And)
20:32:40     Target Started (10/46) Target started (10/46, Gliese 65)
20:38:43       Focusing Skipped Foc1 focusing skipped - star is too dim (TCF-LSI)
20:39:31       SoftSuspend Called Soft Suspend called due to Deteriorating Conditions (too few stars)
20:43:11       SoftSuspend Cancelled Soft Suspend is cancelled due to improved conditions
20:44:21       SoftSuspend Called Soft Suspend called due to Deteriorating Conditions (too few stars)
20:46:13     Target Completed Target completed (10/46, Gliese 65)
20:46:15   Queue Paused Queue paused for Session Suspension
20:46:16 Session Suspending Session suspending
20:47:06   Dome Closed Dome closed (Closing time 50s, Zigbee 44s)
20:47:09 Session Suspended Session suspended
21:04:34     Target Cancelled Target cancelled (11/46, SN 2025aedz) due to cloud
21:16:44     Target Cancelled Target cancelled (12/46, GCVS RX And) due to cloud
21:26:12     Target Cancelled Target cancelled (13/46, GCVS ER UMa) due to cloud
21:46:13     Target Cancelled Target cancelled (14/46, AT2024sje) due to cloud
21:58:22     Target Cancelled Target cancelled (15/46, GCVS FU Ori) due to cloud
22:13:52     Target Cancelled Target cancelled (16/46, C/2025 Q3 (ATLAS)) due to cloud
22:29:12     Target Cancelled Target cancelled (17/46, C/2022 E2 (ATLAS)) due to cloud
22:49:43     Target Cancelled Target cancelled (18/46, LEDA 68428 w/SN2025acqv) due to cloud
23:03:05     Target Cancelled Target cancelled (19/46, GCVS FO Ori) due to cloud
23:16:01     Target Cancelled Target cancelled (20/46, GCVS CN Ori) due to cloud
23:25:49     Target Cancelled Target cancelled (21/46, GCVS U Gem) due to cloud
23:45:34     Target Cancelled Target cancelled (22/46, AT2025agtl) due to cloud
00:07:35     Target Cancelled Target cancelled (23/46, AT2025ahjt) due to cloud
00:29:34     Target Cancelled Target cancelled (24/46, AT2025aglw) due to cloud
00:43:36     Target Cancelled Target cancelled (25/46, GCVS DX Cnc) due to cloud
01:02:46     Target Cancelled Target cancelled (26/46, AT2025afsx) due to cloud
01:14:39     Target Cancelled Target cancelled (27/46, GCVS SY Cnc) due to cloud
01:25:32     Target Cancelled Target cancelled (28/46, GCVS RZ LMi) due to cloud
01:38:28     Target Cancelled Target cancelled (29/46, GCVS RR Leo) due to cloud
02:01:33     Target Cancelled Target cancelled (30/46, 3I/ATLAS) due to cloud
02:21:53     Target Cancelled Target cancelled (31/46, MCG +7-28-15 w/SN2025adje) due to cloud
02:44:13     Target Cancelled Target cancelled (32/46, VV 410 w/SN2025hjz) due to wind
03:06:33     Target Cancelled Target cancelled (33/46, LEDA 104161 w/AT2022qvr) due to cloud
03:13:34 Session Resuming Session resuming
03:14:19   Dome Opened Dome opened (Opening time 45s, Zigbee 41s)
03:14:21 Session Running Session running
03:14:23   Queue Resumed Observing Queue resumed
03:14:26     Target Started (34/46) Target started (34/46, UGC 5381 w/AT2025ahep)
03:19:54       SoftSuspend Called Soft Suspend called due to Deteriorating Conditions (too few stars)
03:21:50   Critical Cloud Alert Critical Cloud Alert (Obs.Manager will close the Dome)
03:21:52   HardSuspend Called Hard Suspend called due to Critical Conditions (cloud)
03:21:55     Target Aborted (34/46) Target aborted (34/46, UGC 5381 w/AT2025ahep) due to cloud
03:21:57   Queue Paused Queue paused for Session Suspension
03:22:00 Session Suspending Session suspending
03:22:50   Dome Closed Dome closed (Closing time 50s, Zigbee 43s)
03:22:53 Session Suspended Session suspended
03:28:33     Target Cancelled Target cancelled (34/46, UGC 5381 w/AT2025ahep) due to cloud
03:32:56 Session Resuming Session resuming
03:33:41   Dome Opened Dome opened (Opening time 45s, Zigbee 41s)
03:33:44 Session Running Session running
03:33:46   Queue Resumed Observing Queue resumed
03:33:48     Target Started (35/46) Target started (35/46, LEDA 924001 w/SN2022ztk)
03:33:50       SoftSuspend Called Soft Suspend called due to Deteriorating Conditions (too few stars)
03:34:07       SoftSuspend Cancelled Soft Suspend is cancelled due to improved conditions
03:38:17       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
03:41:02       Focusing Completed Foc1 AutoFocus Completed (Profile No 4)
03:57:03     Target Completed Target completed (35/46, LEDA 924001 w/SN2022ztk)
03:57:07     Target Started (36/46) Target started (36/46, SBS 1301+594 w/SN2024flj)
04:00:54       Focusing Skipped Foc1 focusing skipped - star is too dim (TCF-LSI)
04:17:49     Target Completed Target completed (36/46, SBS 1301+594 w/SN2024flj)
04:17:54     Target Started (37/46) Target started (37/46, AT2023ae (CV))
04:23:00       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
04:25:18       Focusing Completed Foc1 AutoFocus Completed (Profile No 5)
04:31:19     Target Completed Target completed (37/46, AT2023ae (CV))
04:31:23     Target Started (38/46) Target started (38/46, 29P/Schwassmann-Wachmann)
04:35:40       Focusing Skipped Foc1 focusing skipped - star is too dim (TCF-LSI)
04:50:50     Target Completed Target completed (38/46, 29P/Schwassmann-Wachmann)
04:50:55     Target Started (39/46) Target started (39/46, NGC 5332 w/SN2023jkq)
04:54:19       Focusing Skipped Foc1 focusing skipped - star is too dim (TCF-LSI)
05:10:40     Target Completed Target completed (39/46, NGC 5332 w/SN2023jkq)
05:11:31     Target Started (40/46) Target started (40/46, T CrB)
05:15:03       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
05:17:30       Focusing Completed Foc1 AutoFocus Completed (Profile No 6)
05:22:28     Target Completed Target completed (40/46, T CrB)
05:22:32     Target Started (41/46) Target started (41/46, UGC 4316 w/SN2025advo)
05:26:57       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
05:29:39       Focusing Completed Foc1 AutoFocus Completed (Profile No 7)
05:45:43     Target Completed Target completed (41/46, UGC 4316 w/SN2025advo)
05:45:47     Target Started (42/46) Target started (42/46, NGC 3106 w/SN2025aauj)
06:08:21     Target Completed Target completed (42/46, NGC 3106 w/SN2025aauj)
06:08:25     Target Started (43/46) Target started (43/46, UGCA 312)
06:13:16       Focusing Skipped Foc1 focusing skipped - star is too dim (TCF-LSI)
06:29:24     Target Completed Target completed (43/46, UGCA 312)
06:29:28     Target Started (44/46) Target started (44/46, AT2022cpr (CV))
06:33:55       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
06:36:04       Focusing Completed Foc1 AutoFocus Completed (Profile No 8)
06:42:05     Target Completed Target completed (44/46, AT2022cpr (CV))
06:42:09     Target Started (45/46) Target started (45/46, GCVS CY Lyr)
06:45:55       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
06:46:44       Focusing Failed Foc1 focusing failed - star lost
06:50:29     Target Completed Target completed (45/46, GCVS CY Lyr)
06:51:45     Target Started (46/46) Target started (46/46, GCVS CI Cyg)
06:55:06       Focusing Started-Foc1 Foc1 Focusing Started (TCF-S)
06:57:30       Focusing Completed Foc1 AutoFocus Completed (Profile No 10)
07:00:45     Target Completed Target completed (46/46, GCVS CI Cyg)
07:00:48   Queue Completed Job Queue completed
07:00:51 Session Closing Session closing
07:01:46   Dome Closed Dome closed (Closing time 50s, Zigbee 44s)
07:02:08   Dome Parked Dome parked (parking time 15s), Az: 90.1 deg
07:03:00   Telescope Parked Telescope parked (parking time 47s total)
07:03:24   Telescope State Handbox reads 'Scope parked Turn scope off.'
07:03:46   Telescope Switched Off Telescope Power has been switched off via UPB Switch.
07:05:13   Services Stopped Night Services stopped
07:05:16 Session Finishing Session Finishing started (Create Fits Summary, Transfer Files)
07:06:13     Dome (Find Park) Find Park started (Search Az 88.0 to 92.0°, Step 0.2°, Narrow)
07:07:01     Dome Find Park found (Best Park Az 89.6°)
07:07:07     Dome Dome has been synced at park position (Az 90.0°, Adjustment: +0.3°)
07:07:09   Dome Parked Dome parked
07:07:11   Dome Charging Dome is parked and re-charging Ok (9mA)
07:07:13 Session Finished Session Finished
 
Session Alerts & Alarms
Time     Type       Name Detail
18:00:55 Red Alert Dome Dome didn't appear to move during the last telescope slew
18:57:40 Yellow Alert Dome Discrepency Difference between Dome Az and Telescope Az is > 8 deg (GCVS TT Ari)
18:57:42 Red Alert Dome Dome didn't appear to move during the last telescope slew
19:09:21 Yellow Alert Dome Discrepency Difference between Dome Az and Telescope Az is > 8 deg (61 Cyg)
19:09:23 Red Alert Dome Dome didn't appear to move during the last telescope slew
19:14:42 Yellow Alert Dome Discrepency Difference between Dome Az and Telescope Az is > 8 deg (GCVS SS Cyg)
19:23:54 Red Alarm Dome Closing Dome closure hasn't finished after 60s (ShutterState=Closing)
19:25:44 Red Alert Dome Alert Dome hasn't reached 'Closed' state after 120s during HardSuspend
23:51:19 Red Alert Dome Alert Shutter Data isn't being refreshed
23:51:21 Yellow Alert Dome Shutter Pulsar Shutter appears to be asleep (last fresh data was at 23:31:18)
23:51:41 Green Clear Dome Shutter Pulsar Shutter has woken up (fresh data at 23:51:33, outage 20.4 min)
23:51:45 Green Clear Dome Alert Shutter Data has resumed updating
07:07:11 Green Clear Dome Charging Dome is parked and re-charging Ok (9mA)
 

Back to Top


Operational Issues (2025-12-30 S1389)

[ Prev | Next ]

Critical Issues

Major Issues

Minor Issues

Small Defects

Continuous Improvement

[ Prev | Next ]

Back to Top Issue,  Back to Top


Fig 1

 

[ Prev | Next ]

Back to Top Issue,  Back to Top


2026-01-04


ObsComm - Observatory's New UDP Based Communication System

Introduction
ObsComm is a new Communication System for the Observatory based on the UDP protocol..

The need for a communication system for adhoc and custom communication across the observatory and house computers has been recognised for some time. This will operate in addition to existing IP/TCP communication of specific record between computers. 

Based on discussions with Copilot  the UDP protocol has been selected for the communication system, following which code was developed again with CoPilot to put into a shared UpbComms.vb file/module with class definitions for UdpBroadcaster, UdpListener, UdpNode and UdpMessage.  UdpNode is a node that comprises both a listener and a broadcaster to hide the underlying mechanism and allow programs to work with a single object reference (ObsComm).

AstroMain is the first program setup to use the new UDP system, but other programs in the AstroSuite will be set up in due course.

The basic setup is as follow.  One new declaration is placed in the program's globals.vb or general.vb module :
   Public ObsComm As UdpNode   
ObsComms is then set up from the program's Load() routine :
   ObsComm = New UdpNode(5000, "AstroMain")
   AddHandler ObsComm.MessageReceived, AddressOf HandleObsCommMessage
   ObsComm.StartListening()

Messages are broadcast to the network from anywhere in the program using code like :
     ObsComm.SendMessage("Hello World")

A routine 'HandleObsCommMessage()'  is added to the program to handle received messages.  The contents of the handler will be different in each program according to the communication plan which is still being developed.
   Public Sub HandleObsCommMessage(msg As UdpMessage)
   End Sub


UdpMessage currently has 6 string fields
   RemoteAddress,  senderComputer, senderApp, TimeStamp, MessageType, Message/Payload

Implemented in AstroCommon and AstroMain 3.79.13 on 2025-01-04

AstroMain's 'HandleObsCommMessage()'  routine is placed within the Manager module, but outside of the ObsManager class object

Analysis

The precise message types & payloads to be used need to developed and the requirements of program specific handlers need to be defined.
 - What is UDP used for in the observatory ?
 - What fields should every message contain ?
 - What message types do I need ?
 - What does each app broadcast ?
 - What does each app listen for ?
 - What timestamp format ?
 - What payload format ?
 - Is a UdpMessage class required?
 - Is protocol versioning required ?

What is UDP used for in the observatory ?
UDP is intended to provide general and custom communication between the different AstroSuite programs and computers running within the Observatory/House Network.
  - The new system will eventually replace the existing use of flag files and the like
  - The new system will not replace the existing use of regular TCP/IP communication of data records (ObsEnv, CloudSensor.WeatherData)
  - Optionally the new UDP system might replace the existing ObsCamControl (TCP/IP) system.


Current Flag File messages:
 Broadcast Functions:

 AstroMain Disconnect AstroGuard Services()- SU.BaseFolder\Disconnect.dat         AstroGuard
 AstroMain ConnectAstroGuardServices()     - SU.BaseFolder\Connect.dat            AstroGuard
 AstroMain WriteRestartDomeFlag()          - SU.BaseFolder\RestartDome.dat        AstroGuard
 AstroMain RestartTheSky6()                - SU.BaseFolder\RestartTheSkyFlag.dat  AstroPlan
 AstroMain RestartTheSky6()                - SU.BaseFolder\RestartTheSkyFlag.dat  AstroVOE
 AstroMain SetFlagChanged("Session")       - Flag_SessionChanged.dat              AstroPlan
 AstroMain SetFlagChanged("Plan")          - Flag_PlanChanged.dat                 AstroPlan
 AstroMain SetFlagChanged("Event")         - Flag_EventChanged.dat                AstroPlan
 AstroMain SetFlagChanged("Alert")         - Flag_AlertChanged.dat                AstroPlan
 AstroMain SetFlagChanged("NewSession")    - Flag_NewSessionChanged.dat           AstroPlan
 AstroMain SetFlagChanged("ResumeSession") - Flag_ResumeSessionChanged.dat        AstroPlan
 AstroMain SetFlagChanged("EndSession")    - Flag_EndSessionChanged.dat           AstroPlan
 AstroMain OpenTargetInAstroPlan(TargetID) - CCD Imaging\Common\OpenTarget.dat    AstroPlan
 AstroSN   OpenTargetInAstroPlan(TargetID) - CCD Imaging\Common\OpenTarget.dat    AstroPlan

 AstroMain ObsManager.InitiateNewPlan      - SU.BaseFolder \CreatePlanFlag.dat    AstroPlan

 Listening Functions
 AstroMain RemoteAbortListener()           - CCD Imaging\AbortAstroMainJob.dat      from ?
 AstroMain RemoteAbortListener()           - CCD Imaging\KillAstroMainJob.dat       from ?
 AstroMain ObsManager.MainLoop, WaitforNewPlan - SU.BaseFolder \CreatePlanFlag.dat  from AstroPlan
 AstroMain CheckForNewToO()                - SU.BaseFolder \ToO_File.dat"           from AstroPlan/AstroVOE

 AstroPlan WsFileWatcher.Start             - CCD Imaging\CreatePlanFlag.dat         from AstroMain
 AstroPlan WsFileWatcher2.Start            - CCD Imaging\RestartTheSkyFlag.dat      from AstroMain
 AstroPlan FlagChanged("Session")          - Flag_SessionChanged.dat
 AstroPlan FlagChanged("Plan")             - Flag_PlanChanged.dat                 AstroMain
 AstroPlan FlagChanged("Event")            - Flag_EventChanged.dat                AstroMain
 AstroPlan FlagChanged("Alert")            - Flag_AlertChanged.dat                AstroMain
 AstroPlan FlagChanged("NewSession")       - Flag_NewSessionChanged.dat           AstroMain
 AstroPlan FlagChanged("ResumeSession")    - Flag_ResumeSessionChanged.dat        AstroMain
 AstroPlan FlagChanged("EndSession")       - Flag_EndSessionChanged.dat           AstroMain
 AstroPlan RemoteTargetOpener()            - CCD Imaging\Common\OpenTarget.dat"   AstroMain

One thing that is commonly used in flag files is that the deletion of flag file is used as indicator that request has been carried out and/or heard

What fields should every message contain ?
 
- IP of the computer sending the message           (senderIP as string)
  - Name of the Computer sending the message   (senderComputer as string)
  - Name of the Application sending the message (senderApp as string)
  - TimeStamp for the time that message sent       (senderTimeStamp as string)
  - The message's MessageType.                           (messageType)
  - The message or payload                                     (message)

  - Name of the Audiance Computer  ?                   (forComputer as string)    (default *)
  - Name of the Audiance App ?                              (forApp as string)              (default *)

 The Listener will also add
  -  TimeStamp for the the time that message was received   (receivedTimeStamp)

Update 2026-01-05
- AstroMain - AstroPlan Notification Event communications added (replacing FlagFiles)
- AstroMain - AstroGuard Command/Completions Events added: ConnectServices/DisconnectServices (replacing FlagFiles)
- AstroMain - AstroObsCam Action Events added (replacing TCP/IP comms)
- AstroMain - AstroPlan OpenTarget Events added: (replacing FlagFiles)
- AstroSN - AstroPlan OpenTarget Events added: (replacing FlagFiles)

 

ObsComm Protocol v2 - Specification  (2026-01-06)

A lightweight, structured UDP messaging protocol for inter‑application communication across the observatory ecosystem.

1. Purpose

ObsComm v2 defines a consistent, deterministic message format for communication between astronomy applications running on one or more computers. It supports:

The protocol is intentionally simple, human readable, and easy to extend.

2. Message Structure

Every ObsComm v2 message contains the following fields:

All fields are required.

3. MessageType Semantics

3.1 Command
A request for another application to perform an action.

Must be directed (TargetApp and/or TargetComputer not "*") unless intentionally broadcast

3.2 Response
A reply to a command.

3.3 Event
A broadcast notification. ' broadcast state change'

Typically uses TargetApp="*" and TargetComputer="*"

3.4 Error

Indicates a failure condition - "something went wrong"

3.5 Other types

4. Region Rules

5. Routing Logic (Receiver‑Side)

6. Examples

7. Versioning

Include a version field in the message header if you anticipate future changes:
   ProtocolVersion = "2.0"

Receivers should ignore messages with unsupported versions.

8. Design Principles

ObsComm v2 is built on:

Back to Top


2026-01-12


AstroMain - Refactoring the Create/Reopen Session pipeline

1.0 Introduction

AstroMain Observatory Control Progam has evolved over many years, growing into a sophisticated application that supports live imaging, monitoring, analysis, and scientific workflows. Much of the original code was developed incrementally in response to real-world operational needs. While this approach delivered a powerful system, it also created areas where responsibilities blurred, sequencing became fragile, and behaviour became difficult to reason about.

This refactoring project aims to bring clarity, structure, and long-term maintainability to the system in the area of Create/Reopen Sessions without compromising operational stability. The goal is not to rewrite everything, but to map the existing behaviour, extract responsibilities, and introduce a clean, layered architecture that future-proofs the application.

These notes document the design thinking, implementation steps, and technical details behind the refactor.  Review showed that there was a clear division of programe operation into Active Mode and Passive Mode.

This refactoring effort is about more than cleaner code. It is about building a robust, maintainable foundation for the Observatory's automation system. By mapping legacy behaviour, clarifying responsibilities, and introducing a structured pipeline for both Active and Passive Modes, the system becomes easier to understand, safer to modify, and more resilient in real-world operation.


2.0 Design Overview

2.1 Goals

2.2 Architectural Principles


3.0 Active Mode Pipeline

Pipeline

3.1 Pipeline Diagram

 
┌──────────────────────────────┐   ┌──────────────┐
│ btnLiveSession.Click         │   │              │
│ btnGeneralSession.Click      │   │  ObsManager  │         
│ btnTestSession.Click         │   │              │ 
│ comboSessionList.Changed     │   └───┬──────────┘
│ btnSelectSessionFolder.Click │       │
└──────────────┬───────────────┘       │
               │                       │
┌──────────────▼───────────────┐       │
│ RequestActiveSessionFromUI() │       │
└──────────────┬───────────────┘       │
               │                       │
┌──────────────▼───────────────────────▼─────┐    
│ RequestActiveSession()                     │ 
│ - Phase 1. CreateActiveSessionIdentity()   │     
│ - Phase 2. ValidateActiveSessionIdentity() │
│ - Phase 3. Close Previous Session          │
│ - Phase 4. ActivateActiveSession()         │   
└──────────────┬─────────────────────────────┘
               │
┌──────────────▼─────────────────────────────┐
│ ActivateActiveSession()                    │     
│ - Phase 5  CreateSessionInDatabase()       │    
│ - Phase 6. StartActiveSessionPreparation() │    
│ - Phase 7. SetupSessionFoldersAndFiles()   │   
│ - Phase 7. BeginActiveSessionFiles()       │    
│ - Phase 8. PrepareUIForActiveSession()     │    
└──────────────┬─────────────────────────────┘
┌──────────────▼─────────────────────────────┐
│ Threaded Operation                         │     
│ - Phase 10. InitialiseActiveSessionState() │    
│ - Phase 11. BeginActiveSessionFiles()      │
│ - Set Completion Flag                      │
└─────────┬───────────────────────┬──────────┘  
          │                       │
┌─────────▼───────────┐    ┌──────▼───────┐  
│ Manual Operatitions │    │  ObsManager  │
└─────────────────────┘    └──────────────┘ 

3.2  Active Pipeline Phases

Phase 1 - Session Identity Creation

Handled by CreateActiveSessionIdentity()

Phase 2 - Validation

Handled by ValidateActiveSessionIdentity().  Helped by ConfirmNewSession() & ValidateProposedSession()

Phase 3 - Session Closing

Phase 4 - Activation Pipeline Entry

Pass identity into ActivateActiveSession(identity).

Phase 5 - Insert Session in Database

Handled by CreateSessionInDatabase(identity)

Phase 6 - StartActiveSessionPreparation

StartActiveSessionPreparation(identity)

Phase 7 - Setup Storage

Handled by SetupSessionFoldersAndFiles().

Phase 8 - Begin Active Session File

Handled by BeginActiveSessionFile().

Phase 9 - Setup UI for Session

Handled by objConsole.PrepareUIForActiveSession()

Phase 10 - State Initialisation

Handled by InitialiseActiveSessionState(), as threaded operation.

Phase 11 - Runtime Initialisation

Handled by InitialiseActiveSessionRuntime(), as threaded operation.


4.0 Passive Mode Pipeline

4.1 Passive Pipeline Diagram

┌────────────────────────────────┐     
│  btnSelectLastSession.Click    │      
│  btnSelectPriorSession2.Click  │               
│  btnSelectPriorSession3.Click  │      
└──────────────┬─────────────────┘      
               │                      
┌──────────────▼───────────────┐
│ SelectPassiveSessionFromUI() │
└──────────────┬───────────────┘
               │
┌──────────────▼────────────────────────┐
│ SelectPassiveSession()                │
│  Phase 1. ValidatePassiveSession()    │
│  Phase 2. CloseAllFiles()             │
│  Phase 3. SetupPassiveSession()       │
│  Phase 4. OpenPassiveSessionFiles()   │
│  Phase 5. PrepareUIForPassiveSession()│
└──────────────┬────────────────────────┘
               │
┌──────────────▼─────────┐
│ Manual Operatitions    │
└────────────────────────┘

4.2 Passive Pipeline Phases

 Phase 1 - Session Identity Creation

Phase 2 - Validation

Phase 3 - Storage Setup

Phase 4 - State Initialisation

Phase 5 - Runtime Initialisation

Phase 6 - UI Transition


5.0 New Code Components (Types and Routines)

5.1 New Modules

5.2  New Classes

5.3 New Enums

5.4 New Routines - Active Mode

5.4 New Routines - Passive Mode

5.5 New Routines - Helpers


6.0 Replaced Code Components

As part of the refactoring of the Create/Reopen Session pipeline, several legacy routines have been replaced, consolidated, or re-scoped. The goal was not to change behaviour, but to reorganise responsibilities into clearer, more maintainable units. This section documents the routines that have been superseded, the new routines that replace them, and the reasoning behind each change.

Routines Replaced by New Pipeline Process

Routines Modified by New Pipeline Process Routines

Remove Temporarily Employed Flags


7.0 Technical Details

Identity Objects

Identity objects use Properties instead of fields to support validation, logging hooks, immutability control, binding, and future evolution.

Logging and Reporting

Logging remains inline to preserve exact execution order, real-world diagnostics, timing analysis, and hardware interaction traces.

UI Orchestration


8.0 Future Work

Back to Top