evohome-async


Nameevohome-async JSON
Version 0.4.19 PyPI version JSON
download
home_pageNone
SummaryAn async client for connecting to Honeywell's TCC RESTful API.
upload_time2024-02-10 22:31:18
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseNone
keywords evohome honeywell resideo round thermostat tcc vision pro
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            evohome-async
==============

Python client to _asynchronously_ access the [Total Connect Comfort](https://international.mytotalconnectcomfort.com/Account/Login) RESTful API.

It is intended to be a faithful port of https://github.com/watchforstock/evohome-client, but async-aware.  That is, it exposes a superset of the **evohome-client** schema (same namespace, same JSON), but with some notable differences between the two (see below).

It provides support for Honeywell/Resideo TCC-based systems, such as **Evohome**, **Round Thermostat**, **VisonPro** and others:
 - it supports _only_ EU/EMEA-based systems, please use [somecomfort](https://github.com/mkmer/AIOSomecomfort) for US-based systems
 - it provides Evohome support for Home Assistant (and other automation platforms), see https://www.home-assistant.io/integrations/evohome

This client requires the [aiohttp](https://pypi.org/project/aiohttp/) library. If you prefer a non-async client, [evohome-client](https://github.com/watchforstock/evohome-client) uses [requests](https://pypi.org/project/requests/) instead.

Please contact me (e.g. open an issue) if you would like to help extending the functionality of **evohome-async** to include cooling, as support for such is minimal currently.

### CLI for schedules

If you download the git repo you can use a basic CLI for backup/restore of schedules (incl. DHW, if any), for example:
```
python client.py -u username@gmail.com -p password get-schedules --loc-idx 2 > schedules.json
```
... and to restore:
```
python client.py -u username@gmail.com -p password set-schedules --loc-idx 2 -f schedules.json
```

To avoid exceeding the vendor's API rate limit, you can cache the access tokens via the `--cache-tokens` switch.

> Beware that the above switch will save your tokens to **.evo-cache.tmp**: this presents a security concern.

### Differences from non-async version
The difference between the **evohomeasync** and **evohomeclient** libraries have been kept to the minimum, and it is planned for exisiting docs to be useful.  Thus, it should be relatively easy to port your code over to this async library should you wish.

The non-async documentation (from **evohomeclient**) is available at http://evohome-client.readthedocs.org/en/latest/

#### Technical differences
Some additional functionality has been added to the methods that wrap the vendor APIs (e.g. restore schedules by name, as an alternative to by id). Note that this library is not able to expose more _core_ functionality than it's non-async cousin (i.e. they both use the same vendor API).

Note that since **0.4.0**, some attributes have been renamed, and a few have been deprecated altogether (when required, an informative exception will be thrown).

In both cases (`evohomeclient2` and `evohomeclient`):
 - requires **aiohttp** instead of **requests**:
 - added a new instantiation argument, `session` to allow the client to utilize the consumer's **aiohttp** session
 ```python
    self._session = kwargs.get('session', aiohttp.ClientSession(
        timeout=aiohttp.ClientTimeout(total=30)
    ))
```

For the newer evohome API (evohomeclient2):
 - `import evohomeasync2` instead of `import evohomeclient2`
 - must invoke `await client.login()` after instntiating `EvohomeClient`
 - gerneric `Exceptions` have changed...
    `requests.ConnectionError` becomes: `aiohttp.ClientConnectionError`
    `requests.HTTPError` becomes `aiohttp.ClientResponseError`
 - but in most case, exceptions are no longer generic (since **0.4.0**)...
    `RateLimitExceeded`, and `AuthenticationFailed` (among others)

For the older evohome API (evohomeclient):
 - `import evohomeasync` instead of `import evohomeclient`
 - Exceptions change similar to the above

Other minor changes:
 - some attrs/methods have been renamed (invoking the old name will advise the new name)
 - `Hotwater.zoneId` is deprecated (can use `.dhwId`, or `_id`)
 - `ZoneBase.zone_type` is deprecated (use `.TYPE`))
 - some sentinel values are now `None`

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "evohome-async",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": "David Bonnes <zxdavb@bonnes.me>",
    "keywords": "evohome,honeywell,resideo,round thermostat,tcc,vision pro",
    "author": null,
    "author_email": "David Bonnes <zxdavb@bonnes.me>, Andrew Stock <evohome@andrew-stock.com>",
    "download_url": "https://files.pythonhosted.org/packages/77/ca/047e5251019cf6df7f234f1cb604b91e11841324739a27e43a49f8cf3090/evohome_async-0.4.19.tar.gz",
    "platform": null,
    "description": "evohome-async\n==============\n\nPython client to _asynchronously_ access the [Total Connect Comfort](https://international.mytotalconnectcomfort.com/Account/Login) RESTful API.\n\nIt is intended to be a faithful port of https://github.com/watchforstock/evohome-client, but async-aware.  That is, it exposes a superset of the **evohome-client** schema (same namespace, same JSON), but with some notable differences between the two (see below).\n\nIt provides support for Honeywell/Resideo TCC-based systems, such as **Evohome**, **Round Thermostat**, **VisonPro** and others:\n - it supports _only_ EU/EMEA-based systems, please use [somecomfort](https://github.com/mkmer/AIOSomecomfort) for US-based systems\n - it provides Evohome support for Home Assistant (and other automation platforms), see https://www.home-assistant.io/integrations/evohome\n\nThis client requires the [aiohttp](https://pypi.org/project/aiohttp/) library. If you prefer a non-async client, [evohome-client](https://github.com/watchforstock/evohome-client) uses [requests](https://pypi.org/project/requests/) instead.\n\nPlease contact me (e.g. open an issue) if you would like to help extending the functionality of **evohome-async** to include cooling, as support for such is minimal currently.\n\n### CLI for schedules\n\nIf you download the git repo you can use a basic CLI for backup/restore of schedules (incl. DHW, if any), for example:\n```\npython client.py -u username@gmail.com -p password get-schedules --loc-idx 2 > schedules.json\n```\n... and to restore:\n```\npython client.py -u username@gmail.com -p password set-schedules --loc-idx 2 -f schedules.json\n```\n\nTo avoid exceeding the vendor's API rate limit, you can cache the access tokens via the `--cache-tokens` switch.\n\n> Beware that the above switch will save your tokens to **.evo-cache.tmp**: this presents a security concern.\n\n### Differences from non-async version\nThe difference between the **evohomeasync** and **evohomeclient** libraries have been kept to the minimum, and it is planned for exisiting docs to be useful.  Thus, it should be relatively easy to port your code over to this async library should you wish.\n\nThe non-async documentation (from **evohomeclient**) is available at http://evohome-client.readthedocs.org/en/latest/\n\n#### Technical differences\nSome additional functionality has been added to the methods that wrap the vendor APIs (e.g. restore schedules by name, as an alternative to by id). Note that this library is not able to expose more _core_ functionality than it's non-async cousin (i.e. they both use the same vendor API).\n\nNote that since **0.4.0**, some attributes have been renamed, and a few have been deprecated altogether (when required, an informative exception will be thrown).\n\nIn both cases (`evohomeclient2` and `evohomeclient`):\n - requires **aiohttp** instead of **requests**:\n - added a new instantiation argument, `session` to allow the client to utilize the consumer's **aiohttp** session\n ```python\n    self._session = kwargs.get('session', aiohttp.ClientSession(\n        timeout=aiohttp.ClientTimeout(total=30)\n    ))\n```\n\nFor the newer evohome API (evohomeclient2):\n - `import evohomeasync2` instead of `import evohomeclient2`\n - must invoke `await client.login()` after instntiating `EvohomeClient`\n - gerneric `Exceptions` have changed...\n    `requests.ConnectionError` becomes: `aiohttp.ClientConnectionError`\n    `requests.HTTPError` becomes `aiohttp.ClientResponseError`\n - but in most case, exceptions are no longer generic (since **0.4.0**)...\n    `RateLimitExceeded`, and `AuthenticationFailed` (among others)\n\nFor the older evohome API (evohomeclient):\n - `import evohomeasync` instead of `import evohomeclient`\n - Exceptions change similar to the above\n\nOther minor changes:\n - some attrs/methods have been renamed (invoking the old name will advise the new name)\n - `Hotwater.zoneId` is deprecated (can use `.dhwId`, or `_id`)\n - `ZoneBase.zone_type` is deprecated (use `.TYPE`))\n - some sentinel values are now `None`\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "An async client for connecting to Honeywell's TCC RESTful API.",
    "version": "0.4.19",
    "project_urls": {
        "Bug Tracker": "https://github.com/zxdavb/evohome-async/issues",
        "Homepage": "https://github.com/zxdavb/evohome-async",
        "Wiki": "https://github.com/zxdavb/evohome-async/wiki"
    },
    "split_keywords": [
        "evohome",
        "honeywell",
        "resideo",
        "round thermostat",
        "tcc",
        "vision pro"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "448a1acbc89ab87d0a8357cff4b5bf5322549a5d162a324abffacb9f45136db4",
                "md5": "db1e31583a0ac584e65fc0bc8d441fd5",
                "sha256": "bcfed99790a73502641129335d33a12a3c101ef2b4cee4268866206bd6b204d4"
            },
            "downloads": -1,
            "filename": "evohome_async-0.4.19-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "db1e31583a0ac584e65fc0bc8d441fd5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 50092,
            "upload_time": "2024-02-10T22:31:20",
            "upload_time_iso_8601": "2024-02-10T22:31:20.716482Z",
            "url": "https://files.pythonhosted.org/packages/44/8a/1acbc89ab87d0a8357cff4b5bf5322549a5d162a324abffacb9f45136db4/evohome_async-0.4.19-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "77ca047e5251019cf6df7f234f1cb604b91e11841324739a27e43a49f8cf3090",
                "md5": "a2c0b0372689ff72bd9086ac35279ca0",
                "sha256": "ec5a485d58072443137bcade557ebf6a338e25b803eb1897f589e1c80b110192"
            },
            "downloads": -1,
            "filename": "evohome_async-0.4.19.tar.gz",
            "has_sig": false,
            "md5_digest": "a2c0b0372689ff72bd9086ac35279ca0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 78009,
            "upload_time": "2024-02-10T22:31:18",
            "upload_time_iso_8601": "2024-02-10T22:31:18.811284Z",
            "url": "https://files.pythonhosted.org/packages/77/ca/047e5251019cf6df7f234f1cb604b91e11841324739a27e43a49f8cf3090/evohome_async-0.4.19.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-10 22:31:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "zxdavb",
    "github_project": "evohome-async",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "evohome-async"
}
        
Elapsed time: 0.18350s