Loading

DIY树莓派Homebridge智能台灯

前言

前阵一直在鼓捣智能家居,用树莓派接入Apple HomeKit小试牛刀,支持自带Home App控制和Siri调用,一个月用下来还算稳定,特此记录搭建步骤帮助有需要的朋友少走弯路~

自打2014年HomeKit发布以来,我对智能家居产生了浓厚的兴趣。想想躺在床上动动嘴就能开关灯,冬天不要太惬意!然而HomeKit认证家电售价较高,未能在国内普及,官网认证插座均价在400左右,国产便宜智能家电无法接入HomeKit则需安装各种app,无法统一管理体验大打折扣……

直到有一天,名为nfarina的大神宣布自己成功逆向HomeKit接入三方硬件。这还没完,大神随即在自己的GitHub上开源了这套名为Homebridge的系统!从此所有人都可以无偿使用Homebridge甚至二次开发,简直不要太赞!

鉴于手上还有一只勤劳的树莓派zerow在跑脚本,另有万年前众筹的控客miniK智能插座,决定DIY一款HomeKit智能台灯!

Let's get started!

实现

安装Homebridge

我计划于树莓派ZeroW上安装Homebridge(下文简称HB),根据官方wiki安装HB前需要先配置Node,网上大多教程均基于采用armv7处理器的Pi3编写,无法兼容armv6的ZeroW,强行安装会报错。通过不断摸索,我总结出了以下方法。

pi@rpi0w:~ $ sudo -i
root@rpi0w:/home/pi # cd ~
root@rpi0w:~ # wget https://nodejs.org/dist/v9.10.0/node-v9.10.0-linux-armv6l.tar.xz
root@rpi0w:~ # tar xJvf node-v9.10.0-linux-armv6l.tar.xz
root@rpi0w:~ # mv node-v9.10.0-linux-armv6l /usr/local/node
root@rpi0w:~ # echo PATH=$PATH:/usr/local/node/bin >> /.bashrc
root@rpi0w:~ # source ~/.bashrc

此方法手动下载并安装armv6版Node,为方便上电自启,建议在root权限下操作。因为众所周知的原因,国内访问境外服务器速度奇慢无比,可将npm替换为taobao镜像再安装HB及ikonke插件,该镜像每十分钟与主站同步一次。当然如果你不是强迫症患者亦可直接安装cnpm代替npm一劳永逸。

root@rpi0w:~ # npm config set registry http://registry.npm.taobao.org
root@rpi0w:~ # npm install -g --unsafe-perm homebridge
root@rpi0w:~ # npm install homebridge-ikonke-outlet
root@rpi0w:~ # homebridge

安装需要一段时间,正常情况下最后一句执行HB会报错,系统提示你没有找到配置文件无法启动。

获取插座信息

重点来了!!!

补全配置还需获取控客插座信息,需要用到ikonkeIO小工具。

pi@rpi0w:~ $ git clone https://github.com/YinHangCode/ikonkeIO.git
Cloning into 'ikonkeIO'...
remote: Enumerating objects: 67, done.
remote: Total 67 (delta 0), reused 0 (delta 0), pack-reused 67
Unpacking objects: 100% (67/67), done.

pi@rpi0w:~ $ cd ikonkeIO/
pi@rpi0w:~/ikonkeIO $ mv ikonkeIO_armv7l/* ./
pi@rpi0w:~/ikonkeIO $ chmod +x *
pi@rpi0w:~/ikonkeIO $ sh ikonkeIO.sh --discover 192.168.3.255
broadcast address: 192.168.3.255, scan ikonke device.... 

type: mini_w
ip: 192.168.3.33
mac: 28-aa-bb-cc-ee-ff
password: XXXXXXXX

^C

此处ip更换为局域网所在网段,通过Ctrl-C终止广播。重新配置插座WiFi连接会导致password变更。获知上述参数即可配置HB的config.json文件,在如下位置创建并写入内容文本保存。

pi@rpi0w:~ $cd ~/.homebridge/
pi@rpi0w:~/.homebridge $nano config.json

GNU nano 2.7.4      File: config.json

{
    "bridge":{
        "name":"Homebridge",
        "username":"CC:22:3D:E3:CE:30",
        "port":51826,
        "pin":"031-45-154"
    },
    "platforms":[{
        "platform":"IkonkeOutletPlatform",
    "ikonkeIO":"/home/pi/ikonkeIO/ikonkeIO.sh",
    "deviceCfgs":[{
        "type":"mini_w",
        "ip":"192.168.3.33",
        "mac":"28-aa-bb-cc-ee-ff",
        "password":"XXXXXXXX",
        "outletDisable":false,
        "outletName":"KMini outlet"
      }]
    }]
}

其中ikonkeIO、ip、mac、password等参数一定要填写正确,否则无法通讯。建议在路由器DHCP中为插座保留ip地址。

接入Home App与Siri

完成上述操作后可直接启动HB查看效果。

root@rpi0w:~# homebridge

*****************

    QR-code

*****************

首次启动HB会产生一个巨大的二维码,使用iOS自带的Home APP添加配件扫码即可连接HB:

插座图标与名称支持自定义,自定义名称支持Siri指令。

例如:Hey Siri, turn on the light!

如果你有足够的脑洞,甚至可以写自动化脚本实现你在家中的每一个工作日起床开灯!周末或不在家中则无法触发。

开机自启

至此还剩一步,若树莓派断电或退出bash均会导致HB服务中断,建议将HB配置为上电自启。配置Linux开机自启方法很多,无外乎写文件和改服务,这里示范官方wiki推荐方法供参考。该方法要求node、npm、HB均在root权限下安装且HB为全局安装。

root@rpi0w:~ # npm install -g pm2
root@rpi0w:~ # pm2 startup
root@rpi0w:~ # pm2 start homebridge
root@rpi0w:~ # pm2 save

参考

posted @ 2020-02-29 14:05  azureology  阅读(1302)  评论(0编辑  收藏  举报