Enumerations Reference¶
This document lists all enumerations used in the Navien NWP500 protocol.
Device Control Commands¶
- class nwp500.enums.CommandCode(*values)[source]
MQTT Command codes for Navien device control.
These command codes are used for MQTT communication with Navien devices. Commands are organized into two categories:
Query commands (16777xxx): Request device information
Control commands (33554xxx): Change device settings
All commands and their expected payloads are documented in docs/protocol/mqtt_protocol.rst under the “Control Messages” section.
- AIR_FILTER_LIFE = 33554474
- AIR_FILTER_RESET = 33554473
- ANTI_LEGIONELLA_OFF = 33554471
- ANTI_LEGIONELLA_ON = 33554472
- DEVICE_INFO_REQUEST = 16777217
- DHW_MODE = 33554437
- DHW_TEMPERATURE = 33554464
- DR_OFF = 33554469
- DR_ON = 33554470
- ENERGY_USAGE_QUERY = 16777225
- FREZ_TEMP = 33554451
- GOOUT_DAY = 33554466
- OTA_CHECK = 33554443
- OTA_COMMIT = 33554442
- POWER_OFF = 33554433
- POWER_ON = 33554434
- RECIR_HOT_BTN = 33554444
- RECIR_MODE = 33554445
- RECIR_RESERVATION = 33554440
- RESERVATION_INTELLIGENT_OFF = 33554467
- RESERVATION_INTELLIGENT_ON = 33554468
- RESERVATION_MANAGEMENT = 16777226
- RESERVATION_READ = 16777222
- RESERVATION_WATER_PROGRAM = 33554441
- RESERVATION_WEEKLY = 33554438
- SMART_DIAGNOSTIC = 33554455
- STATUS_REQUEST = 16777219
- TOU_OFF = 33554475
- TOU_ON = 33554476
- TOU_RESERVATION = 33554439
- WIFI_RECONNECT = 33554446
- WIFI_RESET = 33554447
These command IDs are used in MQTT control messages to change device settings and trigger actions. The most commonly used commands include:
Power Control:
POWER_ON,POWER_OFFTemperature:
DHW_TEMPERATUREOperation Mode:
DHW_MODETOU:
TOU_ON,TOU_OFFMaintenance:
AIR_FILTER_RESET,ANTI_LEGIONELLA_ON
Example usage:
from nwp500 import CommandCode
# Send temperature command
command = CommandCode.DHW_TEMPERATURE
params = [120] # 60°C in half-degree units
Status Value Enumerations¶
OnOffFlag¶
- class nwp500.enums.OnOffFlag(*values)[source]
Generic on/off flag used throughout status fields.
Used for: Power status, TOU status, recirculation status, vacation mode, anti-legionella, and many other boolean device settings.
- OFF = 1
- ON = 2
Generic on/off flag used throughout status fields for power status, TOU status, recirculation status, vacation mode, anti-legionella, and other boolean settings.
Note: Device uses 1=OFF, 2=ON (not standard 0/1 boolean).
Operation¶
- class nwp500.enums.Operation(*values)[source]
Device operation state.
- OPERATION = 1
- STOP = 2
- UNKNOWN = 0
Device operation state indicating overall device activity.
DhwOperationSetting¶
- class nwp500.enums.DhwOperationSetting(*values)[source]
DHW operation setting modes (user-configured heating preferences).
This enum represents the user’s configured mode preference - what heating mode the device should use when it needs to heat water. These values appear in the dhw_operation_setting field and are set via user commands.
- ELECTRIC = 2
- ENERGY_SAVER = 3
- HEAT_PUMP = 1
- HIGH_DEMAND = 4
- POWER_OFF = 6
- VACATION = 5
User-configured DHW heating mode preference. This determines which heat source(s) the device will use when heating is needed:
HEAT_PUMP: Most efficient but slower heating
ELECTRIC: Fastest but uses most energy
ENERGY_SAVER: Hybrid mode - balanced efficiency
HIGH_DEMAND: Hybrid mode - maximum heating capacity
VACATION: Energy-saving mode for extended absences
POWER_OFF: Device powered off
Example:
from nwp500 import DhwOperationSetting
from nwp500.enums import DHW_OPERATION_SETTING_TEXT
mode = DhwOperationSetting.ENERGY_SAVER
print(f"Current mode: {DHW_OPERATION_SETTING_TEXT[mode]}") # "Hybrid: Efficiency"
CurrentOperationMode¶
- class nwp500.enums.CurrentOperationMode(*values)[source]
Current operation mode (real-time operational state).
This enum represents the device’s current actual operational state - what the device is doing RIGHT NOW. These values appear in the operation_mode field and change automatically based on heating demand.
- HEAT_PUMP_MODE = 32
- HYBRID_BOOST_MODE = 96
- HYBRID_EFFICIENCY_MODE = 64
- STANDBY = 0
Real-time operational state (read-only). This reflects what the device is actually doing right now, which may differ from the configured mode setting:
STANDBY: Device idle, not actively heating
HEAT_PUMP_MODE: Heat pump actively running
HYBRID_EFFICIENCY_MODE: Actively heating in Energy Saver mode
HYBRID_BOOST_MODE: Actively heating in High Demand mode
Example:
from nwp500 import CurrentOperationMode
from nwp500.enums import CURRENT_OPERATION_MODE_TEXT
mode = CurrentOperationMode.HEAT_PUMP_MODE
print(f"Device state: {CURRENT_OPERATION_MODE_TEXT[mode]}") # "Heat Pump"
HeatSource¶
- class nwp500.enums.HeatSource(*values)[source]
Currently active heat source (read-only status).
This reflects what the device is currently using, not what mode it’s set to. In Hybrid mode, this field shows which source(s) are active at any given moment.
- HEATELEMENT = 2
- HEATPUMP = 1
- HEATPUMP_HEATELEMENT = 3
- UNKNOWN = 0
Currently active heat source (read-only status). This reflects what the device is currently using, not what mode it’s set to. In Hybrid mode, this field shows which heat source(s) are active at any moment.
DREvent¶
- class nwp500.enums.DREvent(*values)[source]
Demand Response event status.
Allows utilities to manage grid load by signaling water heaters to reduce consumption (shed) or pre-heat (load up) before peak periods.
- CPE = 5
- LOADUP = 3
- LOADUP_ADV = 4
- RUN_NORMAL = 1
- SHED = 2
- UNKNOWN = 0
Demand Response event status. Allows utilities to manage grid load by signaling water heaters to reduce consumption (shed) or pre-heat (load up) before peak periods.
WaterLevel¶
- class nwp500.enums.WaterLevel(*values)[source]
Hot water level indicator (displayed as gauge in app).
Note: IDs are non-sequential, likely represent bit positions for multi-level displays.
- HIGH = 4
- LOW = 2
- LOW_MEDIUM = 8
- MEDIUM_HIGH = 16
Hot water level indicator displayed as gauge in app. IDs are non-sequential, likely represent bit positions for multi-level displays.
FilterChange¶
- class nwp500.enums.FilterChange(*values)[source]
Air filter status for heat pump models.
- NORMAL = 0
- REPLACE_NEED = 1
- UNKNOWN = 2
Air filter status for heat pump models. Indicates when air filter maintenance is needed.
RecirculationMode¶
- class nwp500.enums.RecirculationMode(*values)[source]
Recirculation pump operation mode.
- ALWAYS = 1
- BUTTON = 2
- SCHEDULE = 3
- TEMPERATURE = 4
- UNKNOWN = 0
Recirculation pump operation mode:
ALWAYS: Pump continuously runs
BUTTON: Manual activation only (hot button)
SCHEDULE: Runs on configured schedule
TEMPERATURE: Activates when pipe temp drops below setpoint
Time of Use (TOU) Enumerations¶
TouWeekType¶
- class nwp500.enums.TouWeekType(*values)[source]
Day grouping for TOU schedules.
TOU schedules can be configured separately for weekdays and weekends to account for different electricity rates and usage patterns.
- WEEK_DAY = 0
- WEEK_END = 1
Day grouping for TOU schedules. Allows separate schedules for weekdays and weekends to account for different electricity rates and usage patterns.
TouRateType¶
- class nwp500.enums.TouRateType(*values)[source]
Electricity rate period type.
Device behavior during each rate period can be configured. Typically, devices heat aggressively during off-peak, maintain temperature during mid-peak, and avoid heating during on-peak unless necessary.
- MID_PEAK = 2
- OFF_PEAK = 1
- ON_PEAK = 3
- UNKNOWN = 0
Electricity rate period type. Device behavior can be configured for each period:
OFF_PEAK: Lowest rates - device heats aggressively
MID_PEAK: Medium rates - device heats normally
ON_PEAK: Highest rates - device minimizes heating
Temperature and Unit Enumerations¶
TemperatureType¶
- class nwp500.enums.TemperatureType(*values)[source]
Temperature display unit preference.
- CELSIUS = 1
- FAHRENHEIT = 2
Temperature display unit preference (Celsius or Fahrenheit).
Alias: TemperatureUnit in models.py for backward compatibility.
TempFormulaType¶
- class nwp500.enums.TempFormulaType(*values)[source]
Temperature conversion formula type.
Different device models use slightly different rounding algorithms when converting internal Celsius values to Fahrenheit. This ensures the mobile app matches the device’s built-in display.
Type 0: Asymmetric ceiling/floor rounding based on raw value remainder Type 1: Standard rounding to nearest integer
- ASYMMETRIC = 0
- STANDARD = 1
Temperature conversion formula type. Different device models use slightly different rounding algorithms when converting internal Celsius values to Fahrenheit:
ASYMMETRIC (Type 0): Special rounding based on raw value remainder
STANDARD (Type 1): Simple round to nearest integer
This keeps the mobile app display in sync with the device’s built-in display.
Device Type Enumerations¶
UnitType¶
- class nwp500.enums.UnitType(*values)[source]
Navien device/unit model types.
- CAS_NFB = 7
- CAS_NFB_700 = 21
- CAS_NHB = 5
- CAS_NHB_H = 17
- CAS_NPE = 4
- CAS_NPE2 = 12
- CAS_NPN = 10
- CAS_NVW = 15
- NCB = 2
- NCB_H = 13
- NFB = 6
- NFB_700 = 20
- NFC = 8
- NHB = 3
- NHB_H = 16
- NO_DEVICE = 0
- NPE = 1
- NPE2 = 11
- NPF = 513
- NPN = 9
- NVW = 14
- TWC = 257
Navien device/unit model types. Common values:
NPF (513): Heat pump water heater (primary model for this library)
NPE: Tankless water heater
NCB: Condensing boiler
NPN: Condensing water heater
Values with CAS_ prefix indicate cascading systems where multiple units
work together.
DeviceType¶
- class nwp500.enums.DeviceType(*values)[source]
Communication device type.
- NAVILINK = 1
- NAVILINK_LIGHT = 2
- NPF700_MAIN = 50
- NPF700_SUB = 51
- NPF700_WIFI = 52
Communication device type (WiFi module model).
FirmwareType¶
- class nwp500.enums.FirmwareType(*values)[source]
Firmware component types.
- COMMUNICATION_MODULE = 4
- CONTROLLER = 1
- PANEL = 2
- ROOM_CON = 3
- SUB_ROOM_CON = 6
- UNKNOWN = 0
- VALVE_CONTROL = 5
Firmware component types. Devices may have multiple firmware components that can be updated independently.
Display Text Helpers¶
The enums module also provides dictionaries for converting enum values to user-friendly display text:
from nwp500.enums import (
DHW_OPERATION_SETTING_TEXT,
CURRENT_OPERATION_MODE_TEXT,
HEAT_SOURCE_TEXT,
DR_EVENT_TEXT,
RECIRC_MODE_TEXT,
TOU_RATE_TEXT,
FILTER_STATUS_TEXT,
ERROR_CODE_TEXT,
)
# Usage examples
from nwp500 import DhwOperationSetting, CurrentOperationMode, ErrorCode
# User-configured mode
mode = DhwOperationSetting.ENERGY_SAVER
print(DHW_OPERATION_SETTING_TEXT[mode]) # "Hybrid: Efficiency"
# Current operational state
state = CurrentOperationMode.HEAT_PUMP_MODE
print(CURRENT_OPERATION_MODE_TEXT[state]) # "Heat Pump"
# Error codes
error = ErrorCode.E407_DHW_TEMP_SENSOR
print(ERROR_CODE_TEXT[error]) # "Abnormal DHW Temperature Sensor"