- Clear the anti-flap lock in
lvmecp dome reset
. - Check if the drive is in error state before moving the dome.
- Renamed registers
dome_status[1|2]
todrive_status[1|2]
.
- Wait for status to be output in
lvmecp dome status
before finishing the command.
- Use
pytest-timeout
.
- #33 Add a mode to close the dome using only drive overcurrent to determine when the movement has completed.
- #34 Implement emergency stop command, resetting e-stops, and prevent dome from opening if safety flags are active.
- Added PLC engineering mode status bits to the configuration file.
- If the dome is moving when commanded to open/close, the movement will be stopped before actually open or close.
- Daytime check for dome opening will be ignored if the PLC hardware or software overrides are active.
- Improved the logging of Modbus messages.
- Fixed setting and resetting of the start time for the engineering mode.
- #32 Major refactor of the
Modbus
andModbusRegister
classes. The main change is that the performance has been greatly improved, withModbus.get_all()
going from taking ~0.6 seconds to under 0.1. The register and coil blocks are now read completely, in chunks as large as the device will accept, as opposed to before, when we would read each variable with one read command (although the connection was not closed in between). Note that several methods and variables have been renamed; see the PR for details.
- Report last time the heartbeat was set in the PLC in the
status
command. - Report timeout of the engineering mode.
- Report ``last_heartbeat_set` as an ISO string.
- Bump
CLU
to 2.4.3.
- Do not command the dome to close during daytime if it is already closed.
- #29 Add a new engineering mode that can be used to bypass the heartbeat and to allow the dome to open during daytime. Part of RORR RID-025.
- #30 Prevent the dome from opening during daytime. Close if daytime is detected. Part of RORR RID-025.
- #31 Prevent the dome from opening multiple times in a short period of time. RORR RID-019.
- Add reporting of roll-off error state and allow resetting on error.
- Prevent the PLC modules from running before the actor is ready.
- #28 Removed the automatic setting of the heartbeat variable. Added a
heartbeat
command that will be triggered by a heartbeat middleware.
- Restore GS3 status registers and fix addresses for roll-off lockout and error.
- Updated workflows.
- Add a lock for the status command to prevent multiple concurrent requests.
- Use
uv
for packaging.
- Fixed a bug that would make a module notification fail in some cases if its maskbit value was zero.
- Fail open/close dome if the drive becomes disabled (usually due to the dome being stopped).
- Added rain sensor.
- Format code using
ruff
.
- Allow not outputting the registers in
status
with--no-registers
. - Use
LVMActor
as the base class for the ECP actor.
- Use
dome_open
anddome_closed
modbus variables to determine the state of the roll-off.
- Added a cache to the registers with default timeout 0.5 second.
Modbus.read_group()
callsModbus.get_all()
instead of reading individual registers sequentially. Since during astatus
all groups are read in quick succession, and with caching, this results in much faster status outputs.
- Moved the logic to lock a connection while in use to
Modbus.connect()
anddisconnect()
from the context manager.
- Use key
modbus
from configuration file to initialise a newModbus
instance when a configuration file path is passed. - Fixed output of status flags with value zero.
- #26 Add heartbeat.
- Pinned
pymodbus
to 3.6.2 due to test errors in 3.11.
- Fixed cases in which the modbus lock could remain locked.
- Added support for lights.
- Added support for O2 sensors.
- Added support for HVAC controller.
- Additional improvments for dealing with PLC disconnections.
- Attempt at fixing sporadic failures to read Modbus variable by introducing a retry loop.
- Lint using
ruff
.
- Complete rewrite with dome and door functionality.
- Additional updates to documentation and testing.
- Add
LvmecpProxy
code as API using cluplus. - Update test code for LvmecpProxy.
- DOCS: Update sequence diagrams.
- Update the commands
dome
,light
andestop
which control elements of the LVM enclosure such as dome, control room light, and so on. - Update the commands
monitor
which will return the values of HVAC sensors. - Add the command
telemetry
which show users the status of all elements in the enclosure, - Unit test for the commands and actor.
- Update example section of sphinx docs.
- Initial version of the library and actor. Supports communication with the enclosure in LVM project, lvmecp command to on and off the enclosure light and control the Dome.