aioesphomeapi ============= ``aioesphomeapi`` allows you to interact with devices flashed with `ESPHome `_. Installation ------------ The module is available from the `Python Package Index `_. .. code:: bash $ pip3 install aioesphomeapi Usage ----- It's required that you enable the `Native API `_ component for the device. .. code:: yaml # 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. .. code:: bash [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. .. code:: python 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. .. code:: python 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: - `Camera `_ - `Async print `_ - `Simple print `_ - `InfluxDB `_ Development ----------- For development is recommended to use a Python virtual environment (``venv``). .. code:: bash $ python3 -m venv . $ source bin/activate $ python3 setup.py develop License ------- ``aioesphomeapi`` is licensed under MIT, for more details check LICENSE.