返回顶部
h

home-assistant-agent-secureHome Assistant安全代理

Control Home Assistant smart home devices securely using the Assist (Conversation) API. Passes natural language to Home Assistant's built-in NLU for safe, token-efficient device control. Designed to work with a restricted non-admin HA user for minimal access exposure.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.1.0
安全检测
已通过
1,357
下载量
免费
免费
2
收藏
概述
安装方式
版本历史

home-assistant-agent-secure

Home Assistant Agent (Secure)

通过向 Home Assistant 的对话(Assist)API 发送自然语言来控制智能家居设备。

安全模型: 此技能仅使用 /api/conversation/process 端点。请勿使用该令牌调用任何其他 HA API 端点。该令牌应属于一个受限的、非管理员 Home Assistant 用户,其访问权限仅限于特定的区域和实体。

重要安全规则

  • - 调用 /api/conversation/process — 切勿调用 /api/states、/api/services、/api/config 或任何其他端点
  • 切勿输出或回显令牌值
  • 切勿将令牌用于除下方 Assist API 调用之外的任何目的
  • 切勿尝试通过浏览器或 Web UI 登录 Home Assistant — 始终使用 API 令牌
  • 如果 Assist 无法处理用户请求,请如实告知 — 不要回退到其他 API 调用

重要提示:禁用受信任网络登录绕过

如果您的 Home Assistant 实例使用 trustednetworks 认证提供程序并设置了 allowbypass_login: true,则本地网络上的任何代理或用户都可以在无需密码的情况下以任何 HA 用户(包括管理员)的身份登录。这将完全绕过此技能的受限用户安全模型。

解决方法: 在您的 HA configuration.yaml 文件中,在 trustednetworks 认证提供程序下设置 allowbypasslogin: false,或者完全移除 trustednetworks 提供程序。更改后重启 HA。

设置

1. 创建受限 Home Assistant 用户

  1. 1. 在 Home Assistant 中,前往 设置 → 人员 → 添加人员
  2. 创建一个新用户(例如 openclaw-bot)
  3. 不要将其设为管理员
  4. 设置 → 区域与区域 下,仅分配此用户应控制的区域
  5. 可选:使用自定义组或仅仪表板权限限制实体访问

2. 生成长期访问令牌

  1. 1. 以受限用户身份(openclaw-bot)登录 Home Assistant
  2. 前往 个人资料(左下角)
  3. 滚动到 长期访问令牌
  4. 点击 创建令牌,为其命名(例如 openclaw)
  5. 立即复制令牌 — 它只会显示一次

3. 配置 OpenClaw

使用以下任一方法设置 HOMEASSISTANTURL 和 HOMEASSISTANTTOKEN。OpenClaw 按以下优先级顺序应用它们(最高优先):进程环境 → .env 文件 → openclaw.json 配置。由较高优先级源设置的值永远不会被较低优先级源覆盖。

选项 A:.env 文件(推荐)

添加到 ~/.openclaw/.env:

bash
HOMEASSISTANTURL=https://your-ha-instance.local
HOMEASSISTANTTOKEN=your-restricted-user-token-here

