6

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

 2 years ago
source link: https://segmentfault.com/a/1190000041429262
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

简介

我们在日常使用中,部分智能设备本身支持接入HomeKit,也就是说用户可以通过苹果手机的“家庭”将该设备进行接入、控制。但这种操作存在明显的局限性,安卓手机无法使用,而且无法与不支持接入HomeKit的设备进行联动。比如用iPhone远程开关家里的灯;

就拿Home Assistant来说,是一款基于Python的智能家居开源系统,能够支持接入众多品牌智能设备,然而在一定程度上也存在优劣势:第一方面优势是具有集中化的管理;另一方面劣势是它只能够在局域网内访问,无法通过外网远程控制;

在此很多人还不知道,国内首个采用智能家居各厂商软件特点的全面开源协议,它凭借着可以离线运行在局域网内,并且通过绑定到智汀云来获取更强大的功能,崛起的新秀。运行在局域网环境时,用户可以通过智汀APP发现与管理智汀家庭云,安装插件来对设备进行管理与控制。

image.png

其次,通过智汀云帐号,将智汀家庭云设备关联到云端,然后通过云端中转的方式支持在外网对设备进行控制。
image.png

同时提供设备直接接入云端虚拟家庭的功能,方便无智汀家庭云设备的用户使用;智汀云也提供虚拟家庭数据迁移到实体家庭的接口。

image.png

对于关联到云端的家庭,智汀云提供云对云接入功能,用户可授权小度,天猫精灵,Google Nest 等智能音箱直接对设备进行控制。

image.png

二、安装第三方插件

智汀家庭云运行在 Linux 主机下,通过 Docker 来对其中的服务进行部署与资源隔离。其中部分核心服务容器需要预先配置,并且随系统启动自动运行;而插件(plugin)类服务则是由 SA 调用 docker API 的方式进行管理。
image.png

插件启动后会运行一个 gRPC 服务以及一个可选的 HTTP 服务,SA 通过 docker API 监听插件运行状态,通过 gRPC 接口获取插件信息,关于插件实现教程实现的示例插件;参考该文献:golang | 智汀科技开发文档

开发范例
1. 镜像编译和部署

暂时仅支持以镜像方式安装插件,调试正常后,编译成镜像提供给SA

  • Dockerfile示例参考
FROM golang:1.16-alpine as builder
RUN apk add build-base
COPY . /app
WORKDIR /app
RUN go env -w GOPROXY="goproxy.cn,direct"
RUN go build -ldflags="-w -s" -o demo-plugin
 
FROM alpine
WORKDIR /app
COPY --from=builder /app/demo-plugin /app/demo-plugin
 
# static file
COPY ./html ./html
ENTRYPOINT ["/app/demo-plugin"]
docker build -f your_plugin_Dockerfile -t your_plugin_name
docker run -net=host your_plugin_name
//注意:-net=host 参数只有linux环境才有用。

而对比HomeBridge:是一个动态插件,主要作用是可以让homekit识别到Home Assistant接入的设备相当于一个桥的作用。

Homebridge的安装需要npm,树莓派下安装npm有点麻烦,这里就不详细描述。安装好npm后只需按顺序输入下面语句即可安装homebridge及其相关依赖包。

sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/local/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum
cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild

接下来可以安装homebridge-mqtt了。

npm install -g homebridge-mqtt

在树莓派上,Homebridge 的配置主要是编辑「/home/pi/.homebridge」下的「config.json」文件。下面是homebridge-mqtt 配置示例。

{
"bridge": {
"name": "Homebridge",
"username": "12:34:56:78:90:AB",
"port": 38960,
"pin": "123-45-678"
},
    "platforms": [{
 "platform": "mqtt",
    "name": "mqtt",
    "url": "mqtt://127.0.0.1",
    "port": 61613,
    "topic_type": "multiple",
    "topic_prefix": "homebridge",
    "username": "admin",
    "password": "password",
    "cert": "/path/to/certificate.pem",
    "key": "path/to/key.pem",
    "ca": "/path/to/ca_certificate.pem"
}]

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK