From a9192898e416091bea256c85413f5fe163ec48e1 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 19 Jun 2020 21:35:41 +0200 Subject: [PATCH] Add README file --- README.rst | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 README.rst diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..09a3661 --- /dev/null +++ b/README.rst @@ -0,0 +1,114 @@ +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 `_ + +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.