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_OFF

  • Temperature: DHW_TEMPERATURE

  • Operation Mode: DHW_MODE

  • TOU: TOU_ON, TOU_OFF

  • Maintenance: 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"