A library for controlling Navien NWP500 Water Heaters via NaviLink
Project description
Features
Monitor status (temperature, power, charge %)
Set target water temperature
Change operation mode
Optional scheduling (reservations)
Optional time-of-use settings
Periodic high-temp cycle info
Access detailed status fields
Async friendly
Quick Start
Installation
pip install nwp500-python
Basic Usage
from nwp500 import NavienAuthClient, NavienAPIClient
# Authentication happens automatically when entering the context
async with NavienAuthClient("your_email@example.com", "your_password") as auth_client:
# Create API client
api_client = NavienAPIClient(auth_client=auth_client)
# Get device data
devices = await api_client.list_devices()
device = devices[0] if devices else None
if device:
# Access status information
status = device.status
print(f"Water Temperature: {status.dhwTemperature}°F")
print(f"Tank Charge: {status.dhwChargePer}%")
print(f"Power Consumption: {status.currentInstPower}W")
# Set temperature
await api_client.set_device_temperature(device, 130)
# Change operation mode
await api_client.set_device_mode(device, "heat_pump")
Command Line Interface
The library includes a command line interface for quick monitoring and device information retrieval:
# Set credentials via environment variables
export NAVIEN_EMAIL="your_email@example.com"
export NAVIEN_PASSWORD="your_password"
# Get current device status (one-time)
python -m nwp500.cli --status
# Get device information
python -m nwp500.cli --device-info
# Get device feature/capability information
python -m nwp500.cli --device-feature
# Turn device on
python -m nwp500.cli --power-on
# Turn device off
python -m nwp500.cli --power-off
# Turn device on and see updated status
python -m nwp500.cli --power-on --status
# Set operation mode and see response
python -m nwp500.cli --set-mode energy-saver
# Set DHW target temperature and see response
python -m nwp500.cli --set-dhw-temp 140
# Set temperature and then get updated status
python -m nwp500.cli --set-dhw-temp 140 --status
# Set mode and then get updated status
python -m nwp500.cli --set-mode energy-saver --status
# Just get current status (one-time)
python -m nwp500.cli --status
# Monitor continuously (default - writes to CSV)
python -m nwp500.cli --monitor
# Monitor with custom output file
python -m nwp500.cli --monitor --output my_data.csv
Available CLI Options:
--status: Print current device status as JSON. Can be combined with control commands to see updated status.
--device-info: Print comprehensive device information (firmware, model, capabilities) as JSON and exit
--device-feature: Print device capabilities and feature settings as JSON and exit
--power-on: Turn the device on and display response
--power-off: Turn the device off and display response
--set-mode MODE: Set operation mode and display response. Valid modes: heat-pump, energy-saver, high-demand, electric, vacation, standby
--set-dhw-temp TEMP: Set DHW (Domestic Hot Water) target temperature in Fahrenheit (115-150°F) and display response
--monitor: Continuously monitor status every 30 seconds and log to CSV (default)
-o, --output: Specify CSV output filename for monitoring mode
--email: Override email (alternative to environment variable)
--password: Override password (alternative to environment variable)
Device Status Fields
The library provides access to comprehensive device status information:
- Temperature Sensors
Water temperature (current and target)
Tank upper/lower temperatures
Ambient temperature
Discharge, suction, and evaporator temperatures
Inlet temperature
- System Status
Operation mode (Heat Pump, Energy Saver, High Demand, Electric, Vacation)
Compressor status
Heat pump and electric heater status
Evaporator fan status
Tank charge percentage
- Power & Energy
Current power consumption (Watts)
Total energy capacity (Wh)
Available energy capacity (Wh)
- Diagnostics
WiFi signal strength
Error codes
Fault status
Cumulative operation time
Flow rates
Documentation
Full docs: https://nwp500-python.readthedocs.io/
Data Models
The library includes type-safe data models with automatic unit conversions:
DeviceStatus: Complete device status with 70+ fields
DeviceFeature: Device capabilities, firmware versions, and configuration limits
OperationMode: Enumeration of available operation modes
TemperatureUnit: Celsius/Fahrenheit handling
Requirements
Python 3.9+
aiohttp >= 3.8.0
websockets >= 10.0
cryptography >= 3.4.0
pydantic >= 2.0.0
awsiotsdk >= 1.21.0
License
This project is licensed under the MIT License.
Acknowledgments
This project has been set up using PyScaffold 4.6. For details and usage information on PyScaffold see https://pyscaffold.org/.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nwp500_python-6.0.6.tar.gz.
File metadata
- Download URL: nwp500_python-6.0.6.tar.gz
- Upload date:
- Size: 274.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f345079fe5275fda883dfe8edb7fbfff6afcc8281360a296c0c4b7e775ea861
|
|
| MD5 |
954d46bcc341fd4d8ba55a48e537e132
|
|
| BLAKE2b-256 |
521508adf7d51e8e2c95959e51d002fec68e2b859ca226da178bc39bfd0076d6
|
Provenance
The following attestation bundles were made for nwp500_python-6.0.6.tar.gz:
Publisher:
release.yml on eman/nwp500-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nwp500_python-6.0.6.tar.gz -
Subject digest:
3f345079fe5275fda883dfe8edb7fbfff6afcc8281360a296c0c4b7e775ea861 - Sigstore transparency entry: 723946132
- Sigstore integration time:
-
Permalink:
eman/nwp500-python@2ca1d596906e6ad7e8ca1a27caf2df67e39a243d -
Branch / Tag:
refs/tags/v6.0.6 - Owner: https://github.com/eman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2ca1d596906e6ad7e8ca1a27caf2df67e39a243d -
Trigger Event:
push
-
Statement type:
File details
Details for the file nwp500_python-6.0.6-py3-none-any.whl.
File metadata
- Download URL: nwp500_python-6.0.6-py3-none-any.whl
- Upload date:
- Size: 84.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a955b43b875814ea498653499535ff8cbe8d35af72466fbd0f147354491e2ad0
|
|
| MD5 |
a305dc60f412340dd4f8436f51ab5e8c
|
|
| BLAKE2b-256 |
ccdd6fbb6b3ae79fb717ea3f2bcd4db9ac52fbbc8067aab7f08fb3357d5aee46
|
Provenance
The following attestation bundles were made for nwp500_python-6.0.6-py3-none-any.whl:
Publisher:
release.yml on eman/nwp500-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nwp500_python-6.0.6-py3-none-any.whl -
Subject digest:
a955b43b875814ea498653499535ff8cbe8d35af72466fbd0f147354491e2ad0 - Sigstore transparency entry: 723946161
- Sigstore integration time:
-
Permalink:
eman/nwp500-python@2ca1d596906e6ad7e8ca1a27caf2df67e39a243d -
Branch / Tag:
refs/tags/v6.0.6 - Owner: https://github.com/eman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2ca1d596906e6ad7e8ca1a27caf2df67e39a243d -
Trigger Event:
push
-
Statement type: