转载:从米家到 HomeKit,你只需要一个树莓派

2017.10.21 该教程针对 Raspbian Stretch (8 月起基于新版 Debian 的系统)更新,请注意文章中提示 Stretch 必要的操作。目前没有现象表明 Raspbian Stretch 会对以下步骤造成影响。

2017.7.7 新版视频教程更新,修正错误,并改用 homebridge-mi-aqara,新用户请参考新版视频教程。以下原文未更新新版,仅做关键错误修正。手动更新仅需修改以下几步:

1. 在 ./homebridge/config.json 配置文件中 platform "AqaraPlatfom" 改为 "MiAqaraPlatform",注意,如果你想让两个插件同时运行,"AqaraPlatform" 和 "MiAqaraPlatform" 信息不能重复(即不能把一个网关同时绑定给两个插件)否则会报错退出。

2. 文章中的这一步操作

sudo npm install -g homebridge-aqara

应改为

sudo npm install -g homebridge-mi-aqara

然后你需要把 homebridge-aqara 卸载,否则可能报错未填写信息。

sudo npm uninstall -g homebridge-aqara

如果你无法控制插座和网关灯

这说明你的 password 填写错误,请注意 HomeKit 获取设备数据(例如你的开关是否打开)无需密码,成功配置 HomeKit 不代表你的密码正确,且该密码 [区分大小写,重要],在 iOS 米家 App 中获取到的 Key 应该为全部大写,则你应该修改 config.json 中的密码(不修改 sid)为大写,这一点在两个版本的视频教程中都按照了「作者有误导性的要求的(作者只要求了 MAC 地址全部小写,但让人看起来像是密码和 sid 都要小写,因为 sample 也是全部小写的,可能作者本身使用 Android 环境)」全部使用小写,请根据自己情况填写大小写。

这里再特别提醒,不是一定要大写,是区分大小写。

如果你在 iOS 获取密码,并且在配置文件中填写大写密码,你确定什么也没做错,仍然无法控制,你可以请求你身边的 Android 朋友帮助让他们登陆你的账号重新刷新密码(该操作无需在局域网内,有小米账号密码即可),Android 客户端会自动获取小写密码,保存后在配置文件中填写小写即可。如果你没有方便的 Android 手机也可以使用 Android 模拟器/虚拟机来完成该操作。

强烈建议跟随视频教程


以下为原正文部分

iOS Home App 还是米家?

HomeKit 相信各位都非常熟悉了,得益于它原生自带,在 iOS 上可以说是十分优秀的。无论是你可以告诉 Siri 我回家了,早上好等这样的文字激活你设置好的场景,还是可以直接从控制中心看到和控制你所有支持的设备,比起其他第三方智能家居 App 使用体验都更佳。

米家则是小米很早就推出的智能家庭系统,其最大的特点是便宜和基础。它的很多设备说实话,可以做到绝大多数目前支持 HomeKit 的设备正在卖,并高价卖的功能。如 D-link 推出的 180 度家庭摄像机,售价 1600 多。除了可以直接看完 180 度,无需旋转机器,还可以设置网格内点特别关注功能以外,其他对比小米,或者国内很多品牌真的没有什么特点可言,因此米家也成为了用户进入智能家庭领域的入门首选。

小米曾经自己推出米家 - HomeKit 的工具,只可惜限定了小米路由器硬盘版,且十分不稳定,不知道看到这篇文章的还有没有使用该插件的朋友。而小米自己的米家 App 不仅无法快速控制(部分设备支持)且 App 内有商城广告等信息,界面冗杂。因此是时候我们动起手来将它手动桥街到 HomeKit 了,这里使用的是小米公司的合作企业 (?) 绿米开放的 API。

完成以下的操作,你只需要一个树莓派,或者永不关机(或者你需要的时候不关机的)Mac Windows 或 Linux 设备。整个过程可能需要 30 分钟,我特别录制了一个完整的从 0 到全的教程视频,以 macOS 举例。Windows 可以在 GitHub 找到 HomeBridge 项目并了解如何安装,并安装对应的插件,然后在 Windows 中使用与视频类似的方法完成。

