SuperAPI AI 工具集

ha-websocket-api

编程与开发

查看项目

更新于 10-15 23:48

技能介绍

用途:为 Home Assistant 集成实现自定义 WebSocket API 命令,用于前端集成、自定义面板或第三方工具。适用场景包括需要实时数据的自定义前端面板、标准 API 未覆盖的复杂查询、集成专属配置界面、向客户端流式推送数据以及第三方工具集成。

主要能力:通过 websocket_api.async_register_command 注册命令;用 @websocket_api.websocket_command 声明命令类型与参数(voluptuous 校验);纯同步非阻塞处理用 @callback,涉及 I/O 用 @websocket_api.async_response 与 async def;支持订阅命令,通过 connection.subscriptions 注册取消回调,并用 websocket_api.event_message 推送事件;支持 @websocket_api.require_admin 限制管理员命令;默认命令需要鉴权。

使用方式:在集成顶层 async_setup 中调用注册函数(全局仅执行一次,重复注册同一命令类型会报错);若只能在 async_setup_entry 注册,需用独立的一次性标志位防止重复注册。前端通过 hass.connection.sendMessagePromise 发送命令、subscribeMessage 订阅。测试使用 hass_ws_client 发送 JSON 并断言 TYPE_RESULT。

限制与注意:仅捕获可映射为明确客户端错误码的异常,兜底分支应服务端记录日志并返回通用消息,避免泄露内部信息;websocket_api 已自动包装未处理异常为 ERR_UNKNOWN_ERROR。订阅需保存并调用所有取消函数,避免内存泄漏。命令建议以域名为前缀。具体版本要求与完整 API 细节暂未提供。