一、HTTP API 接口规范

  1. 接口鉴权

使用smartassistant接口,需将用户凭证smart-assistant-token,放在http请求的header中。格式如下:

"smart-assistant-token":"xxx"

2. 返回标准数据结构

smartassistant接口均返回JSON格式数据,格式如下:

{
"status":0,  // 状态码
"reason":"", // 状态码描述
"data":{}    // 所有业务数据返回都包含在data对象中
}

3. 错误码列表

二、设备类插件实现

开发前先阅读插件设计概要:插件系统设计技术概要

使用 plugin-sdk(code:/pkg/plugin/sdk) 可以忽略不重要的逻辑,快速实现插件

插件实现

1) 获取sdk

    go get github.com/zhiting-tech/smartassistant

2) 定义设备

sdk中提供了预定义的设备模型,使用模型可以方便SA有效进行管理和控制

设备物模型设计如下:

light_bulb灯泡

switch开关

outlet插座

info设备详情

curtain窗帘

package pluginimport ("github.com/zhiting-tech/smartassistant/pkg/plugin/sdk/instance""github.com/zhiting-tech/smartassistant/pkg/plugin/sdk/attribute"
)type Device struct {Light instance.LightBulbInfo0 instance.Info// 根据实际设备功能组合定义
}func NewDevice() *Device {// 定义属性lightBulb := instance.LightBulb{Power:      attribute.NewPower(),ColorTemp:  instance.NewColorTemp(), // 可选字段需要初始化才能使用Brightness: nil,                      // 可选字段不初始化则不从接口中显示}// 定义设备基础属性info := instance.Info{Name:         attribute.NewName(),Identity:     attribute.NewIdentity(),Model:        attribute.NewModel(),Manufacturer: attribute.NewManufacturer(),Version:      attribute.NewVersion(),}return &Device{Light: lightBulb,Info0: info,}
}

3) 实现设备接口 定义好设备之后,需要为设备实现如下几个方法:

package mainimport ("github.com/zhiting-tech/smartassistant/pkg/plugin/sdk/server"
)type Device interface {Identity() string             // 获取设备唯一值Info() server.DeviceInfo      // 设备详情Setup() error                 // 初始化设备属性Update() error                // 更新设备所有属性值Close() error                 // 回收所有资源GetChannel() server.WatchChan // 返回通知channel
}

实现如下:


package pluginimport ("github.com/zhiting-tech/smartassistant/pkg/plugin/sdk/instance""github.com/zhiting-tech/smartassistant/pkg/plugin/sdk/attribute""github.com/zhiting-tech/smartassistant/pkg/plugin/sdk/server"
)type Device struct {Light instance.LightBulbInfo0 instance.Info// 根据实际设备功能组合定义
}func NewDevice() *Device {// 定义属性lightBulb := instance.LightBulb{Power:      attribute.NewPower(),ColorTemp:  attribute.NewColorTemp(), // 可选字段需要初始化才能使Brightness: nil,                      // 可选字段不初始化则不从接口中显示}info := instance.Info{Name:         attribute.NewName(),Identity:     attribute.NewIdentity(),Model:        attribute.NewModel(),Manufacturer: attribute.NewManufacturer(),Version:      attribute.NewVersion(),}return &Device{Light: lightBulb,Info0: info,}
}func (d *Device) Info() server.DeviceInfo {// 该方法返回设备的主要信息panic("implement me")
}func (d *Device) Setup() error {// 设置设备的属性和相关配置(比如设备id、型号、厂商等,以及设备的属性更新触发函数)panic("implement me")
}func (d *Device) Update() error {// 该方法在获取设备所有属性值时调用,通过调用attribute.SetBool()等方法更新panic("implement me")
}func (d *Device) Close() error {// 自定义退出相关资源的回收panic("implement me")
}func (d *Device) GetChannel() server.WatchChan {// 返回WatchChan频道,用于状态变更推送panic("implement me")
}

4) 初始化和运行

定义好设备和实现方法后,运行插件服务(包括grpc和http服务)

package mainimport ("log""github.com/zhiting-tech/smartassistant/pkg/plugin/sdk/server"sdk "github.com/zhiting-tech/smartassistant/pkg/server/sdk"
)func main() {p := server.NewPluginServer() // 插件服务名go func() {// 发现设备,并将设备添加到manager中d := NewDevice()p.Manager.AddDevice(d)}()err := sdk.Run(p)if err != nil {log.Panicln(err)}
}

这样服务就会运行起来,并通过SA的etcd地址0.0.0.0:2379注册插件服务, SA会通过etcd发现插件服务并且建立通道开始通信并且转发请求和命令。

接着就可以开始了。