操作之前

1. 文中提到的树莓派是英国树莓派基金会开发的 Linux 单板机电脑,售价便宜,其目的是用于教育行业降低学校教学生编程的成本。也得益于此,很多人也用它来做小型开发。这里用它主要是看中了它一直不关机功耗较低的特点,HomeBridge 本身可以在任何系统运行(包含 Windows)但是如果你将一台自用的电脑一直开机,不仅对硬件有些损耗,电消耗也是较大的。

2. 你最好有一定使用 Linux 或者 macOS 终端的基础,这样接下来的操作你不仅不会觉得困难,反而会感到非常熟悉。如果没有也不要紧,请紧跟视频教程操作。

3. 以下看似复杂的操作其实做起来都很简单,你知道第一次做好之后,以后只需要当你树莓派关机之后重启的时候重新打开一下 Homebridge 就好了(甚至你可以写一个开机自启动连这步都不需要)你就可以一直享受 HomeKit 带给你的方便。

项目地址

核心 HomeBridge 和 插件 HomeBridge-Mi-Aqara

文字教程

以下直接做一个上面视频的文字版本,流程也按照视频上的来:

大家好,这个视频是教你如何将米家的设备通过树莓派 HomeBridge 连接到你 iOS 设备的 Home App 上的,首先我们要明确它支持的设备。

[门窗传感器] 是类似 Apple 在销售的 Elgato Eve Door & Window 是很类似的,它是由一个磁铁一样的,当磁铁激活的时候也就是门和墙壁靠近连接上,它就认为你关门了,如果磁铁断开就表明你开着门。

[圆形的开关] 主要是和小米的米家其他设备联动,但是很遗憾这个不支持今天要讲的 HomeKit。

[温湿度传感器] 可能北方用的比较多,南方大概会少一些,字面意思理解就可以。

两个 插座 有基础班和 Zigbee 版,你需要购买因为只支持 Zigbee 版,Zigbee 是刚刚说的传感器的传输协议,也是为什么只有 Zigbee 版才能支持今天说的 HomeKit 的原因。

还有就是 Yeelight 的几个设备,但是你可能需要了解另一篇文章。因为 HomeBridge 实际上支持众多插件,Yeelight 与接下来用到的插件不相同,可以参考少数派稍早前选过的文章,虽然方法类似但是也是有区别的。

另外支持的设备还有 Aqara 墙壁开关,上述设备可以在小米之家,小米官网,米家 App 中购买。

在你使用这些传感器之前,你需要购买这个 149 元的网关,这是使用这些传感器的基础,是必备的,不能单独只购买传感器,如果你已经有网关了,可以单独购买这些传感器增加它们的监测点。

其实 Apple 在卖的 Elgato 系列为什么这么贵呢?有一个原因是它自带网关,HomeBridge 其实就是有点类似网关的东西。

在开始之前,你一定要能够用 SSH 登陆上你的 Pi,注意 2016 年 11 月的新版本系统之后,树莓派默认禁用 SSH,你需要手动开启。如果你没有屏幕,请将 SD 卡连上读卡器,找到 boot 这个分区,创建一个叫做 ssh 的空白文件,方法是 cd 到该文件夹,然后执行下面命令。

sudo touch ssh

好的,我们回到刚刚的 GitHub 项目(HomeBridge)找到 Wiki,点击右边的 More,找到 Running HomeBridge on a Raspberry Pi。第一步是安装 C++ 14,如果你知道你是 Raspberry Jessie 版本,这不可以跳过,如果你不清楚你的版本,运行这个命令检测一下 gcc -v

如果你是 4.9.2 就可以不用管了,否则执行以下命令:

sudo apt-get install gcc

接下来安装 NodeJS,Wiki 上有很大一部分是手动方法,你只需要输入以下命令就可以。如果你发现速度很慢,你可能需要更改中国软件源,参考文章:Raspbian 中国软件源

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - 
sudo apt-get install -y nodejs

接下来是安装 Avahi,当然也只需要简单的复制一行代码就可以:

