Skip to main content

Python API to control heating 'smart boxes'

Project description

smartbox build PyPI version codecov PyPI license PyPI pyversions

Python API to control heating 'smart boxes'

Installation

Install

To install smartbox simply run:

pip install smartbox

Depending on your permissions you might be required to use sudo. Once installed you can simply add smartbox to your Python 3 scripts by including:

import smartbox

smartbox Command Line Tool

Mandatory options

You can use the smartbox tool to get status information from your heaters (nodes) and change settings.

A few common options are required for all commands:

  • -u/--username: Your username as used for the mobile app/web app.
  • -p/--password: Your password as used for the mobile app/web app.

Verbose logging can be enabled with the -v/--verbose flag.

Optional options

These options are useful if your reseller is not configured.

  • -b/--base-auth-creds: An HTTP Basic Auth credential used to do initial authentication with the server. Use the base64 encoded string directly. See 'Basic Auth Credential' section below for more details.
  • -a/--api-name: The API name for your heater vendor. This is visible in the 'API Host' entry in the 'Version' menu item in the mobile app/web app. If the host name is of the form api-foo.xxxx or api.xxxx use the values api-foo or api respectively. The reseller has to be declared in the package.
  • -r/--x-referer: The referer of your request.
  • -i/--x-serial-id: The serial-id of your request.

Availables commands

Listing smartbox devices

smartbox <auth options...> devices

Listing smartbox nodes

The nodes command lists nodes across all devices.

smartbox <auth options...> nodes

Getting node status

The status command lists status across all nodes and devices.

smartbox <auth options...> status

Setting node status

The set-status command can be used to change a status item on a particular node.

smartbox <auth options...> set-status <-d/--device-id> <device id> <-n/--node-addr> <node> <name>=<value> [<name>=<value> ...]

Getting node setup

The setup command lists setup across all nodes and devices.

smartbox <auth options...> setup

Setting node setup

The set-setup command can be used to change a setup item on a particular node.

smartbox <auth options...> set-setup <-d/--device-id> <device id> <-n/--node-addr> <node> <name>=<value> [<name>=<value> ...]

Setting node samples

The node-samples command can be used to get the historical data (temperature and consumption) of a node.

smartbox <auth options...> node-samples <-d/--device-id> <device id> <-n/--node-addr> <node> <-s/--start-time> <start time>  <-e/--end-time> <end time>

Getting device away status

The device-away-status command lists the away status across all devices.

smartbox <auth options...> device-away-status

Setting device away status

The set-device-away-status command can be used to change the away status on a particular device.

smartbox <auth options...> set-device-away-status <-d/--device-id> <device id> <name>=<value> [<name>=<value> ...]

Getting device power limit

The device-power-limit command lists the power limit (in watts) across all devices.

smartbox <auth options...> device-power-limit

Setting device power limit

The set-device-power-limit command can be used to change the power limit (in watts) on a particular device.

smartbox <auth options...> set-device-power-limit <-d/--device-id> <device id> <limit>

Health check

The health-check command can be used to know if the API is alived

smartbox <auth options...> health-check

List available resellers

The resellers command can be used to know which resellers has an automatic configuration. If your reseller is not present you can raise an issue in github, or use the optional options.

smartbox <auth options...> resellers

See api-notes.md for notes on REST and socket.io endpoints.

Development

Prerequisites:

uv
python >=3.13

Clone the repo, install dependencies and install pre-commit hooks:

git clone
cd smartbox
uv sync
pre-commit install

Testing

To run the full suite simply run the following command from within the virtual environment:

pytest

or

python -m pytest tests/

To generate code coverage xml (e.g. for use in VSCode) run

python -m pytest --cov-report xml:cov.xml --cov smartbox --cov-append tests/

Another way to run the tests is by using tox. This runs the tests against the installed package and multiple versions of python.

tox

or by specifying a python version

tox -e py313

Support

Buy a coffee to ajtudela

Buy a coffee to delmael

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

smartbox-2.4.0.tar.gz (115.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smartbox-2.4.0-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file smartbox-2.4.0.tar.gz.

File metadata

  • Download URL: smartbox-2.4.0.tar.gz
  • Upload date:
  • Size: 115.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for smartbox-2.4.0.tar.gz
Algorithm Hash digest
SHA256 cf5ba39dcdfd5b75c2e54b217e66338ca00b157f4fb5024e11f5c4dbe5dbde90
MD5 9e7c3971a0e88a5d2ea3bec918624396
BLAKE2b-256 947b267bac6e9ff24f992822b13026e563d238d3120b763ac48cfd932989199b

See more details on using hashes here.

Provenance

The following attestation bundles were made for smartbox-2.4.0.tar.gz:

Publisher: publish-to-pypi.yml on ajtudela/smartbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file smartbox-2.4.0-py3-none-any.whl.

File metadata

  • Download URL: smartbox-2.4.0-py3-none-any.whl
  • Upload date:
  • Size: 19.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for smartbox-2.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 248b587c0e80f385d76a84a88b7aa6db95b0718c0d4ea8347a863f04bdc5cafd
MD5 93d061d32df3bf0e3fa22070532f98bf
BLAKE2b-256 9c88b5da8b2cf846b0d09b2eb8b333bca7fd9cd4d09e26600fb1f4e6f052b75c

See more details on using hashes here.

Provenance

The following attestation bundles were made for smartbox-2.4.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on ajtudela/smartbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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