本帖最后由 27hh 于 2018-11-25 14:52 编辑
红外遥控,作为十分古老的远程控制技术,至今已经十分成熟。其在遥控领域所占据的地位,是射频和蓝牙无法撼动的。我们是否可以用红外遥控器来控制智能设备呢?当然可以!本文为大家讲解如何用红外来控制HA中的设备,并借此将小爱同学接入HA。
(通俗地讲,就是先让HomeAssistant变成像电视机一样能被红外遥控器控制的设备,然后让小爱同学充当这台“电视机”的遥控器,实现对HomeAssistant设备的控制。)
测试设备:Orange Pi Zero + 扩展板(注:安装官方外壳后不影响红外接收),小米万能遥控器
目录 | 一、准备红外接收器 | 二、设置HomeAssistant | 三、设置小爱同学 |
(说明:如果执行下面的命令,出现错误,可能是系统的问题,把错误代码贴到Google,一般能获得解决方案。)
-----------------------------------------------------------------
一、准备红外接收器
本章的目的是使硬件能够接收红外信号。
1. 测试红外接收器
加载红外模块
开始接收信号
现在找个遥控器,对着树莓派按下任意键。若窗口中出现类似:
等一串字符,说明接收器工作正常。
2. 设置自动启动
编辑 /etc/lirc/hardware.conf 文件,设置 START_LIRCD="true" 。这样,红外模块会在开机时自动加载。
3. 添加遥控器
首先检查 http://lirc.sourceforge.net/remotes/ ,是否有你的遥控器代码。如果有的话,直接把页面的内容粘贴至 /etc/lirc/lircd.conf 即可。如果没有,则需要自己学习遥控码。很幸运,我找到了我的遥控器,因此我们直接来使用它。如果没有找到,请看2楼,给出了学码的方法。在继续之前,我们记下begin remote name SONY.RM-S29E
中name后的字段(本例为SONY.RM-S29E),后面将用到。
4. 重启lirc
5. 设置响应事件
创建 ~/.lircrc 文件,以设置系统对红外码的响应。文件内容格式如下:
begin
remote = SONY.RM-S29E
button = KEY_1
prog = home-assistant
config = KEY_1
end
begin
remote = SONY.RM-S29E
button = KEY_2
prog = home-assistant
config = KEY_2
end
begin
remote = SONY.RM-S29E
button = KEY_3
prog = home-assistant
config = KEY_3
end
其中SONY.RM-S29E是遥控器型号,对应 lircd.conf 中的name字段,彩色的文字是按键名称。按键名称应该能够直接地反应具体的遥控器按键。只需配置想要使用的按键即可。
手动输入显然很繁琐,因此提供一个我写的小程序,自动生成代码以简化这一过程:
写配置文件.exe
(130.45 KB, 下载次数: 90)
二、HomeAssistant设置
本章的目的是使 HomeAssistant 能解析收到的红外信号。
1. 输入如下命令,确定按键可以被正常识别,且不会被重复识别:
然后按键进行测试。
2. 编辑 HomeAssistant 的 configuration.yaml 文件,顶头加入一行:
3. 设置自动化
按如下配置:
automation:
- alias: 按遥控0键关灯
trigger:
platform: event
event_type: ir_command_received
event_data:
button_name: KEY_0
action:
service: light.turn_off
entity_id: light.lamp0
即可。现在,拿着遥控器对香橙派按一下,灯是不是关闭了?(香橙派的红外接收能力非常强,小房间几乎可以实现全向遥控。)
------------------------------------------------------------------------------------
至此,我们已经实现了用红外遥控器来控制HomeAssistant里的设备了。
接下来,为大家讲解通过让小爱同学控制发射红外来控制这些设备!
|