树莓派搭建 HomeKit 服务

标签: GPIO Node.js UART HomeKit Raspberry | 发表时间:2018-01-31 08:00 | 作者:Harttle
出处:http://harttle.land/

最近总有朋友问我 Apple Home 是怎么搭建的,这篇文章提供给从零开始搭建 Apple Home 的朋友。 可以自选传感器、空气净化器、以及智能开关等设备,通过树莓派接入到苹果内置的 Home 应用中。 大概是这样的效果:

home

原理介绍

从 iOS 8(2014年9月)开始,苹果内置了 名为 Home 的应用,让 iPhone/iPad 可以控制智能设备。 设备间通信采用基于 HTTP(视频相关是 RTCP)的控制协议,叫做 HomeKit,协议标准可以在 Apple Developer 网站下载到: https://developer.apple.com/homekit/specification/

HomeKit 是苹果设备之间的协议,只要你买的设备支持 HomeKit,就可以直接连接到 Apple Home。 比如这个灯泡: https://www.amazon.com/Philips-Equivalent-Dimmable-Compatible-Assistant/dp/B073SSK6P8 但现支持 HomeKit 的设备在国内很少能买到,所以我们需要把普通设备桥接到 HomeKit 协议上。

这就需要 homebridge,这是一个基于 Node.js 的服务器,可以与 iPhone/iPad 进行 HomeKit 协议的通信,同时可以载入控制各种设备的插件。我们只需要选取合适的插件,或者开发一个控制自己设备的插件即可。示意图:

home

准备材料

  • 任意一台 iOS 设备,如果需要远程操作,需要有一台 Apple TV, HomePod, 或 iPad 放在家里。
  • 一个树莓派,或者可以 24h 常开的 PC。如果使用 PC 需要 UART -< USB 转接器来连接 UART 传输协议的设备。
  • 树莓派镜像,可以在官网下载得到: https://www.raspberrypi.org/downloads/
  • 智能开关、小米空气净化器、可连接 GPIO 的传感器。

选择智能设备时,可以先在 npm 上查找是否存在对应的插件: https://www.npmjs.com/search?q=homebridge 。 对于可以遥控的非智能设备,可以通过空调伴侣来控制它,而空调伴侣是有 homebridge 插件的。 理论上可以控制任何红外线控制的设备。

硬件组装

Harttle 有一台 小米空气净化器、 一个 PMS5003ST 传感器、 一个 DS-CO2-20 传感器。

空气净化器

我有一个2代的小米空气净化器: https://www.mi.com/air2/。 它本身就是智能设备,只是不支持 HomeKit。 我们保证它连接到局域网即可,不需做任何改造。

PMS5003ST

攀藤科技的 PMS 系列的产品都是 PM2.5 检测器,5003ST 集成了温湿度、甲醛传感器。 该传感器采用 UART 协议传输数据,正好 Raspberry Pi 3 提供了一个板载 UART 模块。 把它的 RX、TX 分别连接到 Raspberry 的 GPIO 14 (TX), GPIO 15 (RX), 再把 GND 和 POWER 连接到 Raspberry 上对应的 GPIO 即可。

其中 RX 可以不连,因为数据默认是被动接收的,不需要控制命令。 Raspberry 的 GPIO 接口可以参考官方文档: https://www.raspberrypi.org/documentation/usage/gpio/

DS-CO2-20

这也是攀藤科技的产品,用来测量 CO2 浓度的,自然的值是 500ppm,室内略高,到 800ppm 会感到困。 可以用这个值设置一个报警,提醒 Harttle 及时通风。

DS-CO2-20 也是 UART 协议,但树莓派3只有一个硬解码 UART。选项有两个:

  1. 软解码。找一个 GPIO 的库(最好用 C++ 版本的),按文档设置好波特率,就可以解码了。因为攀藤科技的数据包都有校验字节,所以软解码错的直接丢掉就好了。然后可能需要自己写 homebrew 插件。
  2. 转换器。买一个 UART -< USB 转换器,接到 Raspberry Pi 的 USB 接口上面。这样就相当于多了一个 UART 接口。Harttle 选择的是这个办法。

DS-CO2-20 的数据是被动的,需要发命令给它才会发数据,所以 RX 和 TX 都要连接。

组装图

附上 Harttle 的组装效果图:

home

其中蓝色的块是 PMS5003ST,银色的块是 DS-CO2-20,插在一个转接口上。

软件

先安装 Node.js: http://nodejs.org

依次安装 homebridge, homebridge-mi-air-purifier, homebridge-plantower

    npm install -g homebridge homebridge-mi-air-purifier homebridge-plantower

根据 homebridge 给出的 示例配置文件 创建你的配置文件,可能需要参考以下文档:

配置好之后,就可以启动 homebridge 啦:

    $ homebridge

可以 为它创建一个 systemd 配置,让它开机自启。 然后把树莓 Pi 放到黑暗的角落,让它默默地工作。这是我的 Pi 的工作环境:

home

红色灯是电源,会闪动的黄色灯是 CO2 传感器,蓝色灯是 CO2 传感器的转接头。

远程操作和隐私

Home 数据虽然是通过 HomeKit 在局域网传输的,但必须开启 iCloud 才可用 Home App, 这意味你的数据一定会流经 iCloud(云上贵州?),因而完全可以远程操作。

关于共享。 在 App 中可以邀请其他 Apple 账号。邀请成功后他/她会加入你的家庭,共享所有数据。 App 内的自动化选项卡中,可以设置诸如“最后一个人出门”的规则,依靠的就是家庭成员的 Apple 账号各自的地理位置信息。

相关 [树莓派 homekit 服务] 推荐:

树莓派搭建 HomeKit 服务

- - Harttle Land
最近总有朋友问我 Apple Home 是怎么搭建的,这篇文章提供给从零开始搭建 Apple Home 的朋友. 可以自选传感器、空气净化器、以及智能开关等设备,通过树莓派接入到苹果内置的 Home 应用中. 从 iOS 8(2014年9月)开始,苹果内置了 名为 Home 的应用,让 iPhone/iPad 可以控制智能设备.

从零开始,教你用树莓派 + IFTTT 实现 HomeKit 智能家居自动化

- - 少数派
你可以现在设想一下:天气预报说要下雨了,网关灯变红. 如果爸爸回家,手机接入 Wi-Fi,赶紧推送告诉我不要看小视频了. 只要米家 + IFTTT + HomeAssistant 就可以做到. 上一章题目是《 入门智能家居,从米家到 HomeKit(一)》. 主要讲的是在「树莓派」上通过 HomeBridge 把米家智能家居接入到 iOS 的 HomeKit 中.

基于「树莓派」的家庭网络服务

- - 無標題文檔
当初组建家庭网络的时候,就考虑到自己的需求:主要是网络存储、以及跑部分比较耗时的「定时任务」,例如爬虫和下载还有部分的数据处理等. 本来考虑部署一台性能相对比较好的服务器去处理,但这样子考虑到部署太过中心化不好管理,同时硬件的成本有些高而且占地的面积太大,因此就暂时被我搁置了. 后来想到 空帷 的朋友圈,使用「树莓派」这个方案相对比较轻量,同时多出来的「树莓派」还可以用来它用,因此考虑使用「树莓派」搭建自己的家庭网络服务.

树莓派初级折腾

- - 极客范 - GeekFan.net
前些天在网上买了一个二手的树莓派 裸板子190包邮 (新品套装280 360什么的太贵了啊岂可修). 到手目测没有问题 主IC还有一个铜质散热片 不错. 电源就用买移动电源送的充电器(标称5v 1000mA输出 )和数据线. SD卡么… 把很久没玩的PSP掏出来 把马甲卡中的东西倒到记忆棒里 记忆棒插回PSP TF卡装到转接卡上 (话说还是个class10的呢).

安装树莓派 Raspberry PI

- - CSDN博客综合推荐文章
树莓派终于到货了,是这个样子的. 上面有一行日期是 Raspberry PI (c) 2011.12. 选择这个镜像: RASPBIAN Debian 2014-01-07. 780M的压缩包,很大的样子. 似乎还有个NOOBS的安装方式,完全无感. 顺便展示一下SD卡,通过查阅可用SD卡列表,似乎是支持个别的64G Class10的卡的,就像这个,编号是 Transcend SDXC 64G Class10 TS64GSDXC10.

树莓派 1602A显示屏

- - 编程语言 - ITeye博客
树莓派 1602A显示屏. 下面代码本人测试过没有问题,开始运行完屏幕上什么也没有显示出来,后来调整了下电位器可以了,所以大家如果按着下面的做出来之后运行什么也没有显示的话,记得调整下电位器. VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地. RS,寄存器选择,接GPIO14.

在树莓派上用python控制LED

- - 极客范 - GeekFan.net
初步学习RPi.GPIO模块的过程中写了一个控制8个LED的模块,基本上只是一个对RPi.GPIO的一个封装. 一个已经安装配置好了的树莓派. 连接控制树莓派所用的其他必须设备. 按照电路图所示,在面包板上进行连接. 首先得确定RPi.GPIO已安装. 最新的系统已经自带了,如果没有的可以使用命令.

PiLarm: 便携式树莓派警报器

- - 极客范 - GeekFan.net
我一直在寻找一些能给自己孩子带来教益的瞬间. 当我五岁的儿子来寻求我的帮助,别再让他的弟弟偷偷溜进他的房间的时候,我突然灵光一现,发现这是教他关于输入、输出和其他一些编程知识的绝佳时机. 而且让他在解决自己实际问题中学习这些也会相对容易. 我本来可以用很多不同的方法来建立一个简单的警报系统,但是我想要让这个系统是一体化的并且在功能上不止能满足我儿子最初的原始需求.

树莓派的10个最佳资源

- - 极客范 - GeekFan.net
如果还没有找到答案,你是时候要从线上或者线下的资源寻找一些想法和项目,来帮助你将树莓派的潜能完全发掘出来. 树莓派没有内置的操作系统,也经常甚至连存储设备都没有. 但树莓派已经被证明了是一个非常成功的小型计算设备. 而很多学校(树莓派的目标用户),狂热爱好者,和那些想要打造一个小型家庭影音中心(包括其他设备)的用户都将树莓派作为他们的一个选择.

树莓派2 折腾记录

- - 操作系统 - ITeye博客
淘宝买来的 树莓派2代 B型. 这玩意还分国产和UK产,价格差距在10-20左右 不过不超过200. 另外就是要单独配个 5V2A 的电源,可选外壳和散热片,必备的是 TF 卡,可以用8G,我直接用的 32G TF 卡. 这玩意安装比较麻烦,简单的说第一次进系统你需要显示器,他只有HDMI接口,可以考虑用 HDMI转VGA连显示器,要么就直接HDMI连液晶电视(我就用的电视装的).