sudo apt-get install libavahi-compat-libdnssd-dev

最后安装 HomeBridge 本体和插件:

如果你使用 Raspbian Stretch 则必须加上 --unsafe-perm 参数:

sudo npm install -g --unsafe-perm homebridge

或者

npm install homebridge

然后安装所需要的插件

sudo npm install -g --unsafe-perm homebridge-mi-aqara

安装好后便可以直接输入 homebridge 回车看能否正常运行,如果你看到灰色底和数字 031-45-154 就可以按 Ctrl+C(注意以下涉及到 Ctrl 的,均为 Mac 也需要使用 Ctrl 而不是 Command)停止运行。接下来执行以下命令创建一个文件夹:

mkdir ~/.homebridge (可能提示已经创建 则可以忽略本步骤)
cd ~/.homebridge (定位到该文件夹)
nano config.json (如果你喜欢 vi 编辑器也可以)

然后复制进入以下文字:

{"bridge":{"name":"Homebridge","username":"CC:22:3D:E3:CE:23","port":51826,"pin":"233-62-666"},"platforms":[{"platform":"MiAqaraPlatform","sid":[""],"password":[""]}]}

其中 name 是你在 iOS 家庭 App 上可以看到的桥(你一般不会看到)的名字,我建议就叫 Homebridge,username 需要是类似 MAC 的格式,但是文字可以随意填写,所以你也不需要更改了。port 随意,确保不要被占用。pin 随意,为密码,需要是 8 位数字,格式为 xxx-xx-xxx,比如 123-45-678。下面的 platform 不能修改,sid 和 password 是什么,这就需要在手机上操作了,首先按 Ctrl+O 回车保存。

在手机上打开米家 App,点击你的网关,右上角三个 ···,并狂按底部空白区域(视频说掉了,重要),直到出现局域网通信协议和套装版本,主版本,网管信息为止。

点击局域网通信协议,打开,并刷新一个密码,大小写请保持,并记录该文本。

返回,点击网关信息,找到 mac: 后的文字,如本截图中的 28:6C:07:85:B3:0E,去掉 : 并全部改为小写,也记录这段文字,如本截图中的文字处理后的结果就是 286c0785b30e。

第一个文字就是你的 sid,第二个就是 password。如果你有多个网关用逗号链接,比如 cb30a01c1bcc4b3c, dc41b12d2cdd5c4d, ed52c23e3dee6d5e,password 同理。打开刚刚在树莓派编辑的 config.json 输入上面获得的文字,并 Ctrl+O 保存。7 月 5 日更新注意,下面这张图 sid 和 password 填反了。

然后你就可以再次直接运行 homebridge 了,你会发现它包含以下文字:Loading 1 platforms... Initializing AqaraPlatform platform..,并有一个你设置好的新密码,电脑上的操作就到这里了(不要关闭终端窗口)。

打开 iPhone, iPad 等设备上的家庭 App,点击添加配件,点击 Homebridge,手动输入你设置的八位密码(一般来说用相机扫描不太能成功……)并可以配对成功。

接下来你就可以手动设置你的设备,更改名字,位置和类型,下面的包含在个人收藏可以让你在控制中心快速访问这些配件。

全部配置完毕后,你的 Home 已经全部配置成功。

你可以在控制中心快速控制或者查看设备状态。

在 Home App 中长按会有更多选项界面。

最后你会发现,你的 HomeBridge 一旦 SSH 窗口关闭就会停止,你可以安装 screen 来解决这个问题。apt-get 安装即可:sudo apt-get install screen

安装完毕后 screen -S(注意是大写)窗口名字可以随意取,如:screen -S homebdg

然后在这里面运行 homebridge

即使关闭 SSH,只要树莓派开机都会保持运行,或者你也可以直接设置为开机启动,详细可单独搜索方法,教程到这里也就结束了。

如果在过程中遇到任何问题,欢迎在评论提出。如果文章有毛病,也可以向我提修改建议 :)

