跳到主要内容

WebSocket API

必威是什么家庭助手包含一个WebSocket API。这个API可以用来将信息从Home Assistant实例流到任何实现WebSockets的客户端。必威是什么我们保持一个JavaScript库我们在前端使用的。

服务器状态

  1. 客户端连接。
  2. 身份验证阶段开始。
    • 服务器发送需要验证消息
    • 客户端发送认证消息
    • 如果认证信息正确:转到3。
    • 服务器发送认证无效. 去6号。
  3. 邮寄好的消息
  4. 身份验证阶段结束。
  5. 命令阶段开始。
    1. 客户端可以发送命令。
    2. 服务器可以发送以前命令的结果。
  6. 客户端或服务器断开会话连接。

在命令阶段,客户端为每条消息附加一个唯一标识符。服务器将向每条消息添加此标识符,以便客户端可以将每条消息链接到其来源。

消息格式

每个API消息都是一个JSON序列化对象,包含类型关键。在身份验证阶段之后,消息还必须包含身份证件,一个包含交互次数的整数。

身份验证消息的示例:

{
“类型”:“授权”,
“访问令牌”:“ABCDEFGHIJKLMNOPQ”
}
{
“id”:5.,
“类型”:“事件”,
“事件”:{
“数据”:{},
“事件类型”:“测试事件”,
“开火时间”:“2016-11-26T01:37:24.265429+00:00”,
“起源”:“本地”
}
}

认证阶段

当客户端连接到服务器时,服务器发送需要验证

{
“类型”:“需要身份验证”,
“哈乌版”:"2021.5.3"
}

来自客户端的第一个消息应该是一个认证消息。您可以使用访问令牌进行授权。

{
“类型”:“授权”,
“访问令牌”:“ABCDEFGH”
}

如果客户端提供有效的身份验证,则身份验证阶段将由发送好的信息:

{
“类型”:“确认”,
“哈乌版”:"2021.5.3"
}

如果数据不正确,服务器将以认证无效发送消息并断开会话连接。

{
“类型”:“auth_invalid”,
“消息”:“无效密码”
}

指挥阶段

在此阶段,客户机可以向服务器发出命令。服务器将使用后果消息,指示命令何时完成以及是否成功,以及命令的上下文。

{
“id”:6.,
“类型”:“结果”,
“成功”:真正的,
“结果”:{
“上下文”:{
“id”:“326ef27d19415c60c492fe330945f954”,
“家长id”:,
“用户id”:“31ddb597e03147118cf8d2f8fbea5553”
}
}
}

订阅活动

命令订阅活动将向您的客户端订阅事件总线。您可以侦听所有事件,也可以侦听特定的事件类型。如果要侦听多个事件类型,则必须发送多个订阅活动命令。

{
“id”:18,
“类型”:“订阅活动”,
//可选的
“事件类型”:“状态已更改”
}

服务器将响应一条结果消息,指示订阅处于活动状态。

{
“id”:18,
“类型”:“结果”,
“成功”:真正的,
“结果”:
}

对于每个匹配的事件,服务器将发送一个特定类型的消息事件.的身份证件在消息中将指向原始身份证件倾听事件命令

{
“id”:18,
“类型”:“事件”,
“事件”:{
“数据”:{
“实体id”:“灯,床灯”,
“新州”:{
“实体id”:“灯,床灯”,
“上次更改”:“2016-11-26T01:37:24.265390+00:00”,
“国家”:“关于”,
“属性”:{
“rgb_颜色”:[
254,
208,
0
],
“颜色温度”:380,
“支持的功能”:147,
“xy_color”:[
0.5,
0.5
],
“亮度”:180,
“white_value”:200,
“友好的名字”:“床头灯”
},
“上次更新”:“2016-11-26T01:37:24.265390+00:00”,
“上下文”:{
“id”:“326ef27d19415c60c492fe330945f954”,
“家长id”:,
“用户id”:“31ddb597e03147118cf8d2f8fbea5553”
}
},
“旧州”:{
“实体id”:“灯,床灯”,
“上次更改”:“2016-11-26T01:37:10.466994+00:00”,
“国家”:“关”,
“属性”:{
“支持的功能”:147,
“友好的名字”:“床头灯”
},
“上次更新”:“2016-11-26T01:37:10.466994+00:00”,
“上下文”:{
“id”:“E4AF5B17137425E97658041A0538441”,
“家长id”:,
“用户id”:“31ddb597e03147118cf8d2f8fbea5553”
}
}
},
“事件类型”:“状态已更改”,
“开火时间”:“2016-11-26T01:37:24.265429+00:00”,
“起源”:“本地”,
“上下文”:{
“id”:“326ef27d19415c60c492fe330945f954”,
“家长id”:,
“用户id”:“31ddb597e03147118cf8d2f8fbea5553”
}
}
}

