Skip to main content

A Python library that allows control of connected NuHeat Signature radiant floor thermostats.

Project description

Python NuHeat

PyPI - Python Version PyPI - Version PyPI - Downloads GitHub Workflow Status Coveralls Snyk Vulnerabilities for GitHub Repo

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)

Uploaded Source

Built Distribution

nuheat-1.0.1-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

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

Hashes for nuheat-1.0.1.tar.gz
Algorithm Hash digest
SHA256 e2733aa2312d834090d26b41764da6b59fad2c1e83486fa0965910713977b3b4
MD5 ba6237e9532feb399c9d7d99a3f67726
BLAKE2b-256 961f89b24cfec1b477f831f9eb9f1d7acd7364c6137dbffcb9d2b617aa83496c

See more details on using hashes here.

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

Hashes for nuheat-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6e984eddae3a24ba885f8740758debe4b7c091ea6753d53200cd971e9cf80a4e
MD5 b8e1a1d4175684019ab8bb4be5c840ea
BLAKE2b-256 b851d7b567b9d9b6682154e37a1592b41c1af5862134c7e891e6855eee0c7363

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page