智能家居开源生态—正确的HTTP API 接口规范以及设备类插件实现相关推荐

  1. 带你了解热门智能家居开源项目:智汀家庭云与Home Assistant之插件初步配置

    简介 我们在日常使用中,部分智能设备本身支持接入HomeKit,也就是说用户可以通过苹果手机的"家庭"将该设备进行接入.控制.但这种操作存在明显的局限性,安卓手机无法使用,而且无法 ...

  2. 商业级智能家居开源项目分享

    前言 事情是这个样子的, 今天我和往常一样, 在下班之后瞅了几眼我建的几个开源技术交流QQ群, 试图寻找有价值的建设信息. 因为平时工作太忙, 基本上不会去看这些信息, 而且里面很少能获得一些有价值的 ...

  3. 智能家居开源平台——智汀家庭云(架构概述)

    智汀家庭云,立项于2021年,结合国内智能家居各厂商软件特点,研发"智汀家庭云",并对该生态系统全面开源,为国内首个采用智能家居系统全生态开源协议(Apache License, ...

  4. 快速入门智能家居开源平台——智汀家庭云(一)

    引言 智汀家庭云(SmartAssistant),立项于2021年,结合国内智能家居各厂商软件特点,研发"智汀家庭云",并对该生态系统全面开源,为国内首个采用智能家居系统全生态开源 ...

  5. 基于 ESP8266 的智能家居开源解决方案 【文章结尾有资料】

    物联网连接  IoT Connect 是一个建立在 esp8266 之上的开源物联网平台,它允许用户以最有效的方式远程连接和控制他们的家用电器. 该项目主要分为3个主要部分,即硬件.固件和Web UI ...

  6. 智能家居开源平台——Home Assistant,Domoticz和智汀家庭云

    目前,智能家居的产品非常火热,那常见的开源智能家居平台有哪些呢?据小编了解到有几个,择其中三个进行粗略描述--Home Assistant,Domoticz和智汀家庭云. 首先Home Assista ...

  7. 盘点一下智能家居开源系统及项目——Home Assistant,openHAB

    想要实现智能家居生活,自己搞也可以哦,只要你有技术.下面给大家盘点一下智能家居的开源系统及项目整理: 开源智能家居工具 Domoticz是一个轻量级的智能家居系统 ,通过它你可以监测和控制各种设备,包 ...

  8. 百度投资创维10亿,联手构建智能家居AI生态

    作者 | 明明 3月16日,百度与创维共同宣布达成全面战略合作.创维集团子公司深圳酷开网络科技有限公司获得百度公司战略投资10.10亿元,百度持股比例为11%,成为酷开第二大股东.酷开的估值达到95. ...

  9. 关于智能家居开源平台(如Home Assistant)——智汀家庭云,你需要知道的是

    大家好,之前跟大家聊了那么多关于智能家居的话题,本期小编将以我们的视角来跟大家聊一聊.我们是一个创业团队,都是刚刚毕业不久的大学生,我们一开始是做软件为主的,我们自己也有购买了多种设备自己使用,比如小 ...

最新文章

  1. centos7如何安装samba-client_如何在基本图形模式下最小化全新安装CentOS 7?
  2. 【剑指offer】面试题31:连续子数组的最大和
  3. JVM源码分析之javaagent原理完全解读
  4. 计算机与生命科学专业排名,2019软科世界一流学科排名发布,54个专业TOP10牛校榜单全给你...
  5. 考勤信息管理系统 需求说明
  6. 软件工程结对作业01
  7. thymleaf th:if标签
  8. 机器学习8-集成学习
  9. 【sklearn第二十七讲】模型持久性
  10. Spark取出(Key,Value)型数据中Value值为前n条数据
  11. 银河麒麟系统查看网络设置命令_银河麒麟配置说明
  12. 用例图分析---学生成绩管理系统
  13. Switch离线升级教程【自用】
  14. PWM波的原理和应用
  15. 地球轨道计算方法,开普勒三大定律的证明,补充-解析几何之椭圆
  16. 毕业论文格式|自制word模板 |.domt | word格式模版
  17. 【nmon】nmon :服务器监控数据采集
  18. 如何免费下载百度指数数据
  19. 【冬瓜哥论文】浅析固态介质在存储系统中的应用方式
  20. 正则表达式给查找到的内容加引号

热门文章

  1. Square:从今天開始抛弃Fragment吧!
  2. 如何才能成功的创业,创业成功的本质是什么
  3. 计算机文化基础008,山东省计算机文化基础选择题
  4. 面试笔试算法-二分专题
  5. html5栅格化,Layui删格化布局5等份(一行5列)
  6. 在线免费无限制的 PDF 处理工具(转换、编辑、分割、合并、压缩)
  7. 固定资产报废的损失鉴定怎么做?
  8. SQL Server链接服务器的使用
  9. 【串口按帧接收数据】
  10. JAVA - JDK 1.8 API 中文版