简介
咱们在日常应用中,局部智能设施自身反对接入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"}]