Skip to main content

evohome-async

ruff mypy pytest PyPI PyPI - Python Version PyPI - Downloads License

Python client to asynchronously access the Total Connect Comfort RESTful API.

It provides support for Resideo TCC-based systems, such as Evohome, Round Thermostat, VisionPro and others:

  • it supports only EU/EMEA-based systems, please use (e.g.) somecomfort for US-based systems
  • it provides Evohome support for Home Assistant and other automation platforms

NOTE: the vendor API available to this library does not currently support cooling.

This client requires the aiohttp library. If you prefer a non-async client, evohome-client uses requests instead.

CLI for schedules (currently WIP)

To install a basic CLI:

pip install 'evohome-async[cli]'

evo-client --help

For example, to backup schedules (including DHW, if any):

evo-client -u username@gmail.com -p password get-schedules --loc-idx 2 > schedules.json

... and to restore:

evo-client -u username@gmail.com -p password set-schedules --loc-idx 2 -f schedules.json

To avoid exceeding the vendor's API rate limit, it will restore the access token cache, unless you use the --no-load-tokens switch.

NOTE: the client may save your access tokens to .evo-cache.tmp: this presents a small security concern.

Example code

websession = aiohttp.ClientSession()
token_manager = TokenManager(username, password, websession)
await token_manager.load_access_token()

evo = EvohomeClient(token_manager)
await evo.setup()  # usually only once: gets the config of the user's locations

loc = evo.locations[0]
await loc.get_status()  # e.g. every few minutes: gets the status of this location

comm_task = await loc.gateways[0].systems[0].set_mode(SystemMode.AUTO)
await comm_task.wait()  # until the system has the change (raises CommTaskFailedError if not)

await token_manager.save_access_token()
await websession.close()

Differences from non-async version

It is loosely based upon https://github.com/watchforstock/evohome-client, but async-aware.

The difference between the evohome-async and evohome-client libraries are significant, but it should be relatively straightforward to port your code over to this async library should you wish.

For example, entity ID attrs are .id and no longer .dhwId, zoneId, etc.

Other differences include (but are not limited to):

  • namespace is refactored (simpler), and attrs are snake_case rather than camelCase
  • all datetimes are now TZ-aware internally, and exposed as such
  • can import schedule JSON by name as well as by zone/dhw id
  • newer API exposes a TokenManager class (for authentication) and an Auth class (for authorization)
  • older API exposes a SessionManager (for authentication) and an Auth class (for authorization)
  • exceptions are parochial (e.g. AuthenticationFailedError) rather than generic (TypeError)
  • improved logging: better error messages when things do go wrong
  • additional logging: e.g. logs a warning for any active faults
  • is now fully typed, including TypedDicts and py.typed
  • uses best of class linting/typing via ruff/mypy
  • more extensive testing via pytest
  • (WIP) extended compatibility beyond pure evohome systems (e.g. VisionPro)

Development

This is how to set up a development environment.

Prerequisites

  • Python 3.14 for local dev (HA stable requires 3.14); Python 3.13 is also tested in CI
  • uv

Setup

git clone https://github.com/zxdavb/evohome-async
cd evohome-async

uv sync --all-extras  # creates .venv/ Python pinned via .python-version

prek install  # install pre-commit git hooks

Running tests and linting

source .venv/bin/activate

ruff check .
ruff format --check .
mypy
pytest --cov=src --cov-report=term-missing
prek run --all-files  # all pre-commit hooks

Alternatively, prefix each command with uv run to skip activation.

Metadata

Release files for evohome-async 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evohome-async 3.0.0
File Size Uploaded
evohome_async-3.0.0.tar.gz 315.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evohome-async 3.0.0
File Interpreter ABI Platform
evohome_async-3.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 437.3 kB

Release files / evohome_async-3.0.0.tar.gz

Download URL evohome_async-3.0.0.tar.gz
Size 315.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c6fe5aca627efad5e85921598a894bb6eab54647cd5c3d209b3c9f87d5073b0c
BLAKE2b-256 checksum
How to use checksums
04469f3ac69e62a409d8d1795f98d73296617e1a3164cfe7814314d8cf46d7d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release files / evohome_async-3.0.0-py3-none-any.whl

Download URL evohome_async-3.0.0-py3-none-any.whl
Size 121.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
054ec3c78a5fef74aecd6904c5d963c6737e7e9dd0b97aeb6927dc50310de59f
BLAKE2b-256 checksum
How to use checksums
9e250bc351c1bfcb5a7069678c9d76fed55ab41cbf89db1432d671e5a451912d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 release files

2.1.0

2 release files

2.0.1

2 release files

1.3.3

2 release files

1.2.0

2 release files

1.1.3

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

0.4.21

2 release files

0.4.20

2 release files

0.4.19

2 release files

0.4.16

2 release files

0.4.12

2 release files

0.4.11

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.3.15

2 release files

0.3.8

2 release files

0.3.4b1

1 release file

0.3.3b5

1 release file

0.3.3b4

1 release file

0.3.3b3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page