发送数据到家
一旦您在移动应用组件中注册了您的应用,您就可以通过提供的 webhook 信息开始与 Home Assistant 进行交互。
通过 Rest API 发送 webhook 数据
第一步是将返回的 webhook ID 转换为完整的 URL: <instance_url>/api/webhook/<webhook_id>
。这将是我们所有交 互所需的唯一 URL。webhook 端点不需要身份验证请求。
如果您在注册时提供了 Cloudhook URL,您应该默认使用该 URL,只有在该请求失败时才回退到上面描述的构造 URL。
如果您在注册时提供了远程 UI URL,您应该在构建 URL 时使用该 URL,只有在远程 UI URL 失败时才回退到用户提供的 URL。
总结一下,以下是如何发出请求:
- 如果您有 Cloudhook URL,请在请求失败之前使用它。当请求失败时,转到第 2 步。
- 如果您有远程 UI URL,请使用它来构造 webhook URL:
<remote_ui_url>/api/webhook/<webhook_id>
。当请求失败时,转到第 3 步。 - 使用在设置期间提供的实例 URL 构造 webhook URL:
<instance_url>/api/webhook/<webhook_id>
。
通过 WebSocket API 发送 webhook 数据
Webhooks 也可以通过 WebSocket API 发送 webhook/handle
命令来传递:
{
"type": "webhook/handle",
"id": 5,
"method": "GET",
// 以下字段是可选的
"body": "{\"hello\": \"world\"}",
"headers": {
"Content-Type": "application/json"
},
"query": "a=1&b=2"
}
响应将如下所示:
{
"type": "result",
"id": 5,
"result": {
"body": "{\"ok\": true}",
"status": 200,
"headers": {"Content-Type": response.content_type}
}
}
关于实例 URL 的简短说明
一些用户已经配置 Home Assistant 以便在他们的家庭网络之外可用,使用动态 DNS 服务。有些路由器不支持发夹 / NAT 循环:一个设备从路由器网络内部发送数据,通过外部配置的 DNS 服务,发送到 Home Assistant,这也位于本地网络内。
为了解决这个问题,应用应该记录哪个 WiFi SSID 是用户的家庭网络,并在连接到家庭 WiFi 网络时使用直接连接。