diff --git a/docs/DEVICE_STATUS_FIELDS.rst b/docs/DEVICE_STATUS_FIELDS.rst index 8f58e49..3d7ad51 100644 --- a/docs/DEVICE_STATUS_FIELDS.rst +++ b/docs/DEVICE_STATUS_FIELDS.rst @@ -489,6 +489,34 @@ The ``operationMode`` field is an integer that maps to the following modes. Thes - Very High - Suspends heating to save energy during absences (0-99 days). Only minimal operations like freeze protection and anti-seize are performed. Heating resumes 9 hours before the vacation period ends. + +Observed Operation Modes (from network traffic analysis) +-------------------------------------------------------- + +The following ``operationMode`` values have been observed in status messages from the device. These values appear to correspond to the commanded modes as follows: + +.. list-table:: + :header-rows: 1 + :widths: 10 30 60 + + * - Value + - Mode + - Notes + * - 0 + - Standby / Vacation + - Corresponds to commanded modes ``STANDBY`` (0) and ``VACATION`` (5). + * - 32 + - Heat Pump + - Corresponds to commanded mode ``HEAT_PUMP`` (1). + * - 64 + - Energy Saver + - Corresponds to commanded mode ``ENERGY_SAVER`` (2). + * - 96 + - High Demand + - Corresponds to commanded mode ``HIGH_DEMAND`` (3). + +The commanded mode ``ELECTRIC`` (4) has been observed to result in ``operationMode`` values of both 64 and 96 at different times. + Technical Notes --------------- diff --git a/src/nwp500/models.py b/src/nwp500/models.py index 4896f1a..655b031 100644 --- a/src/nwp500/models.py +++ b/src/nwp500/models.py @@ -14,15 +14,27 @@ class OperationMode(Enum): - """Enumeration for the operation modes of the device.""" + """Enumeration for the operation modes of the device. - STANDBY = 0 # Device is in standby (e.g., when DHW tank is fully charged) + The first set of modes (0-5) are used when commanding the device, while + the second set (32, 64, 96) are observed in status messages. + """ + + # Commanded modes + STANDBY = 0 HEAT_PUMP = 1 ENERGY_SAVER = 2 HIGH_DEMAND = 3 ELECTRIC = 4 VACATION = 5 + # Observed status modes + HEAT_PUMP_MODE = 32 + HYBRID_EFFICIENCY_MODE = 64 + HYBRID_BOOST_MODE = 96 + + # Aliases + class TemperatureUnit(Enum): """Enumeration for temperature units."""