关于websocket:智汀家庭云开发指南Golang设备模块

34次阅读

共计 2041 个字符,预计需要花费 6 分钟才能阅读完成。

1. 品牌

品牌指的是智能设施的品牌,SA 通过插件的模式对该品牌下的设施进行发现管制。实践上来说一个品牌对应一个插件服务。您能够通过我的项目 根目录下的品牌查看 SA 反对的品牌。对于插件服务的详细信息能够参考 plugin

2. 设施的相干操作

在 SA 中是通过一个个命令对设施进行操作的,如果您想应用这些命令操作某一品牌的设施,首先应该装置该品牌的插件。在 SA 中装置、更新、移除插件。请参考 plugin SA 解决设施命令的流程: 客户端通过 websocket 音讯的模式将对应的操作命令发送给 SA,SA 通过 grpc 的形式将音讯转发给插件服务,插件 服务解决后,将解决的后果通过 grpc 的形式发送给 SA,SA 将处理结果以 websocket 音讯返回给客户端。

(1)设施的发现与增加

发现设施 发现设施需向 SA 发送以下格局的 websocket 音讯,字段阐明: domain: 插件名称;service:设施命令。

{"domain": "","id": 1,"service":"discover"}

胜利后 SA 会返回以下音讯

 {
  "id": 1,
 "success": true,
 "result": {
"device": {
  "id": "21394770a79648e6a3416239e1ebecb9",
  "address": "192.168.0.195:55443",
  "identity": "0x0000000012ed37c8",
  "name": "yeelight_ceiling17_0x0000000012ed37c8",
  "model": "ceiling17",
  "sw_version": "5",
  "manufacturer": "yeelight",
  "power": "on",
  "bright": 80,
  "color_mode": 2,
  "ct": 3017,
  "rgb": 0,
  "hue": 0,
  "sat": 0
 }
 }
}

manufacturer 之后的字段为设施属性,取决于设施的类型

增加设施 将发现设施操作获取的设施次要信息通过增加设施接口以下列格局发送到 SA。如果增加的设施为 SA,则 type 为 smart_assistant

{
"device": {
"name": "nisi dolore eu est",
"brand_id": "commodo es",
"address": "pariatur sint",
"identity": "velit ut ad",
"model": "proident veniam",
"type": "nisi Lorem in officia irure",
"sw_version": "qui ut",
"manufacturer": "aute Lorem pariatur volu",
"plugin_id": "dolore reprehenderit"
}
}

SA 会将该设施长久化保留在数据库中,之后便可通过插件管制设施。

(2)设施管制与设施信息
客户端同样是以 websocket 音讯的模式将命令发送给 SA。因为不同类型的设施的命令不肯定雷同,所以这里只以 yeelight 灯进行示例展现。更多类型设施的 音讯格局请浏览 WebSocket API 音讯定义

设施信息

{
"domain": "yeelight",
"id": 1,
"service": "state",
"service_data": {"device_id": "device_id"}
}
{
"id": 1,
"result": {
"state": {
  "power": "on/off",
  "brightness": 55,
  "color_temp": 4000
}
},
"success": true
}

开关

{
 "domain": "yeelight",
"id": 1,
"service": "switch",
"service_data": {
"device_id": "device_id",
"power": "on/off/toggle"
  }
}

设置亮度

{
 "domain": "yeelight",
"id": 1,
"service": "set_bright",
"service_data": {
"device_id": "device_id",
"brightness": 100
 }
}

设置色温

 {
  "domain": "yeelight",
  "id": 1,
  "service": "set_color_temp",
  "service_data": {
  "device_id": "device_id",
  "color_temp": 100
  }
}

3. 设施的权限

SA 会从插件的装置目录“插件装置目录:../../static/plugins”读取每一个插件的 config.yaml 文件以取得该设施具备的操作性能。具体方法能够查看”获取设施的操作性能:device.go“文件中的 GetDeviceActions()办法。SA 为设施的每一个性能操作设置了权限 管制,这意味着您可能只能管制某个设施的一种或多种性能。对于权限的详细信息,您能够浏览 “ 用户模块 - 权限”。您能够通过获取用户权限接口 来查看您领有的设施管制权限。

正文完
 0