简介

咱们在日常应用中,局部智能设施自身反对接入HomeKit,也就是说用户能够通过苹果手机的“家庭”将该设施进行接入、管制。但这种操作存在显著的局限性,安卓手机无奈应用,而且无奈与不反对接入HomeKit的设施进行联动。比方用iPhone近程开关家里的灯;

就拿Home Assistant来说,是一款基于Python的智能家居开源零碎,可能反对接入泛滥品牌智能设施,然而在肯定水平上也存在优劣势:第一方面劣势是具备集中化的治理;另一方面劣势是它只可能在局域网内拜访,无奈通过外网近程管制;

在此很多人还不晓得,国内首个采纳智能家居各厂商软件特点的全面开源协定,它凭借着能够离线运行在局域网内,并且通过绑定到智汀云来获取更弱小的性能,崛起的新秀。运行在局域网环境时,用户能够通过智汀APP发现与治理智汀家庭云,装置插件来对设施进行治理与管制。

其次,通过智汀云帐号,将智汀家庭云设施关联到云端,而后通过云端直达的形式反对在外网对设施进行管制。

同时提供设施间接接入云端虚构家庭的性能,不便无智汀家庭云设施的用户应用;智汀云也提供虚构家庭数据迁徙到实体家庭的接口。

对于关联到云端的家庭,智汀云提供云对云接入性能,用户可受权小度,天猫精灵,Google Nest 等智能音箱间接对设施进行管制。

二、装置第三方插件

智汀家庭云运行在 Linux 主机下,通过 Docker 来对其中的服务进行部署与资源隔离。其中局部外围服务容器须要事后配置,并且随系统启动主动运行;而插件(plugin)类服务则是由 SA 调用 docker API 的形式进行治理。

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

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

临时仅反对以镜像形式装置插件,调试失常后,编译成镜像提供给SA

  • Dockerfile示例参考
FROM golang:1.16-alpine as builderRUN apk add build-baseCOPY . /appWORKDIR /appRUN go env -w GOPROXY="goproxy.cn,direct"RUN go build -ldflags="-w -s" -o demo-plugin FROM alpineWORKDIR /appCOPY --from=builder /app/demo-plugin /app/demo-plugin # static fileCOPY ./html ./htmlENTRYPOINT ["/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-gypcd /usr/local/lib/node_modules/homebridge/sudo npm install --unsafe-perm bignumcd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdnssudo 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"}]