Python API for interacting with ESPHome devices.
Project description
aioesphomeapi allows you to interact with devices flashed with ESPHome.
Installation
The module is available from the Supercacher Package Index.
$ pip3 install aioesphomeapi
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 ``esphome: 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 aioesphomeapi
import asyncio
async def main():
"""Connect to an ESPHome device and get details."""
loop = asyncio.get_running_loop()
# Establish connection
api = aioesphomeapi.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 ESPHome device.
import aioesphomeapi
import asyncio
async def main():
"""Connect to an ESPHome device and wait for state changes."""
loop = asyncio.get_running_loop()
cli = aioesphomeapi.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 aioesphomeapi 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
aioesphomeapi is licensed under MIT, for more details check LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for aioesphomeapi-9.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 143358a7bc5446bdaf7fce7d23f5426408a954d2f7ab55b9e7fb676866975d9a |
|
MD5 | ef5d6fd54a3d9b7c73018185a1095e47 |
|
BLAKE2b-256 | 5e2e0daba764cb28496b7dec7d9910ab2dfd72ea0c529439303b456e1b0b52ca |