/PyNavienSmartControl

A Python module and tools for getting information about and controlling your Navien tankless water heater, combi-boiler or boiler connected via NaviLink.

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

PyNavienSmartControl

Note that this project is now archived.

Hi folks,

After some consideration, I think it's time to archive this project as it has served it's intended purpose. With Navien's new v2 protocol requiring a total refactor > and @nikshriv having already fully integrated the changes into Home Assistant with his [actively maintained HASS integration] > (https://github.com/nikshriv/hass_navien_water_heater), it's time has come.

I am happy that my minor contribution along the way has led to what is now a usable IoT/Smart Home product.

Python library for getting information about and controlling your Navien tankless water heater, combi-boiler or boiler connected via NaviLink.

Originally based on matthew1471/Navien-API, this module and tools have been completely rewritten to support the current protocols used by mobile applications.

This updated implementation supports individual NPE, NCB, NHB, NFB, NFC, NPN, NPE2. NCB-H, NVW as well as cascaded NPE, NHB, NFB, NPN, NPE2 and NVW device types.

Included with the Python library are two tools: CLI.py and PoC.py.

CLI.py is a commandline tool that can be used interactively or scripted via automation to read and print specific information and provide full control for a specific device.

usage: NavienSmartControl-CLI.py [-h] [-gatewayid GATEWAYID]
                                 [-channel CHANNEL]
                                 [-devicenumber DEVICENUMBER]
                                 [-recirctemp RECIRCTEMP]
                                 [-heatingtemp HEATINGTEMP]
                                 [-hotwatertemp HOTWATERTEMP]
                                 [-power {on,off}] [-heat {on,off}]
                                 [-ondemand] [-schedule {on,off}] [-summary]
                                 [-trendsample] [-trendmonth] [-trendyear]
                                 [-modifyschedule {add,delete}]
                                 [-scheduletime SCHEDULETIME]
                                 [-scheduleday {wed,sun,thu,tue,mon,fri,sat}]
                                 [-schedulestate {on,off}]

Control a Navien tankless water heater, combi-boiler or boiler connected via
NaviLink.

optional arguments:
  -h, --help            show this help message and exit
  -gatewayid GATEWAYID  Specify gatewayID (required when multiple gateways are
                        used)
  -channel CHANNEL      Specify channel (required when multiple channels are
                        used)
  -devicenumber DEVICENUMBER
                        Specify device number (required when multiple devices
                        on a common channel are used)
  -recirctemp RECIRCTEMP
                        Set the recirculation temperature to this value.
  -heatingtemp HEATINGTEMP
                        Set the central heating temperature to this value.
  -hotwatertemp HOTWATERTEMP
                        Set the hot water temperature to this value.
  -power {on,off}       Turn the power on or off.
  -heat {on,off}        Turn the heat on or off.
  -ondemand             Trigger On Demand.
  -schedule {on,off}    Turn the weekly recirculation schedule on or off.
  -summary              Show the device's extended status.
  -trendsample          Show the device's trend sample report.
  -trendmonth           Show the device's trend month report.
  -trendyear            Show the device's trend year report.
  -modifyschedule {add,delete}
                        Modify recirculation schedule. Requires scheduletime,
                        scheduleday and schedulestate
  -scheduletime SCHEDULETIME
                        Modify schedule for given time in format HH:MM.
  -scheduleday {wed,sun,thu,tue,mon,fri,sat}
                        Modify schedule for given day of week.
  -schedulestate {on,off}
                        Modify schedule with given state.

PoC.py is a test framework that can iterate through all detected gateways and connected devices and demonstrates how to use each function in the module.

Details on the protocol used by the Python module can be found in the Wiki