Skip to main content

A fully typed asyncio API for the Polyaire AirTouch AC controllers

Project description

pyairtouch

PyPI - Version PyPI - Python Version PyPI - License Tests Status

A fully typed asyncio API for the Polyaire AirTouch AC controllers.

The API supports the AirTouch 4 and AirTouch 5.

A unified public API is provided that encapsulates the underlying AirTouch version.

Example

import asyncio

import pyairtouch


async def main() -> None:
    # Automatically discover AirTouch devices on the network.
    discovered_airtouches = await pyairtouch.discover()
    if not discovered_airtouches:
        print("No AirTouch discovered")
        return

    for airtouch in discovered_airtouches:
        print(f"Discovered: {airtouch.name} ({airtouch.host})")

    # In this example we use the first discovered AirTouch (typically there is only one per network)
    airtouch = discovered_airtouches[0]

    # Connect to the AirTouch and read initial state.
    success = await airtouch.init()

    async def _on_ac_status_updated(ac_id: int) -> None:
        aircon = airtouch.air_conditioners[ac_id]
        print(
            f"AC Status  : {aircon.power_state.name} {aircon.mode.name}  "
            f"temp={aircon.current_temperature:.1f} set_point={aircon.target_temperature:.1f}"
        )

        for zone in aircon.zones:
            print(
                f"Zone Status: {zone.name:10} {zone.power_state.name:3}  "
                f"temp={zone.current_temperature:.1f} set_point={zone.target_temperature:.1f} "
                f"damper={zone.current_damper_percentage}"
            )

    # Subscribe to AC status updates:
    for aircon in airtouch.air_conditioners:
        aircon.subscribe(_on_ac_status_updated)

        # Print initial status
        await _on_ac_status_updated(aircon.ac_id)

    # Keep the demo running for a few minutes
    await asyncio.sleep(300)

    # Shutdown the connection
    await airtouch.shutdown()


if __name__ == "__main__":
    asyncio.run(main())

A more detailed example can be found in examples/example.py. The example can be run using the pdm run example command.

Say Thank You

If you would like to make a donation as appreciation of my work, please use one of the links below:

Coindrop.to me Buy Me A Coffee

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

pyairtouch-2.0.0.tar.gz (79.0 kB view details)

Uploaded Source

Built Distribution

pyairtouch-2.0.0-py3-none-any.whl (98.0 kB view details)

Uploaded Python 3

File details

Details for the file pyairtouch-2.0.0.tar.gz.

File metadata

  • Download URL: pyairtouch-2.0.0.tar.gz
  • Upload date:
  • Size: 79.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.18.2 CPython/3.10.12 Linux/6.8.0-1014-azure

File hashes

Hashes for pyairtouch-2.0.0.tar.gz
Algorithm Hash digest
SHA256 9ca317bdd87fc9e2977e0ea0a7b89d493624d566188c493ba2300d53d395c229
MD5 793a33c2418cb47efed2db2c5c44efa6
BLAKE2b-256 7279d91df3c57fcfeb09523f286c9a7e4b22fcdcb61c5ff5179283f1c1766186

See more details on using hashes here.

File details

Details for the file pyairtouch-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyairtouch-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 98.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.18.2 CPython/3.10.12 Linux/6.8.0-1014-azure

File hashes

Hashes for pyairtouch-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 824a312965f1669a6c2b4cedac7f0fa11317273cf15e63b9d842aa4f2db94ca8
MD5 7530b79dfa4084cb0841f9dde5fcd7ae
BLAKE2b-256 df11e080f5bcbbac4499daf652fca2aecee243846606c1f516969bc6b65f6b18

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