跳转到主要内容

用于与ESPHome设备交互的Python API。

项目描述

https://github.com/esphome/aioesphomeapi/workflows/CI/badge.svg https://img.shields.io/pypi/v/aioesphomeapi.svg https://codecov.io/gh/esphome/aioesphomeapi/branch/main/graph/badge.svg

aioesphomeapi 允许您与使用ESPHome烧录的设备交互。

安装

该模块可在Python包索引中找到。

$ pip3 install aioesphomeapi

可选的Cython扩展可用于提高性能,并且模块会尝试自动构建它。

扩展需要C编译器和Python开发头文件。如果它们不可用,模块将回退到纯Python实现。

通过将环境变量SKIP_CYTHON设置为1,可以强制禁用扩展的构建。

使用方法

需要您为设备启用原生API组件

# Example configuration entry
api:
  password: 'MyPassword'

检查输出以获取设备的本地地址,或从设备配置中使用name:``under ``esphome:

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

下面的示例代码将连接到设备并检索详细信息。

import aioesphomeapi
import asyncio

async def main():
    """Connect to an ESPHome device and get details."""

    # Establish connection
    api = aioesphomeapi.APIClient("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())

订阅ESPHome设备的状态变化。

import aioesphomeapi
import asyncio

async def main():
    """Connect to an ESPHome device and wait for state changes."""
    cli = aioesphomeapi.APIClient("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()

其他示例

开发

建议在开发时使用Python虚拟环境(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

还提供了一个命令行工具用于查看日志。

aioesphomeapi-logs --help

还提供了一个命令行工具用于发现设备。

aioesphomeapi-discover

许可证

aioesphomeapi遵循MIT许可证,更多详情请查看LICENSE。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关安装包的更多信息

源代码分发

aioesphomeapi-27.0.0.tar.gz (105.4 kB 查看哈希值)

上传时间 源代码

构建分发

aioesphomeapi-27.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ x86-64

aioesphomeapi-27.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ ARM64

aioesphomeapi-27.0.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

aioesphomeapi-27.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

aioesphomeapi-27.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARM64

aioesphomeapi-27.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

aioesphomeapi-27.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

aioesphomeapi-27.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ ARM64

aioesphomeapi-27.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

由以下支持