A Python library that allows control of connected NuHeat Signature radiant floor thermostats.
Project description
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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nuheat-1.0.1.tar.gz
(9.5 kB
view details)
Built Distribution
File details
Details for the file nuheat-1.0.1.tar.gz
.
File metadata
- Download URL: nuheat-1.0.1.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2733aa2312d834090d26b41764da6b59fad2c1e83486fa0965910713977b3b4 |
|
MD5 | ba6237e9532feb399c9d7d99a3f67726 |
|
BLAKE2b-256 | 961f89b24cfec1b477f831f9eb9f1d7acd7364c6137dbffcb9d2b617aa83496c |
File details
Details for the file nuheat-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: nuheat-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e984eddae3a24ba885f8740758debe4b7c091ea6753d53200cd971e9cf80a4e |
|
MD5 | b8e1a1d4175684019ab8bb4be5c840ea |
|
BLAKE2b-256 | b851d7b567b9d9b6682154e37a1592b41c1af5862134c7e891e6855eee0c7363 |