共计 2118 个字符,预计需要花费 6 分钟才能阅读完成。
简介
咱们在日常应用中,局部智能设施自身反对接入 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 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"
}]