从米家到 HomeKit,你只需要一个树莓派的更多相关文章

  1. win7系统的右键菜单只显示一个白色框不显示菜单项 解决办法

    如上图所示,桌面或其他大部分地方点击右键菜单,都只显示一个白色框,鼠标移上去才有菜单项看,并且效果很丑 解决办法: 计算机-右键-属性-高级-性能-设置-视觉效果-淡入淡出或滑动菜单到视图,将其前面的 ...

  2. Android 只开启一个Activity实例

    在一个Activity中,多次调用startActivity()来启动另一个Activity,要想只生成一个Activity实例,方法有两种. 方法一:设置起动模式 一个Activity有四种启动模式 ...

  3. PPTP VPN 限制一个账号只允许一个用户来登录

    创建auth-up文件 vi /etc/ppp/auth-up chmod a+x /etc/ppp/auth-up auth-up脚本内容如下 #!/bin/sh # get the usernam ...

  4. form表单里如果只存在一个文本框,enter键提交

    在这里说一说浏览器里form表单的默认行为 我们都知道浏览器是存在很多默认行为的,可能是出于常用行为考虑又或者是历史原因.但有时候我们不需要这些默认行为.以下: 1).当form表单里只存在一个inp ...

  5. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  6. VC只运行一个程序实例

    方法有很多,以下只是提供一种用的多的 一. 单文档程序 在程序App类的InitInstance中添加如下代码 BOOL CDDZApp::InitInstance() { /*只运行一个实例*/ / ...

  7. 设置IE8 多个Table只产生一个进程

    //设置IE8 多个Table只产生一个进程 using Microsoft.Win32; RegistryKey key = Registry.LocalMachine; RegistryKey s ...

  8. WinFrom 只启动一个exe,并且获得焦点

    只启动一个exe方法: using System; using System.Collections.Generic; using System.Runtime.InteropServices; us ...

  9. 预编译那些事#define后面只跟一个“参数”

    一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时对一组语句进行编译,而当条 ...

随机推荐

  1. 读懂复杂C声明的黄金法则

    在网上遇见felix,他让我读 http://www.felix021.com/blog/read.php?2072,读完之后觉得收获很大,需要练习一下. 黄金法则:从声明的变量开始,先向右看,再向左 ...

  2. LintCode 35: Reverse Linked List

    LintCode 35: Reverse Linked List 题目描述 翻转一个链表. 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1 ...

  3. 让PHPCms内容页支持JavaScript_

    在PHPCms内容页中,出于完全考虑,默认是禁止JavaScript脚本的,所以我们在添加文章时,虽然加入了js代码,但实际上并没有起作用,而是以文本形式显示.如果要让内容页支持JavaScript, ...

  4. 倍增 Tarjan 求LCA

                                                                                                         ...

  5. Python练习-无参装饰器的正确打开方式

    import time def DecoUserPrint(UserFunc):#定义一个DecoUserPrint接收参数的多重方法 def DecoPrint(): StartTime = tim ...

  6. mysql 数据范围总结

    MEDIUMINT 带符号的范围是-8388608到8388607,无符号的范围是0到16777215,使用3个字节. 一般情况下推荐使用 unsigned (无符号,即只接受正整数)

  7. Jetson TX1 安装Kinect驱动

    1.添加Universe源 $ sudo apt-add-repository universe $ sudo apt-get update 2.安装编译工具和依赖项 $ sudo apt-get i ...

  8. Once you eliminate all the other factors,the only thing remaining must be the truth.

    Once you eliminate all the other factors,the only thing remaining must be the truth. 一旦你排除了杂因,剩下的一定是 ...

  9. weblogic更改端口

    两种方式: 1.访问console控制台页面,进入“环境\服务器\需要修改端口的服务器如AdminServer”,修改监听端口,保存并激活更改即可: 2.修改配置文件,进入weblogic的域目录,如 ...

  10. Ubuntu_搜狗输入法安装

    前言 由于很少使用Linux系统,所以闲下来打算看一看,在安装完成后,遇到无法输入中文的问题.我使用的是小鹤双拼,所以习惯使用搜狗输入法,本文记录一下如何在ubuntu系统下安装小鹤双拼 由于前两次并 ...