Python NuHeat
A Python 3 library that allows control of connected NuHeat Signature radiant floor thermostats.
- This uses the web-based NuHeat API, so it requires an external internet connection
- The API in use is not an officially published API, so it could change without notice
- Please contribute!
Installation
$ pip install nuheat
Usage
from nuheat import NuHeat
# Initalize an API session with your login credentials
api = NuHeat("email@example.com", "your-secure-password")
api.authenticate()
# Fetch a thermostat by serial number / ID. This can be found on the NuHeat website by selecting
# your thermostat and noting the Thermostat ID
thermostat = api.get_thermostat("12345")
# Get the current temperature of the thermostat
thermostat.fahrenheit
thermostat.celsius
# Get the current target temperature of the thermostat
thermostat.target_fahrenheit
thermostat.target_celsius
# Get the minimum and maximum temperatures supported by the thermostat
thermostat.min_fahrenheit
thermostat.max_fahrenheit
thermostat.min_celsius
thermostat.max_celsius
# Get the current mode of the thermostat
thermostat.schedule_mode
# The possible schedule modes are one of the following 3 integers:
# 1. Run the schedule programmed into the thermostat
# 2. Temporarily hold a target temperature until the next scheduled event
# 3. Permanently hold a target temperature until the mode is manually changed
# Get other properties
thermostat.heating
thermostat.online
thermostat.serial_number
# Set a new temperature and permanently hold
# Note: Any pre-programmed thermostat schedules will be ignored until you resume the schedule or
# change the mode.
thermostat.set_target_fahrenheit(72)
# If you prefer celsius...
thermostat.set_target_celsius(22)
# You can also do this via the convenience property setters
thermostat.target_fahrenheit = 72
# or with celsius
thermostat.target_celsius = 22
# To resume the schedule programmed into the thermostat
thermostat.resume_schedule()
# Which is effectively the same as explicitly changing the mode like so
thermostat.schedule_mode = 1
# To set a new target temperature with an explicit schedule mode
thermostat.set_target_fahrenheit(72, mode=2)
# If you prefer celsius, you can use that too
thermostat.set_target_celsius(22, mode=2)
# Set a target temperature until a specified datetime
# Note: A timezone aware datetime should be passed in, otherwise UTC will be assumed
from datetime import datetime, timedelta, timezone
hold_time = datetime.now() + timedelta(hours=4)
thermostat.set_target_fahrenheit(69, mode=2, hold_time=hold_time)
Contributing
Pull requests are always welcome!
Running locally with Docker
# Build and run the docker container:
$ docker build -t python-nuheat .
$ docker run -it --rm -v $(pwd):/python-nuheat python-nuheat
# To run the interactive shell:
$ ipython
# To run tests:
$ pytest
Metadata
Release files for nuheat 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nuheat-1.0.1.tar.gz | 9.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nuheat-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.4 kB
Release files / nuheat-1.0.1.tar.gz
| Download URL | nuheat-1.0.1.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e2733aa2312d834090d26b41764da6b59fad2c1e83486fa0965910713977b3b4
|
|
BLAKE2b-256 checksum How to use checksums |
961f89b24cfec1b477f831f9eb9f1d7acd7364c6137dbffcb9d2b617aa83496c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.6
|
Release files / nuheat-1.0.1-py3-none-any.whl
| Download URL | nuheat-1.0.1-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6e984eddae3a24ba885f8740758debe4b7c091ea6753d53200cd971e9cf80a4e
|
|
BLAKE2b-256 checksum How to use checksums |
b851d7b567b9d9b6682154e37a1592b41c1af5862134c7e891e6855eee0c7363
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.6
|