Package: evohome-async
evohome-asyncPython client toasynchronouslyaccess theTotal Connect ComfortRESTful API.It is intended to be a faithful port ofhttps://github.com/watchforstock/evohome-client, but async-aware.  That is, it exposes a superset of theevohome-clientschema (same namespace, same JSON), but with some notable differences between the two (see below).It provides support for Honeywell/Resideo TCC-based systems, such asEvohome,Round Thermostat,VisonProand others:it supportsonlyEU/EMEA-based systems, please usesomecomfortfor US-based systemsit provides Evohome support for Home Assistant (and other automation platforms), seehttps://www.home-assistant.io/integrations/evohomeThis client requires theaiohttplibrary. If you prefer a non-async client,evohome-clientusesrequestsinstead.Please contact me (e.g. open an issue) if you would like to help extending the functionality ofevohome-asyncto include cooling, as support for such is minimal currently.CLI for schedulesIf 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.jsonTo avoid exceeding the vendor's API rate limit, you can cache the access tokens via the--cache-tokensswitch.Beware that the above switch will save your tokens to.evo-cache.tmp: this presents a security concern.Differences from non-async versionThe difference between theevohomeasyncandevohomeclientlibraries 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 (fromevohomeclient) is available athttp://evohome-client.readthedocs.org/en/latest/Technical differencesSome 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 morecorefunctionality than it's non-async cousin (i.e. they both use the same vendor API).Note that since0.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 (evohomeclient2andevohomeclient):requiresaiohttpinstead ofrequests:added a new instantiation argument,sessionto allow the client to utilize the consumer'saiohttpsessionself._session=kwargs.get('session',aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=30)))For the newer evohome API (evohomeclient2):import evohomeasync2instead ofimport evohomeclient2must invokeawait client.login()after instntiatingEvohomeClientgernericExceptionshave changed...requests.ConnectionErrorbecomes:aiohttp.ClientConnectionErrorrequests.HTTPErrorbecomesaiohttp.ClientResponseErrorbut in most case, exceptions are no longer generic (since0.4.0)...RateLimitExceeded, andAuthenticationFailed(among others)For the older evohome API (evohomeclient):import evohomeasyncinstead ofimport evohomeclientExceptions change similar to the aboveOther minor changes:some attrs/methods have been renamed (invoking the old name will advise the new name)Hotwater.zoneIdis deprecated (can use.dhwId, or_id)ZoneBase.zone_typeis deprecated (use.TYPE))some sentinel values are nowNone