小米音箱(小爱同学)做的不错,但是目前功能上还是有很多限制,比如不能启动电脑。Home assistant是一个开放的智能家居平台,集成非常多的模块,比如Wake on LAN模块就可以实现通过网线唤醒电脑的功能。可惜目前不能通过小米音箱直接连接Home Assistant。好在小爱同学兼容自家的万能遥控器,我们想到了把Home Assistant设备变成一个遥控终端,通过一个红外万能遥控器和一个红外接收器做为一个桥接中介,实现小米音箱间接控制Home Assistant平台的目的。本文参考了这个教程。
需要的东西
运行Home Assistant的设备(电脑、NAS、树莓派等,我用的是树莓派2代)
红外接收器(我使用的是一个通用USB接收器,树莓派用户可以DIY一个)
小米(创米)万能红外线遥控器
小米AI音箱
给Home Assistant设备添加红外遥控接收功能
将红外接收器连接到home assistant设备上。确认红外设备存在,如
pi@raspberrypi:~ $ ls /dev/lirc0
/dev/lirc0
安装红外线收发lirc程序:
pi@raspberrypi:~ $ sudo apt-get install lirc liblircclient-dev
测试红外线接收功能正常:
sudo mode2 -d /dev/lirc0
运行上面命令后找一个红外遥控器对着接收器按任意键,应该可以收到类似这样的字符:
Using driver default on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0
Running as regular user pi
pulse 2750
space 750
pulse 550
...
好,现在Home Assistant设备可以接收到红外遥控信息了。下一步,让Home Assistant和红外遥控器可以通信。
让Home Assistant接收红外遥控数据
随便给lirc指定一个接收的遥控器数据表,这里用的是xbox360的遥控器,你不需要有这个遥控器,因为后面可以用小米万能遥控器把它模拟出来。
下载xbox360遥控器的数据表,把它设置到lirc:
pi@raspberrypi:~ $ wget http://lirc.sourceforge.net/remotes/microsoft/Xbox360
pi@raspberrypi:~ $ sudo mv Xbox360 /etc/lirc/lircd.conf
创建/etc/lirc/lircrc文件,内容:
begin
remote = Microsoft_Xbox360
button = KEY_STOP
prog = home-assistant
config = KEY_STOP
end
begin
remote = Microsoft_Xbox360
button = KEY_PAUSE
prog = home-assistant
config = KEY_PAUSE
end
这里只以两个按键为例子,参看上面/etc/lirc/lircd.conf的内容,你可以多添加几个按键。
重启lirc
pi@raspberrypi:~ $ sudo systemctl restart lircd.service
现在在米家app给小米万能遥控器添加Xbox360遥控器(使用搜索功能添加,里面有两个,我添加的是“微软DVD播放器”那个),现在测试
pi@raspberrypi:~ $ ircat home-assistant
按遥控器上的停止按键,应该会收到相应的代码。
现在米家app可以给home assistant设备发信息了,下一步要做的是根据这个信息,触发不同的动作。
Home assistant根据遥控器指令触发动作
编辑 HomeAssistant 的configuration.yaml文件,加入lirc组件,
lirc:
配置home assistant的自动化指令:
automation:
- alias: 打开灯
trigger:
platform: event
event_type: ir_command_received
event_data:
button_name: KEY_PAUSE
action:
service: homeassistant.turn_on
entity_id: group.a_lights
上面的KEY_PAUSE就是刚刚配置的遥控器按键。action可以换成你想要的效果,我是帮来它来启动我的电脑了。重启homeassistant,让配置生效,现在对着树莓派按暂停播放键,就Homeassistant就会触发相应的动作了。
让小米AI音箱控制万能遥控器
先打开米家app,在底部点选“智能”,在“我在”tab中点右上角的“+”号创建新智能条目,在选择条件界面选择“手动执行”,选择“小米万能遥控器”-〈遥控模式〉-〈微软DVD播放器〉-〈暂停/播放〉-〈右上角“确定”〉设置你想要的名称,比如“启动电脑”
好了。打开小米AI app,在底部点选“技能中心”-〈小爱训练计划〉-〈创建训练〉-〈为问题命名,比如“启动电脑”〉-〈设备控制〉-〈选择刚创建的“启动电脑”〉-〈打开〉,预览后保存。
(相关的图文教程点这里)
好了。现在对着小米同学说“启动电脑”,小米音箱会指示小米万能遥控器发送一个KEY_PAUSE按键,这时home assisant收到后,就会触发启动电脑的动作了。
参看:Creating a Raspberry Pi Universal Remote With LIRC
另一种通过第三方平台桥接小爱同学和home assistant的方法: https://bbs.hassbian.com/thread-2404-1-1.html
转载请注明: 转自船长日志, 本文链接地址: http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/
貌似只有 stop 和 pause 两个键可用。。。