将小爱同学(小米AI音箱)接入Home Assistant(基于红外遥控器)

小米音箱(小爱同学)做的不错,但是目前功能上还是有很多限制,比如不能启动电脑。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

此条目发表在 人工智能 分类目录,贴了 , , , , , , 标签。将固定链接加入收藏夹。

将小爱同学(小米AI音箱)接入Home Assistant(基于红外遥控器)》有 1 条评论

  1. shark 说:

    貌似只有 stop 和 pause 两个键可用。。。

shark 进行回复 取消回复