零基础也可以打造智能家居,利用群晖docker将小米全家桶接入ios Homekit
2018-04-21 20:15:00
419点赞
4150收藏
143评论
小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情
我在2016年购入群晖的DS216+ii后,一直将它作为家庭的备份和影音中心使用,这两年小米的智能家居设备买了不少,林林总总加起来已经30多件了,最近看了几篇将小米的插件接入homekit的文章,自己也在家胡乱折腾了好几天,中间也走了不少弯路,这里把自己的经验和总结分享一下,希望有更多的人能通过本文最后实现用Siri在家享受智能家居的快乐。
本文利用docker在群晖NAS上接入的插件只有homebridge,对比一些需要home assistant辅助或者hass.io接入的更直接,简便而且不容易出错,但与之相对比的是单homebridge无法实现一些自动化功能,这个我更倾向于在米家app上直接设置而不是再单独设置一遍。这里Homebridge插件其实就是把苹果的Homekit不支持的设备,模拟成Homekit支持的设备再接入Homekit,然后就可以用siri声控了。
先来说说我为什么已经在有米家app和智能音箱小爱同学的情况下还要把小米全家桶接入ios Homekit。在有小爱同学的情况下,大部分声控功能都可以实现,但一般家里也就1,2个小爱或mini小爱,它无法做到全屋覆盖而且小爱同学在距离稍远的地方喊识别率并不高,在把小米全家桶接入siri后,因为手机大部分时间都会在身边,平时喊一声siri比小爱更方便而且识别率非常高,siri可以作为智能音箱的一个补充,再加上群晖NAS 24小时在线的优势,比用树莓派搭建起来更方便。这里建议大家还是需要先搞个米家app,把小米的设备都连进去,设置好,homekit里面设置项很少,开关之外的功能还是得靠米家自己的app。
这次安装所需要的硬件和前期准备工作如下:
1.群晖x86 CPU NAS一台。目前只有CPU架构为x86,带+号的群晖型号才能安装docker,网上似乎也有非x86型号的曲线安装python的方法,但对此我没有更深入的研究,还需要各位自行搜索。
2.
一台能固定ip的路由器。建议把各类需要接入homekit的设备都分配固定IP,因为在后面的homebridge文本编写中很多小米插件都需要具体IP地址和token,不固定IP的话一旦这个插件离线后再连上路由器IP地址就变了,还需要自己手动修改,一劳永逸固定IP就解决了。这个一般的路由基本都有类似功能了,我用的路由器是网件的R7000,在R7000上的操作具体是:打开链接 进入路由界面,点左上角的高级-安装-局域网IP设置-将路由器用作DHCP服务器这项打钩-然后点应用就可以删减固定ip了。
3.百度上下载并安装安卓模拟器来获取小米设备的token。我用的是夜神模拟器,打开模拟器进入应用中心,搜索智能家庭,下面云搜索里面能找到米家熟悉的标志,如图:
模拟器内安装好后进入米家app,登录好自己的账号,等app内刷出自己全部的米家设备后返回回主界面,点左下角的文件管理器进入路径/data/data/com.xiaomi.smarthome/databases/里,找到文件miio2.db,在文件前面打钩(默认复制),然后点最上面的父目录几下退回根目录,进入路径mnt/shared/other,点文件管理器右上角的倒数第五个按钮粘贴选择项,如图:
粘贴完后按ctrl+3打开文件中转站,在其他文件那里点打开电脑文件夹就能找到刚才的miio2.db文件了,然后打开网站链接 ,上传miio2.db,点击提交,获得token。获得了token之后建议复制在excel表格中,对照mac地址在路由器中找到小米设备的相应IP并修改名字,方便自己管理。
下面开始群晖NAS上的安装,打开群晖主界面,套件中心里搜索docker应用后安装。装好docker之后打开,在注册表页面搜索“homebridge”,如图:
下载第一个marcoraddatz/homebridge,右击下载此图像,选最新版本latest。有的人也选择安装oznu的,这里还是以marcoraddatz的为主,镜像大小为1g,大概完成时间为半小时到1小时,中间可以去干点别的事。
下载完成后进入映像菜单,双击marcoraddatz/homebridge点高级设置
在卷里点添加文件夹,在根目录下新建一个Docker文件夹,在Docker文件夹下新建一个homebridge文件夹,选择该文件夹后装在路径如图:
然后选网络,勾选最下方’使用与dockerhost相同的网络’,
然后点应用,下一步,不要去除这个运行容器的钩,虽然运行了没有用,但是会帮你在文件夹里面生成相关文件,方便后来编辑。
然后去文件夹下看看有没有生成文件后,就可以在容器菜单里面关闭这个在运行中程序了,这样homebridge就基本设置好了。
接着就是这次的重点,需要对config.json和install.sh两个文件进行编辑了,首先将这两个文件复制到自己电脑上,为了方便编辑,建议安装一个notepad++ ,用这个软件来编辑。下面就直接拿我正在使用的config.json和install.s,先来看看install.sh里面:
#!/bin/bash
apt-get install libavahi-compat-libdnssd-dev
apt-get install jq
npm install -g homebridge-aqara
npm install -g homebridge-mi-robot_vacuum
npm install -ghomebridge-sonybravia-platform
npm install -g homebridge-yeelight
npm install -g homebridge-mi-outlet
头两条#!/bin/bash,apt-get installlibavahi-compat-libdnssd-dev是这次安装必需插件,后面几条都是自己需要的小米插件包,小米的各类插件可以到这个网站上自行寻找链接,查找关键字即可,可以按照popularity排列看看使用的最多的是哪些插件,可以帮助排雷。里面可以找到具体的插件详细设置和代码,拿我自己安装的插件举例,其中homebridge-aqara支持小米的zigbee设备,插件主页链接 ,类似的homebridge-mi-robot_vacuum就是扫地机器人插件,homebridge-sonybravia-platform支持索尼电视开关,我安装jq插件也是因为这个插件里它需要。homebridge-yeelight支持大部分yeelight设备,我家里有的是吸顶灯和台灯,homebridge-mi-outlet是小米插座带usb版本的,装了是因为不包含在homebridge-aqara设备内。另外很多人选择安装支持更多小米设备的homebridge-mi-aqara插件而我还是装了aqara的原因是mi-aqara没办法在我的NAS上正确识别
。然后就到测试耐心的时候了,开始编辑config.json。这一步很容易出错,建议大家用链接 这个网站校验文本的正确性,没有错误再启动homebridge。这里再贴一个编写json的规范教程,看一看了解一下对编辑config文本帮助很大:链接 ,
{
“bridge”:{
“name”:”Lyman-Home”, 这里是你homekit桥接入的名字,随便改
“username”:”CC:24:35:E3:43:45″, 这里可以不用改,随便填,如果出现启动homebridge找不到插件的情况,可以试着修改里面几个字符
“port”:52678, 不用改,随便填
“pin”:”123-45-678″ 不用改,随便填,但要按照这个格式输
},
“platforms”:[{
“platform”:”AqaraPlatform”,
“sid”:[“xxxxxxxxx”], 小米网关的MAC地址
“password”:[“xxxxxxx”] 小米网关的通讯协议密码
},{
“platform”: “MiRobotVacuumPlatform”,
“deviceCfgs”: [{
“type”: “MiRobotVacuum2”,
“ip”: “10.0.0.18”, 扫地机IP,路由器和安卓模拟器上都能抓取,自己修改
“token”: “xxxxx”, 扫地机的token,在安卓模拟器上获取,复制到这里来
“robotVacuumName”: “robot vacuum 2”,
“enablePauseToCharge”: true,
“robotVacuumDisable”: false
}]
},{
“platform”:”SonyBravia”,
“name”:”Sony Bravia”,
“ipadress”:”10.0.0.16″, 电视IP,路由器和安卓模拟器上都能抓取,自己修改
“port”:80,
“psk”:”9999″, 索尼电视上的psk密码,自己可以设置,具体可以搜索插件名有详细教程
“interval”: 5,
“maxVolume”:35,
“extraInputs”:false,
“volumeEnabled”: true,
“appsEnabled”: true,
“channelsEnabled”:false,
“channelSource”:”tv:dvbt”,
“inputsEnabled”:true,
“detectCEC”:true
},{
“platform”:”MiOutletPlatform”,
“deviceCfgs”: [{
“type”: “MiPlugBaseWithUSB”,
“ip”: “10.0.0.13”, 米家usb插座IP,路由器和安卓模拟器上都能抓取,自己修改
“token”: “xxxxx”, 米家usb插座的token,在安卓模拟器上获取,复制到这里来
“outletName”: “bedroom outlet”,
“outletDisable”: false,
“temperatureName”: “bedroom outlet temperature”,
“temperatureDisable”: false,
“switchUSBName”: “bedroom outlet usb switch”,
“switchUSBDisable”: false}]
}]
}
这里网关是需要填写token和密码的。需要注意的是必须使用二代网关并且升级了最新的网关固件,然后在米家app里点开网关,右上角三个点-关于-屏幕最下面空白处点击5下。
会显示高级选项,点“网关信息”能看到里面的mac地址为xx:xx:xx:xx:xx:xx,复制下来并填入网关的sid里面,注意中间不要加:号并且全部小写。 网关password里的密码在关于-局域网通信协议里,里面的数字全部复制进去,全部要大写。
索尼电视的插件可以在链接 查看具体说明,里面除了能自动发现电视hdmi口下的设备外,还可以控制电视直接打开索尼自带安卓系统里安装的app等,我没有详细去玩,因为现在客厅电视接着zidoo x9s,用cec功能开机后自动进入zidoo主界面,已经非常方便了。
这里大的“platforms”只会有一个,小的“platform”可以很多个,建议看看上面的规范教程自己学习。写好后把文本输入校验网站,通过了就可以保存然后拖入群晖的docker/homebridge文件夹里了。如果出现全部设置正确但就是没办法在homekit下找到桥的可以试试群晖里关闭Bonjour服务,具体是控制面板-文件服务-高级设置-启用Bonjour服务发现那的√去掉。
另外就是bridge的username,发现不了可以随便改几个字符试试。
我的config.json和install.sh两个文件已经上传到百度云,链接 密码:luva ,各位可以自行下载参考。
第一次启动总不会很顺利,要么找不到设备,要么报错,显示容器停止。容器停止一般是配置文件语法错误了,或者是相关组件的运行包没有安装。这时可以进去容器的详细界面,查看日志,报错终端机里会有红字和黄字提示,仔细排错,慢慢来吧。
在启动之后打开终端机,如果没有问题,终端机里显示会像下图这样,然后直接输自己在config.json里设的密码连入homekit 。
打开手机的家庭,选择添加配件,输入上面的代码,如果一切正常就可以开始调戏siri啦
。
一些不常用的插座可以点进去把它隐藏掉。
最后,本文也是在参考学习了很多其他前辈大神们的文章基础上完成的,主要学习自github、smzdm、homekit.loli.ren,www.npmjs.com等网站,如有不对还请指出。尤其在github和npmjs上,大部分自己想要的插件都可以找到,同时感谢张大妈的PEKO哑虎呸呸兄,就是看了你的帖子我才去研究homekit的,希望大家都能在玩耍中找到智能家居的乐趣,谢谢大家
。
未经授权,不得转载