URL 可以是主机名(例如 https://homeassistant.local)或 IP 地址(例如 https://192.168.1.50:8123)。

选项 B:配置文件

添加到 ~/.openclaw/openclaw.json 的 skills.entries 下:

json
{
skills: {
entries: {
home-assistant-agent-secure: {
apiKey: your-restricted-user-token-here,
env: {
HOMEASSISTANTURL: https://your-ha-instance.local
}
}
}
}
}

apiKey 字段通过技能的 primaryEnv 声明自动映射到 HOMEASSISTANTTOKEN。

选项 C:Shell 环境变量

在您的 shell 配置文件(例如 ~/.bashrc、~/.zshrc)中导出:

bash
export HOMEASSISTANTURL=https://your-ha-instance.local
export HOMEASSISTANTTOKEN=your-restricted-user-token-here

使用方法

以自然语言发送任何智能家居命令。该技能将其直接传递给 HA Assist:

bash
curl -sk -X POST $HOMEASSISTANTURL/api/conversation/process \
-H Authorization: Bearer $HOMEASSISTANTTOKEN \
-H Content-Type: application/json \
-d {text: 用户请求内容, language: 检测到的语言代码}

-k 标志允许连接到使用自签名证书的 HA 实例。如果您的 HA 使用受信任的证书(例如 Lets Encrypt),您可以移除它。

根据检测到的用户输入语言设置 language 字段(例如波兰语为 pl,英语为 en,德语为 de 等)。

示例

  • - 打开客厅的灯(英语)
  • Włącz światło w salonie(波兰语)
  • Schalte das Licht im Wohnzimmer ein(德语)
  • Jaka jest temperatura w kuchni?(波兰语)
  • 关闭卧室所有灯(英语)

屈折语言处理(主格重试)

许多语言使用语法格或词形变化,导致实体名称在自然语言中改变形式。Home Assistant 实体名称通常采用其基本/词典形式(主格),但用户在命令中自然使用其他语法形式。

这影响的语言包括(但不限于):

  • - 波兰语 — 7 个格(例如 drukarkędrukarkalampęlampa
  • 捷克语 — 7 个格(例如 tiskárnutiskárnalampulampa
  • 德语 — 4 个格 + 冠词(例如 den DruckerDruckerdie LampeLampe
  • 芬兰语 — 15 个格(例如 tulostintatulostinlamppualamppu
  • 匈牙利语 — 18 个格(例如 nyomtatótnyomtatólámpátlámpa
  • 俄语 — 6 个格(例如 принтерупринтерлампулампа
  • 克罗地亚语/塞尔维亚语 — 7 个格,模式与波兰语和捷克语相似

示例: 用户说 włącz drukarkę 3d(波兰语宾格),但实体名为 drukarka 3d(主格)。HA Assist 将无法找到它。

重试策略: 如果 HA 返回错误(novalidtargets、nointentmatch 或指示未找到实体的消息),并且用户输入使用的是屈折语言:

  1. 1. 识别命令中的实体名称
  2. 将屈折词转换为其基本/词典/主格形式
  3. 使用修正后的形式重试 API 调用
  4. 如果重试也失败,向用户报告错误

重要提示: 仅重试一次。不要循环。如果主格重试也失败,请告知用户未找到该实体。

处理响应

响应位于 response.speech.plain.speech 中。将其直接转达给用户:

  • - 已打开灯 → 成功
  • 抱歉,我无法理解 → Assist 无法解析请求
  • 抱歉,有多个名为 X 的设备 → 实体名称不明确

错误时(response_type: error)

错误告知用户的内容
nointentmatch尝试主格重试(如果是屈折语言)。如果仍然失败:Home Assistant 未识别该命令。
novalidtargets
尝试主格重试(如果是屈折语言)。如果仍然失败:未找到实体 — 请检查设备名称或在 HA 中添加别名。 | | 多个匹配 | 多个设备共享该名称 — 考虑在 HA 中添加唯一别名。 |

故障排除

  • - 401 未授权:令牌无效或已过期。从受限用户的个人资料生成新令牌。
  • 连接被拒绝:检查 HOMEASSISTANTURL 是否正确且 HA 可访问。
  • 命令无法理解:重新表述请求,或检查实体是否已暴露给受限用户。
  • 未找到实体:受限用户可能无权访问该区域/实体。在 HA 中更新权限。

API 参考

端点

POST /api/conversation/process

注意: 使用 /api/conversation/process,而不是 /api/services/conversation/process。

请求体

json
{
text: 打开厨房灯,
language: zh

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 home-assistant-agent-secure-1776420054 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 home-assistant-agent-secure-1776420054 技能

通过命令行安装

skillhub install home-assistant-agent-secure-1776420054

下载

⬇ 下载 home-assistant-agent-secure v1.1.0(免费)

文件大小: 7.01 KB | 发布时间: 2026-4-17 19:57

v1.1.0 最新 2026-4-17 19:57
v1.1.0: Add multilingual support with auto language detection. Add inflected language retry
(Polish, Czech, German, Finnish, Hungarian, Russian, etc.) for nominative entity name matching. Add entity
alias guidance and Trusted Networks security warning.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部