智汀家庭云-开发指南Golang: 插件模块
插件模块
- 当前所说的插件仅指
设备类插件
,插件为SA提供额外的设备发现和控制功能; - 插件通过实现定义的grpc接口,以grpc服务的形式运行,提供接口给SA调用
- 插件同时需要http服务提供h5页面及静态文件
1. SA中插件的工作流程
1.1 插件部署流程
- 插件开发者将开发好的插件服务编译成docker镜像提供给SA
- SA根据插件的镜像地址判断本地是否已经拉取或更新
- 用户安装插件后,SA根据镜像运行起容器,插件往注册中心注册服务
- SA通过服务发现发现新的插件服务
1.2 插件使用流程
- 用户在界面上发现设备时对所有插件服务调用Discover接口,插件根据实现的接口返回所发现的设备
- 用户添加设备并标记设备对应的插件
- 用户请求设备的H5地址,进去插件自定义页面
- 通过交互发起自定义指令给SA,SA将指令转发给对应的插件服务
2. 接口
文件http服务 sdk提供了方便的方法进行静态文件挂载和自定义api接口实现
grpc服务, 通过实现protobuf定义的grpc接口来实现插件服务:
注:grpc接口是通用的定义,SDK对接口实现了封装,开发者使用SDK时不需要关心,仅需要实现设备类型即可。
3. sdk
为了方便开发者快速开发插件以及统一接口,我们提供sdk规范了接口以及预定义了设备模型,以下为sdk实现功能:
- 插件服务注册
- http服务
- grpc服务以及接口封装(包括设备属性获取、属性设置、消息通知等)
- 预定义模型
4. 设备模型设计
云对云接入时,需要对第三方云的命令进行解析,并通过SA对插件发起命令。
这就要求插件实现的命令必须要有统一的规范和标准,这样第三方就可以通过这个标准来控制SA的所有支持的设备。
同时也能方便SA更好的通过统一的接口以及命令来管理设备。
4.1 模型设计
SDK预定义设备类型以及属性,开发者通过引入设备类型实现相关功能。
SDK通过反射获取设备的所有属性,将属性与命令做好对应关系,这样可以使得无论设备是什么形态,都能有统一的接口以及命令进行控制。
4.1.1 插件模型定义
字段解释
- instance 实例
- attribute 属性
- val_type 值类型
- val 值
val_type
对于int型,属性可设置最小和最大值
模型
- light_bulb 灯
attribute | description | val_type | required |
---|---|---|---|
power | 开关 | string | true |
- switch 开关
attribute | description | val_type | required |
---|---|---|---|
power | 开关 | string | true |
- outlet 插座
attribute | description | val_type | required |
---|---|---|---|
power | 开关 | string | true |
- info 设备详情
attribute | description | val_type | required |
---|---|---|---|
identity | id | string | true |
model | 型号 | string | true |
manufacturer | 厂商 | string | true |
version | 版本 | string | true |
name | 名字 | string | false |
4.2 模型示例
操作某个属性时,根据属性的tag对命令中的值进行解析和校验 模型例子如下:

5. 示例项目
智汀家庭云-开发指南Golang: 插件模块的更多相关文章
- 智汀家庭云-开发指南Golang:设备插件开发
设备插件模块 开发前先阅读插件设计概要:智汀家庭云-开发指南Golang: 插件模块 使用 plugin-sdk 可以忽略不重要的逻辑,快速实现插件 插件实现 获取sdk go get github. ...
- 智汀家庭云-开发指南Golang:设备场景
场景是指通过SA实现设备联动.例如,自动检测今天的天气情况,今天无雨,定时智能音箱播放浇花提醒,并且播报今天的天气情况. 根据自身需求,把多种控制并发的事情编辑成一个场景,并命名,可以通过场景控制很多 ...
- 智汀家庭云-开发指南Golang:设备模块
1.品牌 品牌指的是智能设备的品牌,SA通过插件的形式对该品牌下的设备进行发现控制.理论上来说一个品牌对应一个插件服务.您可以通过项目 根目录下的品牌查看SA支持的品牌.关于插件服务的详细信息可以参考 ...
- 微信小程序云开发指南
一.初识云开发 官方文档 小程序·云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建服务器,可 ...
- 12-《Node.js开发指南》-核心模块
全局对象 Node.js中的全局对象是global 所有全局变量(除了global本身以外)都是global对象的属性 最根本的作用为全局变量的宿主 全局变量 //满足以下条件的是全局变量 a.在最外 ...
- 开发指南专题五:JEECG微云高速开发平台代码生成器
开发指南专题五:JEECG微云高速开发平台代码生成器 1.1. Maven开发环境搭建 在搭建jeecg的maven开发环境之前,须要先配置好本机的maven环境,并在eclipse中安装好m2ecl ...
- 开发指南专题二:JEECG微云高速开发平台JEECG框架初探
开发指南专题二:JEECG微云高速开发平台JEECG框架初探 2.JEECG框架初探 2.1演示系统 打开浏览器输入JEECG演示环境界址:http://demo.jeecg.org:8090/能够看 ...
- 智捷公开课马上开始了-欢迎大家一起讨论学习-第一系列读《Swift开发指南(修订版) 》看Swift视频教程
引用: 智捷课堂携手51CTO学院.图灵教育联合举办iOS线上培训就业班系列体验公开课. 分享移动开发.移动设计方向最新,最热,最抢眼技术热点以及设计经验.我们每周将最少举办一次公开课,同时会提前安排 ...
- 开发指南专题八:JEECG微云高速开发平台数据字典
开发指南专题八:JEECG微云高速开发平台数据字典的使用 1.标签中使用数据字典 数据字典为系统中可能用到的字典类型数据提供了使用的便利性和可维护性.下面拉框标签<t:dictSele ...
随机推荐
- C++ 三数之和
来自leecode做题时,发现的双指针用法,觉得挺有意思所以记录一下 链接:https://leetcode-cn.com/problems/3sum 题目: 给你一个包含 n 个整数的数组 nums ...
- 关于windows下 python3安装 cython的说明
针对python3.6希望在windows环境下安装cython,但是网上任何关于mingw的尝试都没有生效.所以只能下载 vs, 1.去官网https://visualstudio.microsof ...
- python入门(需要C++基础)
title: python语法入门 author: Sun-Wind date: August 25, 2021 python语法入门 博主最近参加一项比赛,因为需要用到python,所以在这里记录自 ...
- MySQL日志系统bin log、redo log和undo log
MySQL日志系统bin log.redo log和undo log 今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...
- 使用 IDEA 配合 Dockerfile 部署 SpringBoot 工程
准备 SpringBoot 工程 新建 SpringBoot 项目,默认的端口是 8080 ,新建 Controller 和 Mapping @RestController public class ...
- Mac超好用的软件合集和系统设置
软件篇 这些软件好像只有动态壁纸是收费的. 推荐的都是特别小巧,更加专注特定功能,没那么多花里胡哨.当然你们有什么更好用的也可以推荐. 简单,好用才是我最喜欢的. Bob Github开源,Bob 是 ...
- Springcloud轻松上手
Springcloud技术分享 Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来 ...
- 在C#中使用RSA进行加密和解密
这篇文章向您展示了如何在c#.net Windows窗体应用程序中使用RSA算法对字符串进行加密和解密.RSA是由Ron Rivest,Adi Shamir和Leonard Adleman开发的非对称 ...
- 第23篇-虚拟机对象操作指令之getstatic
Java虚拟机规范中定义的对象操作相关的字节码指令如下表所示. 0xb2 getstatic 获取指定类的静态域,并将其值压入栈顶 0xb3 putstatic 为指定的类的静态域赋值 0xb4 ge ...
- C# windows服务知识集锦
最近公司项目,本人也是刚接触windows服务,现在把这两天上网学习的一些资料拿出来与大家分享. 1).关于windows服务安装包的制作和自动启动服务 http://blog.csdn.net/re ...