树莓派安装HomeAssistant

安装系统

HomeAssistant提供内置HomeAssistant服务的Raspbian系统——Hassbian,https://home-assistant.io/docs/hassbian/installation/ 下载最新版本,然后使用Etcher刷入TF卡。

SSH连接树莓派

将树莓派插卡通电,并连上网线,前往路由器的DHCP找到树莓派的IP地址,分配一个静态IP,重新连接网线即可使用ssh连接树莓派。
Windows下推荐使用putty。
默认用户名pi,默认密码 raspberry
可以通过passwd命令修改默认密码

自动连接wifi

sudo iwlist wlan0 scan

该命令可以找到所有可用的无线网络,每个cell代表一个。
通过ESSID找到需要连接的网络,并记下名称。
nano配置wifi信息:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

在最下方填入wifi信息

1
2
3
4
network={
ssid="XXXX"
psk="XXXX"
}

control+o回车,control+x保存并退出编辑器。
最后重启树莓派

sudo reboot

更换国内源

国内网络访问树莓派的源速度很感人,可以将其换位国内镜像源。
source镜像可以使用阿里的,需要编辑/etc/apt/sources.list,注释掉原来的source,改为阿里云镜像

1
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib

此外还要更换树莓派的镜像,需要编辑/etc/apt/sources.list.d/raspi.list,修改方法类似,改为

1
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/ jessie main ui

然后应用更新即可

sudo apt-get update
sudo apt-get upgrade

使用HomeAssistant服务

HomeAssistant安装在目录为/srv/homeassistant的虚拟python环境下,配置文件保存在/home/homeassistant/.homeassistant下,系统安装后一般需要5-10分钟下载相关服务,可以通过ls -a看看有没有该文件夹来判断是否已经下载完成。
当然等不及也可以选择手动更新。

1
2
3
4
5
6
$ sudo systemctl stop home-assistant@homeassistant.service
$ sudo su -s /bin/bash homeassistant
$ source /srv/homeassistant/bin/activate
$ pip3 install --upgrade homeassistant
$ exit
$ sudo systemctl start home-assistant@homeassistant.service

如果服务已经下载好,浏览器输入192.168.*.*:8123就可以访问HomeAssistant了。

关于配置文件和Yaml

HomeAssistant的配置工作都是在Configuration.yaml里完成的,该配置文件是用Yaml写的,每个字段都代表一个服务。
Yaml也很好理解,和Json有些类似,不过Json使用{},而Yaml使用缩进来表示层级关系。需要注意的是缩进不能使用Tab键,只能用空格。缩进时相同层级的元素需要左对齐,而空格数目并不重要。
Yaml同样使用#表示注释,从该字符到行尾会被忽略。
列表和字典是Yaml中的两种数据结构,列表用-(横杠和空格)开头。

加入Yeelight

参考官网的文档,只需要在Configuration.yaml中添加以下内容就可以了:

1
2
3
4
5
6
7
8
9
10
light:
- platform: yeelight
devices:
192.168.1.25:
name: Living Room
transition: 1000
use_music_mode: True #(defaults to False)
save_on_change: False #(defaults to True)
192.168.1.13:
name: Front Door

这里的light是系统关键字,指定这是控制灯的服务;platform指定了品牌;devices下是对应的具体的灯,以IP区分,可以命名为不同的name。
配置文件完成后,需要重启HomeAssistant,然后在管理页面就可以看到对应的版块了。如果配置发现错误,管理页面也会给出相应的提示。

在通过HomeAssistant控制yeelight灯泡前,需要首先使用Yeelight的APP在设置里打开灯泡的“Developer Mode(极客模式)”。

添加BroadLink的支持

BroadLink可以看做是一个红外/射频发射器,它通过学习红外码和射频信号,实现其它电器遥控器的功能,并通过手机进行控制。
BroadLink已经集成在了HomeAssistant里,可以查看相关文档
同样是在Configuration.yaml里添加以下内容:

1
2
3
4
5
6
7
8
switch:
- platform: broadlink
host: IP_ADDRESS
mac: 'MAC_ADDRESS'
switches:
reciever:
command_on: 'switch_packet on'
command_off: 'switch_packet off'

此外还有一些可选选项

参数 解释
friendly_name 在前端显示的设备名称
type 设备类型,取值为{rm, rm2, rm_mini, rm_pro_phicomm, rm2_home_plus, rm2_home_plus_gdt, rm2_pro_plus, rm2_pro_plus2, rm2_pro_plus_bl, rm_mini_shate, sp1, sp2, honeywell_sp2, sp3, spmini2 or spminiplus}

对于switches中的每一个,参数为

参数 类型 解释
identifier 必需 名称,如例子中的reciever
friendly_name 可选 前端显示的名称
command_on 必需 Base64 encoded packet from RM device to take for on
command_off 必需 Base64 encoded packet from RM device to take for off

这些参数里的IP和Mac地址都可以在路由器里找到,注意在路由器的DHCP里绑定Mac地址和静态IP地址。
command_oncommand_off是电器开关的红外或射频码,需要通过BroadLink学习得到。

在HomeAssistant的控制页面,选择Developer Tools -> Service,在Call a service from a component下,Domain选择broadlink,Service选择learn_command_**_**_**_**,其中**代表设备的IP地址。然后点击CALL SERVICE
正常的话,BraodLink会亮橙色的灯,表示正在学习中。使用遥控器,对准BroadLink按下“开”,如果橙色灯熄灭,就表示学习成功。前往Developer Tools下的States,找到Recieved packet is: *******,后边的字符串就是按下按钮的红外码,将其复制到配置文件中就可以了。
填好参数后,重启HomeAssistant,就能在控制页面中看到了。