用树莓派和米家实现HomeKit智能家居

用树莓派和米家实现HomeKit智能家居

2018年4月14日更新:

关于最近网友反映不能控制的问题,我又找了一张内存卡,在树莓派3B原生系统上,按照本文方式,重新实验了一次,是可以实现的。

网友们的问题可能出现在小米网关的“网关信息”中的mac地址,即为你要填上去的地址,是要去掉冒号且英文全部小写的;“局域网通信协议”中的密码是大小写和网关显示的要一致的!

视频如下:

https://www.zhihu.com/video/968475913508311040

当然如果还是不能用的话,回头我再写一篇关于home-assistant的文章,它功能更强大的家庭自动化平台!先行奉上其中文站网址:Home Assistant 中文文档


以下为原文


通过本教程,您将实现用iOS设备(手机、平板),实现基于米家智能家居的控制,甚至实现智能家居的自动化运行等操作。


需要准备的物品如下:

  • 树莓派3 一台
  • 电脑一部
  • 运行最新系统的iOS设备一部
  • 小米智能网管(二代)一部
  • 小米系温湿度传感器和智能插座(ZigBee版)
全家福
树莓派(RaspberryPi)(什么是树莓派?)原是英国树莓派基金会为学习计算机编程教育设计的一种微型电脑。只有信用卡大小,基于Linux系统。自问世以来,树莓派便受到追捧,极客们脑洞大开,使得树莓派在计算机和物联网等领域,有着广泛的应用。
官方推荐的树莓派第三方系统

我们就要用树莓派结合iOS操作系统,来实现智能家庭控制。

HomeKit原是伴随iOS 10系统发布的,意在实现智能化家庭控制,然鹅支持HomeKit的配件,在大中国区,种类少得可怜,而且价格和Apple一样高冷...在国内,为“广告”而生的小米系企业也在做智能家居配件,可是在iOS端,却只能用“米家”app设置,便利性和装逼指数上,都差了一些,如若是能接入HomeKit,那岂不是很爽。

鉴于鄙人大学是自动化专业,对自动控制略知皮毛,甚至还取得过一些不值一提的成就,原计划想用Ardunio单片机来自己组建智能家庭的控制系统(其实是为了啤酒发酵时便于控制温度)。后来了解到小米的智能家庭套件也可以很方便的满足我的需求,再后来发现利用树莓派就可以把小米套件接入HomeKit,就可以用来装x了,于是,搞起!

教程大纲:

  1. 启动树莓派
  2. 安装应用及插件
  3. 配置homekit

1.启动树莓派

Step1:

树莓派3是以micro SD卡做为存储空间的,相当于电脑中的硬盘,运行的系统和软件等均需要安装在这个存储卡中,我们需要像装电脑系统一样,给树莓派也装一个它可以运行的系统。

将下载好树莓派官方系统文件(点我下载),解压出img文件。

准备至少8G的micro SD存储卡插入你的Mac电脑。

打开系统烧录软件 ApplePi-Baker(点我下载),如图数字顺序,完成树莓派系统的烧录。

ps:win 平台的同学可以使用“Win32DiskImage”进行系统烧录

请按照图片数字顺序烧录系统

Step2:

我们会以ssh的方式、通过Wi-Fi连接树莓派(新版的树莓派3B版已经集成Wi-Fi和蓝牙功能),但是现在的树莓派官方系统默认关闭了ssh功能,于是我们需要生成ssh和网络配置文件(win系统的同学可以用“记事本”来生成这两个文件,切记确保ssh是无后缀的文件),操作如下:

打开Mac中的“终端”应用,分别输入如下代码:

touch ssh
touch wpa_supplicant.conf

于是,你会在Finder的 /User/你的名字/文件夹中,找到这两个文件,接下来我们要配置一下刚刚生成的wpa_supplicant.conf 文件,来保证你的树莓派在开机之后,便可以连上Wi-Fi。

用“文本编辑”打开它,将以下代码粘贴过去,将“Wi-Fi名称”和“Wi-Fi密码”替换成你需要连接的相应网络信息,保留双引号。

ps2:树莓派仅支持2.4G网络

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1

network={
ssid="Wi-Fi名称"
psk="Wi-Fi密码"
key_mgmt=WPA-PSK	  
}

修改好了之后,复制ssh和wpa_supplicant.conf文件到micro SD卡的根目录中,弹出,将其插入树莓派中,树莓派通电就可以了。

Step3:

下面我们要使用ssh方式连接树莓派,下载相应的插件,完成HomeKit所需的配置等。

首先,登陆你的路由器后台,找到名称为“raspberrypi“的设备,并记下本地IP地址。

打开“终端”(win系统可以使用“puTTY”),输入以下代码,其中IP地址应为你记下的地址。

ssh pi@192.168.3.158

按下回车,会提示是否继续连接,输入“yes”后,系统会提示请求输入密码,树莓派ssh连接方式的默认密码为“raspberry”,Linux系统在输入密码时是不显示的,你只需要按照正确的顺序输入密码即可。如果你看到绿色的“pi@raspberrypi:~ $”字样(如下图),那么恭喜你,你已经成功连接到树莓派了。

2.安装应用及插件

Step4:

连接成功之后,可以更新一下系统插件,代码如下(请逐行输入并按回车键):

sudo apt-get update
sudo apt-get upgrade
更新完毕

通长更新需要十几分钟,如果更新缓慢,可以尝试切换软件源,先按下“control”+“c”停止当前更新操作,Mac同学请注意,这里不是cmd键。如更新正常,则不要更换!!

更换软件源代码如下:

sudo nano /etc/apt/sources.list

在弹出的页面,需要把默认源前面加 “#” 号注释掉(最好不要直接删掉),在末尾粘贴想要更换的软件源即可。

国内玩家可以选择阿里的软件源:

deb mirrors.aliyun.com/rasp jessie main non-free contrib

deb-src mirrors.aliyun.com/rasp jessie main non-free contrib

改好后,按“control”+“o”保存,回车,“control”+“x”退出。再次输入前文更新代码,尝试更新系统插件。

系统插件更新完毕后,可重启树莓派:

sudo reboot

待树莓派重启完毕,打开“终端”,再次与树莓派建立ssh连接,就可以安装各种插件了。


  • 安装nodejs,依然是逐行安装:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
  • 安装avahi:
sudo apt-get install libavahi-compat-libdnssd-dev

提示:如果avahi安装失败,可切换回默认软件源试试看。


  • 安装homebridge:
sudo npm install -g --unsafe-perm homebridge
  • 安装home-mi-aqara插件
sudo npm install -g homebridge-mi-aqara

至此,所有插件已经安装完成,此时可以输入:homebridge,按回车,如果出现下图样式,则表示HomeKit所需的所有插件已经安装成功啦。

3.配置HomeKit

Step5:

首先”control“+”c“来结束homebridge的运行,接下来执行下列代码来创建文件夹,并修改配置文件。

cd ~/.homebridge
nano config.json

复制以下代码,将其粘贴弹出的空白页面里面(该空白页面即是config.json文件):

{
        "bridge":{
                "name":"Homebridge",
                "username":"CC:22:33:EE:CC:11",
                "port":51826,
                "pin":"123-45-678"},
"platforms":[{
                "platform":"MiAqaraPlatform",
                "gateways":{
                        "你的mac地址": "局域网通信协议密码"
                                }
                }]
}

在“你的mac地址”和“局域网通信协议密码”处分别填上的你的设备信息(参见Step6)。


Step6:

拿出你的iOS设备,按“米家”app提示连接好小米网关,在“关于”页面空白处疯狂点击,直到弹出“局域网通信协议”和“网关信息”,其中“网关信息”中的mac地址,即为你要填上去的地址,但是要去掉冒号且英文全部小写;“局域网通信协议”中的密码也相应的填上去,注意大小写和网关显示的要一致!顺便将其打开,并点击“确定”。


出现“局域网通信信息”及“网关信息”
网关mac地址
局域网通信协议密码
配置完毕的“config.json”文件

全部修改好了之后,“control”+"o"保存,回车,“control”+“x”退出,再出入:

cd ~

退出到根目录,再次输入:

homebridge

启动服务。拿出iOS设备,打开“家庭”app,点击“添加配件”,扫描屏幕上的二维码即可添加为homekit配件(请确保树莓派、小米网关、iOS设备处在同一个网络中)。

顺利添加后,就会识别到你的所有传感器了。

自动识别出的各个传感器

按照你的使用需求,配置好房间及传感器名称,你就可以调戏Siri,帮你关灯了!!

延伸阅读:

  • 调戏完Siri后,你会发现,一旦你关闭“终端”,iOS端就没办法控制智能配件了,你需要重新和树莓派建立ssh链接,并手动开启homebridge插件才能生效。太麻烦!!于是我们要让树莓派开机自启动homebridge,实现插电即用。

首先你需要安装“Screen”插件,来实现不需要启动“终端”,即可启动homebridge功能,代码如下:

sudo apt-get install screen

接下来要编辑“rc.local”文件,实现开机自启动:

sudo nano /etc/rc.local

在弹出的窗口中,“exit 0“行前,添加如下代码:

su -c "screen -dmS homebridge homebridge" -s /bin/sh pi

“control”+"o"保存,回车,“control”+“x”并退出,用代码重启树莓派测试以下吧!


  • 可是还是不够完美,比如我去楼下撸串儿,突然想起来家里电暖气还开着,恰好小区电梯维修,你又不想爬32楼,家里Wi-Fi不给力,楼下搜不到Wi-Fi信号....简而言之就是,你需要实现远程控制家中的智能配件功能,这里就需要额外的一台iOS设备了,好在苹果粑粑有详细的设置HomeKit中枢的教程,这就不需要我啰嗦了,传送门在此,走你!!


至此,树莓派+小米系智能家居配件,在iOS上实现了Homekit功能,你可以装x了!!


树莓派的更多应用,可参考:

http://shumeipai.nxez.com

https://github.com/search?utf8=✓&q=raspberrypi&type=

https://github.com/search?utf8=✓&q=树莓派&type=

特别鸣谢:

  1. 树莓派入门指南|明明白白玩 Pi 系列
  2. 无屏幕和键盘配置树莓派WiFi和SSH | 树莓派实验室
  3. 【再更新】小米网关接入Homekit/苹果Siri完整教程,声控家中设备! - 小米社区官方论坛
  4. nfarina/homebridge
  5. 从米家到 HomeKit,你只需要一个树莓派

特别感谢以上作者的分享!!

转载请注明出处!!

编辑于 2018-04-15

文章被以下专栏收录