You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.rst
+18-5Lines changed: 18 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -79,6 +79,15 @@ The library includes a command line interface for quick monitoring and device in
79
79
# Get device feature/capability information
80
80
python -m nwp500.cli --device-feature
81
81
82
+
# Turn device on
83
+
python -m nwp500.cli --power-on
84
+
85
+
# Turn device off
86
+
python -m nwp500.cli --power-off
87
+
88
+
# Turn device on and see updated status
89
+
python -m nwp500.cli --power-on --status
90
+
82
91
# Set operation mode and see response
83
92
python -m nwp500.cli --set-mode energy-saver
84
93
@@ -105,6 +114,8 @@ The library includes a command line interface for quick monitoring and device in
105
114
* ``--status``: Print current device status as JSON. Can be combined with control commands to see updated status.
106
115
* ``--device-info``: Print comprehensive device information (firmware, model, capabilities) via MQTT as JSON and exit
107
116
* ``--device-feature``: Print device capabilities and feature settings via MQTT as JSON and exit
117
+
* ``--power-on``: Turn the device on and display response
118
+
* ``--power-off``: Turn the device off and display response
108
119
* ``--set-mode MODE``: Set operation mode and display response. Valid modes: heat-pump, energy-saver, high-demand, electric, vacation, standby
109
120
* ``--set-dhw-temp TEMP``: Set DHW (Domestic Hot Water) target temperature in Fahrenheit (115-150°F) and display response
110
121
* ``--monitor``: Continuously monitor status every 30 seconds and log to CSV (default)
@@ -156,19 +167,21 @@ Operation Modes
156
167
* - Heat Pump Mode
157
168
- 1
158
169
- Most energy-efficient mode using only the heat pump. Longest recovery time.
159
-
* - Energy Saver Mode
170
+
* - Electric Mode
160
171
- 2
172
+
- Fastest recovery using only electric heaters. Least energy-efficient.
173
+
* - Energy Saver Mode
174
+
- 3
161
175
- Default mode. Balances efficiency and recovery time using both heat pump and electric heater.
162
176
* - High Demand Mode
163
-
- 3
164
-
- Uses electric heater more frequently for faster recovery time.
165
-
* - Electric Mode
166
177
- 4
167
-
- Fastest recovery using only electric heaters. Least energy-efficient.
178
+
- Uses electric heater more frequently for faster recovery time.
168
179
* - Vacation Mode
169
180
- 5
170
181
- Suspends heating to save energy during extended absences.
171
182
183
+
**Important:** When you set a mode, you're configuring the ``dhwOperationSetting`` (what mode to use when heating). The device's current operational state is reported in ``operationMode`` (0=Standby, 32=Heat Pump active, 64=Energy Saver active, 96=High Demand active). See the `Device Status Fields documentation <docs/DEVICE_STATUS_FIELDS.rst>`_ for details on this distinction.
@@ -44,9 +44,9 @@ This document lists the fields found in the ``status`` object of device status m
44
44
- Sub error code providing additional error details. See ERROR_CODES.rst for details.
45
45
- None
46
46
* - ``operationMode``
47
-
- integer
47
+
- OperationMode
48
48
- None
49
-
- The current operation mode of the device. See Operation Modes section below.
49
+
- The current **actual operational state** of the device (what it's doing RIGHT NOW). Reports status values: 0=Standby, 32=Heat Pump active, 64=Energy Saver active, 96=High Demand active. See Operation Modes section below for the critical distinction between this and ``dhwOperationSetting``.
50
50
- None
51
51
* - ``operationBusy``
52
52
- integer
@@ -229,9 +229,9 @@ This document lists the fields found in the ``status`` object of device status m
229
229
- Type of program reservation.
230
230
- None
231
231
* - ``dhwOperationSetting``
232
-
- integer
232
+
- OperationMode
233
233
- None
234
-
- DHW operation setting.
234
+
- User's configured DHW operation mode preference. This field uses the same ``OperationMode`` enum as ``operationMode`` but contains command mode values (1=HEAT_PUMP, 2=ELECTRIC, 3=ENERGY_SAVER, 4=HIGH_DEMAND, 5=VACATION, 6=POWER_OFF). When the device is powered off via the power-off command, this field will show 6 (POWER_OFF). This is how to distinguish between "powered off" vs "on but in standby". See the Operation Modes section below for details.
235
235
- None
236
236
* - ``temperatureType``
237
237
- integer
@@ -469,31 +469,31 @@ The ``operationMode`` field is an integer that maps to the following modes. Thes
469
469
- High
470
470
- Most energy-efficient mode, using only the heat pump. Recovery time varies with ambient temperature and humidity. Higher ambient temperature and humidity improve efficiency and reduce recovery time.
471
471
* - 2
472
+
- Electric
473
+
- Fast
474
+
- Very Low
475
+
- Uses only upper and lower electric heaters (not simultaneously). Least energy-efficient with shortest recovery time. Can operate continuously for up to 72 hours before automatically reverting to previous mode.
476
+
* - 3
472
477
- Energy Saver (Hybrid: Efficiency)
473
478
- Fast
474
479
- Very High
475
480
- Default mode. Combines the heat pump and electric heater for balanced efficiency and recovery time. Heat pump is primarily used with electric heater for backup. Applied during initial shipment and factory reset.
476
-
* - 3
481
+
* - 4
477
482
- High Demand (Hybrid: Boost)
478
483
- Very Fast
479
484
- Low
480
485
- Combines heat pump and electric heater with more frequent use of electric heater for faster recovery. Suitable when higher hot water supply is needed.
481
-
* - 4
482
-
- Electric
483
-
- Fast
484
-
- Very Low
485
-
- Uses only upper and lower electric heaters (not simultaneously). Least energy-efficient with shortest recovery time. Can operate continuously for up to 72 hours before automatically reverting to previous mode.
486
486
* - 5
487
487
- Vacation
488
488
- None
489
489
- Very High
490
490
- 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.
The following ``operationMode`` values have been observed in status messages from the device. These values appear to correspond to the commanded modes as follows:
496
+
The following ``operationMode`` values in status messages from the device. These values appear to correspond to the commanded modes as follows:
497
497
498
498
.. list-table::
499
499
:header-rows: 1
@@ -509,13 +509,204 @@ The following ``operationMode`` values have been observed in status messages fro
509
509
- Heat Pump
510
510
- Corresponds to commanded mode ``HEAT_PUMP`` (1).
511
511
* - 64
512
-
- Energy Saver
513
-
- Corresponds to commanded mode ``ENERGY_SAVER`` (2).
512
+
- Energy Saver (Hybrid: Efficiency)
513
+
- Corresponds to commanded mode ``ENERGY_SAVER`` (3).
514
514
* - 96
515
-
- High Demand
516
-
- Corresponds to commanded mode ``HIGH_DEMAND`` (3).
515
+
- High Demand (Hybrid: Boost)
516
+
- Corresponds to commanded mode ``HIGH_DEMAND`` (4).
517
+
518
+
The commanded mode ``ELECTRIC`` (2) has been observed to result in ``operationMode`` values of both 64 and 96 at different times.
519
+
520
+
Understanding operationMode vs dhwOperationSetting
These two fields serve different purposes and it's critical to understand their relationship:
524
+
525
+
Field Definitions
526
+
^^^^^^^^^^^^^^^^^
527
+
528
+
**dhwOperationSetting** (OperationMode enum with command values 1-5)
529
+
The user's **configured mode preference** - what heating mode the device should use when it needs to heat water. This is set via the ``dhw-mode`` command and persists until changed by the user or device.
530
+
531
+
* Type: ``OperationMode`` enum
532
+
* Values:
533
+
534
+
* 1 = ``HEAT_PUMP`` (Heat Pump Only)
535
+
* 2 = ``ELECTRIC`` (Electric Only)
536
+
* 3 = ``ENERGY_SAVER`` (Hybrid: Efficiency)
537
+
* 4 = ``HIGH_DEMAND`` (Hybrid: Boost)
538
+
* 5 = ``VACATION`` (Vacation mode)
539
+
* 6 = ``POWER_OFF`` (Device is powered off)
540
+
541
+
* Set by: User via app, CLI, or MQTT command
542
+
* Changes: Only when user explicitly changes the mode or powers device off/on
543
+
* Meaning: "When heating is needed, use this mode" OR "I'm powered off" (if value is 6)
544
+
* **Critical**: Value 6 (``POWER_OFF``) indicates the device was powered off via the power-off command. This is how to distinguish between "powered off" and "on but idle".
545
+
546
+
**operationMode** (OperationMode enum with status values 0, 32, 64, 96)
547
+
The device's **current actual operational state** - what the device is doing RIGHT NOW. This reflects real-time operation and changes automatically based on whether the device is idle or actively heating.
* Set by: Device automatically based on heating demand
558
+
* Changes: Dynamically as device starts/stops heating
559
+
* Meaning: "This is what I'm doing right now"
560
+
* **Note**: This field shows ``STANDBY`` (0) both when device is powered off AND when it's on but not heating. Check ``dhwOperationSetting`` to determine if device is actually powered off (value 6).
561
+
562
+
Key Relationship
563
+
^^^^^^^^^^^^^^^^
564
+
565
+
The relationship between these fields can be summarized as:
566
+
567
+
* ``dhwOperationSetting`` = "What mode to use when heating"
568
+
* ``operationMode`` = "Am I heating right now, and if so, how?"
569
+
570
+
A device can be **idle** (``operationMode = STANDBY``) while still being **configured** for a specific heating mode (``dhwOperationSetting = ENERGY_SAVER``). When the tank temperature drops and heating begins, ``operationMode`` will change to reflect active heating (e.g., ``HYBRID_EFFICIENCY_MODE``), but ``dhwOperationSetting`` remains unchanged.
operationMode = 32 (HEAT_PUMP_MODE) # Heat pump active
599
+
compUse = true # Compressor running
600
+
601
+
*Interpretation:* Device is configured for High Demand but is currently running just the heat pump component (hybrid heating will engage electric elements as needed).
602
+
603
+
**Example 4: Device Powered Off**
604
+
::
605
+
606
+
dhwOperationSetting = 6 (POWER_OFF) # Device powered off
607
+
operationMode = 0 (STANDBY) # Currently idle
608
+
operationBusy = false # No heating
609
+
610
+
*Interpretation:* Device was powered off using the power-off command. Although ``operationMode`` shows ``STANDBY`` (same as an idle device), the ``dhwOperationSetting`` value of 6 indicates it's actually powered off, not just idle.
611
+
612
+
Displaying Status in a User Interface
613
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
614
+
615
+
For user-facing applications, follow these guidelines:
616
+
617
+
**Primary Mode Display**
618
+
Use ``dhwOperationSetting`` to show the user's configured mode preference. This is what users expect to see as "the current mode" because it represents their selection.
619
+
620
+
**Important**: Check for value 6 (``POWER_OFF``) first to show "Off" or "Powered Off" status.
621
+
622
+
Example display::
623
+
624
+
Mode: Energy Saver [when dhwOperationSetting = 1-5]
625
+
Mode: Off [when dhwOperationSetting = 6]
626
+
627
+
**Status Indicator**
628
+
Use ``operationMode`` to show real-time operational status:
629
+
630
+
* ``STANDBY`` (0): Show "Idle" or "Standby" indicator (but check ``dhwOperationSetting`` for power-off state)
631
+
* ``HEAT_PUMP_MODE`` (32): Show "Heating (Heat Pump)" or heating indicator
632
+
* ``HYBRID_EFFICIENCY_MODE`` (64): Show "Heating (Energy Saver)" or heating indicator
633
+
* ``HYBRID_BOOST_MODE`` (96): Show "Heating (High Demand)" or heating indicator
'operational_state': operational_state, # "Idle" or "Heating..."
692
+
'is_heating': is_heating, # True/False
693
+
'is_powered_on': True, # Device is on
694
+
'tank_charge': status.dhwChargePer, # 0-100
695
+
}
696
+
697
+
**Display Notes**
698
+
699
+
1. **Never display operationMode as "the mode"** - users don't care that the device is in "HYBRID_EFFICIENCY_MODE", they want to know it's set to "Energy Saver"
700
+
701
+
2. **Do use operationMode for heating indicators** - it tells you whether the device is actively heating right now
702
+
703
+
3. **Mode changes affect dhwOperationSetting** - when a user changes the mode, you're setting ``dhwOperationSetting``
704
+
705
+
4. **operationMode changes automatically** - you cannot directly set this; it changes based on device operation
706
+
707
+
5. **Both fields use OperationMode enum** - but different value ranges (1-6 for dhwOperationSetting, 0/32/64/96 for operationMode)
517
708
518
-
The commanded mode ``ELECTRIC`` (4) has been observed to result in ``operationMode`` values of both 64 and 96 at different times.
709
+
6. **Power off detection** - Check if ``dhwOperationSetting == 6`` (``POWER_OFF``) to determine if device is powered off vs just idle
Set DHW (Domestic Hot Water) operation mode. This sets the ``dhwOperationSetting`` field, which determines what heating mode the device will use when it needs to heat water.
``2``: Electric (least efficient, fastest recovery) - ``3``: Energy
453
-
Saver (default, balanced) - ``4``: High Demand (faster recovery)
451
+
**Mode IDs (command values):**
452
+
453
+
* ``1``: Heat Pump Only (most efficient, longest recovery)
454
+
* ``2``: Electric Only (least efficient, fastest recovery)
455
+
* ``3``: Energy Saver (default, balanced - Hybrid: Efficiency)
456
+
* ``4``: High Demand (faster recovery - Hybrid: Boost)
457
+
* ``5``: Vacation (suspend heating for 0-99 days)
458
+
459
+
**Important:** Setting the mode updates ``dhwOperationSetting`` but does not immediately change ``operationMode``. The ``operationMode`` field reflects the device's current operational state and changes automatically when the device starts/stops heating. See :doc:`DEVICE_STATUS_FIELDS` for details on the relationship between these fields.
454
460
455
461
set_dhw_temperature()
456
462
'''''''''''''''''''''
@@ -749,13 +755,16 @@ Response Message
749
755
"dhwTemperature": 120,
750
756
"tankUpperTemperature": 115,
751
757
"tankLowerTemperature": 110,
752
-
"operationMode": 3,
758
+
"operationMode": 64,
759
+
"dhwOperationSetting": 3,
753
760
"dhwUse": true,
754
761
"compUse": false
755
762
}
756
763
}
757
764
}
758
765
766
+
Note: ``operationMode`` shows the current operational state (64 = Energy Saver actively heating), while ``dhwOperationSetting`` shows the configured mode preference (3 = Energy Saver). See :doc:`DEVICE_STATUS_FIELDS` for the distinction between these fields.
Copy file name to clipboardExpand all lines: docs/MQTT_MESSAGES.rst
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,7 +133,7 @@ The device sends a response to a control message on the ``responseTopic`` specif
133
133
134
134
The ``sessionID`` in the response corresponds to the ``sessionID`` of the request.
135
135
136
-
The ``response`` object contains a ``status`` object that reflects the new state. For example, after a ``dhw-mode`` command with ``param`` ``[3]``\ , the ``dhwOperationSetting`` in the ``status`` object of the response will be ``3``.
136
+
The ``response`` object contains a ``status`` object that reflects the new state. For example, after a ``dhw-mode`` command with ``param`` ``[3]`` (Energy Saver), the ``dhwOperationSetting`` field in the ``status`` object will be ``3``. Note that ``operationMode`` may still show ``0`` (STANDBY) if the device is not currently heating. See :doc:`DEVICE_STATUS_FIELDS` for the important distinction between ``dhwOperationSetting`` (configured mode) and ``operationMode`` (current operational state).
0 commit comments