Implemented and running fine.
Currently all weather checks are carried inside the RTS2 dome component. The nice thing about that is that there is a single instrument to fail and prevent the dome from closing. Also this single component can be easily tested and is known to run well. (Operating on FRAM for ages…) But it has the following drawbacks:
This drawbacks should be resolved by following code changes:
In short: Single devices provide their opinion about whether to open or not over normal RTS2 channels. Some may be setup as mandatory in the system configuration. Multiple-instance connections, originally rather theoretical, should be tested and habilitated.
Single device needs to connect easily to multiple running instances of RTS2 (e.g. cloud sensor needs to connect with two RTS2 instances to provide information to both).
To do this, the following must be assured:
Centrald will hold a list of devices which are required for system operation. This list will hold names of devices which must be present to switch system to standby or on. If some of the devices is missing, centrald will reject any requests to switch state and will generate warning email.
Before system switches to a higher state, it will ask all devices for an update. Devices state can list that device block switching to standby or on. If such a bit is set at least on one device, centrald will reject mode switching and will record that mode switching was rejected. If all devices agree, centrald will switch state and distribute message about switched state to all clients connected.
If during request for state of the devices any connection sends a command to change state, the request will be canceled, and a new request (if needed) will be issued.
Centrald asks for state switching confirmation only if state is higher then the actual state (e.g. it ask switching from off to standby and on, and from standby to on). It does not ask any confirmation if request is to lower or same state.
When centrald starts, it has two options:
This procedure is implemented in order to not to close dome roof on RTS2 restart.
Following solution was implemented and runs successfully on all systems: