2017-07-05
3月份第一次写这篇文章的时候,还没买树莓派,在这个orangepi上安装的流程和树莓派完全相同,后来用树莓派搞的时候直接就照搬了,一下内容是在orangepi和raspberrypi上安装和配置期间陆陆续续完成的,私以为对linux系统的设备都有参考价值。
在orangepi安装homekit
在虚拟机尝试过homebridge之后,大概知道这东西怎么运行了,所以是时候入手一块树莓派了。但是树莓派并没有很便宜,我在淘宝找了一晚上,终于找到了orangepi这个东西,只要59块,512内存,H2+的CPU,还支持wifi,跑个homebridge和homeassistant应该问题不大。于是三天后,一块orangepi就到了。

准备
官方下载了ubuntu server的img,用Etcher烧录到tf卡(win下用win32 diskimager)。插上内存卡,插网线,通电。路由器查看ip地址,然后用终端ssh登录到orangepi。
ssh root@192.168.2.241 -p 22
然后按照惯例跑一遍
sudo apt-get update
sudo apt-get upgrade
其实我也不知道为啥要跑这个,反正所有的教程都有跑这些东西,所以我也跑一边。时间大约20分钟。
安装homebridge和homeassistant
安装依赖包
homebridge需要nodejs和npm,nodejs需要curl,还要git,所以:
sudo apt-get install -y samba screen git
sudo apt-get install -y curl apt-transport-https ca-certificates
curl –fail -ssL -o setup-nodejs https://deb.nodesource.com/setup_6.x
sudo bash setup-nodejs
sudo apt-get install -y nodejs build-essential
另外,homebridge需要avahi依赖包:
sudo apt-get install libavahi-compat-libdnssd-dev
安装homebridge
根据homebridge的GitHub页面 上的readme,用npm安装
sudo npm install -g –unsafe-perm homebridge
安装可能会失败,失败的话多跑几次就可以了,我就这样弄好的。
安装完之后测试一下homebridge能不能正常运行
homebridge
不出意外的话homebridge已经开始运行了,并且会出现homekit的匹配ID
control+c退出来,进行下一步。
安装homeassistant
安装依赖包
homeassistant需要python和pip,python已经是系统集成了的,所以装个pip就行了
sudo apt-get install python3-pip
安装homeassistant
根据homeassistant页面上的指南,直接安装就行了
pip3 install homeassistant
安装完成之后打开homeassistant的图形界面:
hass –open-ui
这样才会自动生成一个configuration.yaml文件,如果直接hass的话会因为缺少yaml报错,所以现用以上命令执行一下,之后再用hass就可以了。
然后在浏览器打开 http://localhost:8123/ 就可以看到homeassistant的控制面板了。

control+c退出来,进行下一步。
安装homebridge-homeassistant插件
把homebridge和homeassistant链接起来,就需要用到这个插件。
sudo npm install -g homebridge-homeassistant
配置两个插件
homeassistant连接到broadlink
在路由器的dhcp服务器上可以看到broadlink的IP和mac地址,复制下来。
打开homeassistant的配置文件,把broadlink的设备添加进去。
cd /.homeassistant
sudo nano configuration.yaml
然后会打开一个文本编辑器
把以下的内容复制到文本编辑器最末端
1 | switch: |
这里要补充以下,由于md语法的问题,好像空格不会显示。第一行的switch顶格,以下三行都要缩进两个空格。
IP地址和mac就是刚才在DHCP服务器上记录的。
然后control+x,y,return,退出来就完成了yaml的配置,再打开homeassistant
hass
此时终端上就会显示找到了broadlink设备,再过一会儿homeassistant服务就打开了。
给homeassistant添加broadlink的红外命令
再在浏览器打开刚才那个8123的网页,进入homeassistant的控制面板,在左边列表里找到development tools,里面第一个图标就是Call Service,用这个可以学习红外信号的那个码,至于是什么码我也不知道
具体操作很简单,我就不多说了。
然后会在终端里面看到那个码,复制下来再添加到homeassistant的yaml文件里。
最终在yaml里就有broadlink设备的信息和遥控器的命令了
1 | platform: broadlink |
同样是yaml语法,要注意缩进。
control+x保存并退出,homeassistant的配置文件就编辑好了,再hass的话就可以在homeassistant的控制面板上看到刚才设置的开关了。
将homebridge连接到homeassistant
第一次执行homebridge的时候,应该有人注意到缺少config.json文件,所以现在要给homebridge添加一个config.json文件。
cd /.homebridge
sudo nano config.json
编辑好以下的文本,复制到nano编辑器中
其中 第4行的mac地址要改为开发板的mac地址,13行的host要改为开发板的ip地址:8123
1 | { |
复制进去直接保存就行了。
然后运行homebridge
homebridge
应该会卡在homeassistant的步骤,所以要另外开一个终端,运行homeassistant,然后再在这个终端里运行homebridge。
一番尝试之后,是不是homebridge也运行起来了?
ios端设置
在手机上打开homekit的应用”家庭“,然后将homebridge添加到家庭中,接下来的操作就不多说了,太简单了。
设置两个应用的开机自动启动
2017-03-26 凌晨四点在家里居然成功了。homeassistant的自动启动,按照官方的文本就可以了,但是要等一等……我是真的傻眼了……
homebridge通过rc.local实现自启,homeassistant通过init.d方式也实现了。
homebridge - rc.local
rc.local确实好用,并且稳定可用。每次树莓派开机都能自动运行hb,但是有一个缺点就是调试的时候十分不方便,killall一下,就没法再启动,所以用init.d来实现开机服务项更加理想。
homebridge - init.d
sudo nano /etc/init.d/homebridge
复制这一段进nano编辑器并保存
1 | #!/bin/sh |
这边提一点,原文中的这个init.d文件里的cmd=”DEBUG路径,对应的是 /usr/local/bin/homebridge,由于raspbian的文件路径不太相同,所以改为 /usr/bin/homebridge。
然后赋予权限
sudo chmod 755 /etc/init.d/homebridge
然后添加到开机任务
sudo update-rc.d homebridge defaults
这样开机启动项就添加完成了,可是手动打开一下
sudo /etc/init.d/homebridge start
同样的,stop/restart也可以实现。
检查日志
tail -f /var/log/homebridge.log
tail -f /var/log/homebridge.err
homeassistant -init.d
参考官网文档一次完成,这里不加以赘述
参考资料
·homebridge
·homeassistant
·老高的博客
·借助树莓派与 HomeBridge ,将 YeeLight 彩光灯接入 Apple HomeKit
·解放你的双手——让普通家电也能被siri控制
Running HomeBridge on a Raspberry Pi