取消订阅活动

您可以取消订阅以前创建的订阅事件。将原始订阅命令的id作为值传递给订阅字段。

{
“id”:19,
“类型”:“取消订阅活动”,
“订阅”:18
}

服务器将响应一条结果消息,指示取消订阅成功。

{
“id”:19,
“类型”:“结果”,
“成功”:真正的,
“结果”:
}

呼叫服务

这将呼叫家庭助理服务。现在没有返回值。客户可以倾听必威是什么state_changed事件,如果它对由于服务调用而更改的实体感兴趣。

{
“id”:24,
“类型”:“呼叫服务”,
“域”:“轻”,
“服务”:“打开”,
//可选的
“服务数据”:{
“color_name”:“米色”,
“亮度”:"101"
}
//可选的
“目标”:{
“实体id”:“light.kitchen”
}
}

服务器将用一条消息表示服务已执行完毕。

{
“id”:24,
“类型”:“结果”,
“成功”:真正的,
“结果”:
}

获取状态

这将得到Home Assistant中所有当前状态的转储。必威是什么

{
“id”:19,
“类型”:“获取美国”
}

服务器将响应一条包含状态的结果消息。

{
“id”:19,
“类型”:“结果”,
“成功”:真正的,
“结果”:[...]
}

获取配置

这将在Home Assistant中获得当前配置的转储。必威是什么

{
“id”:19,
“类型”:“获取配置”
}

服务器将响应包含配置的结果消息。

{
“id”:19,
“类型”:“结果”,
“成功”:真正的,
“结果”:{...}
}

获取服务

这将在Home Assistant中转储当前服务。必威是什么

{
“id”:19,
“类型”:“获取服务”
}

服务器将响应一条包含服务的结果消息。

{
“id”:19,
“类型”:“结果”,
“成功”:真正的,
“结果”:{...}
}

获取面板

这将在Home Assistant中转储当前注册的面板。必威是什么

{
“id”:19,
“类型”:“获取面板”
}

服务器将以包含当前已注册面板的结果消息进行响应。

{
“id”:19,
“类型”:“结果”,
“成功”:真正的,
“结果”:[...]
}

获取相机缩略图

在Home Assistan必威是什么t 0.69中引入。

不赞成

此websocket命令在Home Assistant Core中被降级必威是什么0.107并将在未来的版本中删除。在那之前,结果会是警告用户日志中的条目。

返回相机实体的b64编码缩略图。

{
“id”:19,
“类型”:“相机缩略图”,
“实体id”:“摄像机,车道”
}

服务器将响应包含缩略图的结果消息。

{
“id”:19,
“类型”:“结果”,
“成功”:真正的,
“结果”:{
“内容类型”:“图像/jpeg”,
“内容”:
}
}

获取媒体播放器缩略图

在Home Assistan必威是什么t 0.69中引入。

为媒体播放器获取base64编码的缩略图。

{
“id”:19,
“类型”:“媒体\播放器\缩略图”,
“实体id”:“媒体播放器、客厅”
}

服务器将使用通过base64编码的图像进行响应。

{
“id”:19,
“类型”:“结果”,
“成功”:真正的,
“结果”:{
“内容类型”:“图像/jpeg”,
“内容”:
}
}

乒乓球

API支持从客户端接收ping并返回一个pong。这作为一个心跳,以确保连接仍然是活的:

{
“id”:19,
“类型”:“平”
}

如果连接仍处于活动状态,服务器必须尽快发送回pong:

{
“id”:19,
“类型”:“乒乓球”
}

错误处理

如果发生错误,则成功输入后果消息将被设置为错误的.它将包含一个错误包含具有两个关键点的对象的关键点:代码消息

{
“id”:12,
“类型”:“结果”,
“成功”:错误的,
“错误”:{
“代码”:“无效的\u格式”,
“消息”:“消息格式不正确:字典值@data['event_type']应为str。获取100”
}
}
Baidu