Skip to main content

Python API for interacting with Atom devices.

Project description

aioatomapi allows you to interact with devices flashed with Atom.

Installation

The module is available from the Python Package Index.

$ pip3 install aioatomapi

Usage

It’s required that you enable the Native API component for the device.

# Example configuration entry
api:
  password: 'MyPassword'

Check the output to get the local address of the device or use the name:``under ``atom: from the device configuration.

[17:56:38][C][api:095]: API Server:
[17:56:38][C][api:096]:   Address: api_test.local:6053

The sample code below will connect to the device and retrieve details.

import aioatomapi
import asyncio

async def main():
    """Connect to an Atom device and get details."""
    loop = asyncio.get_running_loop()

    # Establish connection
    api = aioatomapi.APIClient(loop, "api_test.local", 6053, "MyPassword")
    await api.connect(login=True)

    # Get API version of the device's firmware
    print(api.api_version)

    # Show device details
    device_info = await api.device_info()
    print(device_info)

    # List all entities of the device
    entities = await api.list_entities_services()
    print(entities)

 loop = asyncio.get_event_loop()
 loop.run_until_complete(main())

Subscribe to state changes of an Atom device.

import aioatomapi
import asyncio

async def main():
    """Connect to an Atom device and wait for state changes."""
    loop = asyncio.get_running_loop()
    cli = aioatomapi.APIClient(loop, "api_test.local", 6053, "MyPassword")

    await cli.connect(login=True)

    def change_callback(state):
        """Print the state changes of the device.."""
        print(state)

    # Subscribe to the state changes
    await cli.subscribe_states(change_callback)

loop = asyncio.get_event_loop()
try:
    asyncio.ensure_future(main())
    loop.run_forever()
except KeyboardInterrupt:
    pass
finally:
    loop.close()

Other examples:

Development

For development is recommended to use a Python virtual environment (venv).

# Setup virtualenv (optional)
$ python3 -m venv .
$ source bin/activate
# Install aioatomapi and development depenencies
$ pip3 install -e .
$ pip3 install -r requirements_test.txt

# Run linters & test
$ script/lint
# Update protobuf _pb2.py definitions (requires a protobuf compiler installation)
$ script/gen-protoc

License

aioatomapi is licensed under MIT, for more details check LICENSE.

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

aioatomapi-9.1.3.tar.gz (41.8 kB view details)

Uploaded Source

Built Distribution

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

aioatomapi-9.1.3-py2.py3-none-any.whl (43.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file aioatomapi-9.1.3.tar.gz.

File metadata

  • Download URL: aioatomapi-9.1.3.tar.gz
  • Upload date:
  • Size: 41.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for aioatomapi-9.1.3.tar.gz
Algorithm Hash digest
SHA256 a394344d5f1bf35c52de64e05e98c8fac49c7fdd358db0280741bf54061e75ca
MD5 6adc8e09e384da183059e7ac91690c31
BLAKE2b-256 de2da7d94ba2c7a3135f312ff2b33eec1775bb7a3d1f30ba5677562a8bd26d50

See more details on using hashes here.

File details

Details for the file aioatomapi-9.1.3-py2.py3-none-any.whl.

File metadata

  • Download URL: aioatomapi-9.1.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 43.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for aioatomapi-9.1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4bd6c9d76c3ff686dd5ff4f96c1c7370f8a7532d19a9dbe23ecae46f2a0f913a
MD5 c8aaeb7545ff1bf3f74748adb9ae3417
BLAKE2b-256 7f357179542de2028f46fea39064d3f79151b61952daec3f781a0edf8762e537

See more details on using hashes here.

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