『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 121996|回复: 463

[智能音箱] 基于红外的小爱同学接入HomeAssistant教程

  [复制链接]

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2017-11-18 16:04:39 | 显示全部楼层 |阅读模式
本帖最后由 27hh 于 2018-11-25 14:52 编辑

红外遥控,作为十分古老的远程控制技术,至今已经十分成熟。其在遥控领域所占据的地位,是射频和蓝牙无法撼动的。我们是否可以用红外遥控器来控制智能设备呢?当然可以!本文为大家讲解如何用红外来控制HA中的设备,并借此将小爱同学接入HA。


(通俗地讲,就是先让HomeAssistant变成像电视机一样能被红外遥控器控制的设备,然后让小爱同学充当这台“电视机”的遥控器,实现对HomeAssistant设备的控制。)

测试设备:Orange Pi Zero + 扩展板(注:安装官方外壳后不影响红外接收),小米万能遥控器

目录
一、准备红外接收器
二、设置HomeAssistant
三、设置小爱同学

(说明:如果执行下面的命令,出现错误,可能是系统的问题,把错误代码贴到Google,一般能获得解决方案。)
-----------------------------------------------------------------

一、准备红外接收器
本章的目的是使硬件能够接收红外信号。
1. 测试红外接收器

加载红外模块
modprobe sunxi_cir

开始接收信号
mode2 -d /dev/lirc0

现在找个遥控器,对着树莓派按下任意键。若窗口中出现类似:
space 123456
pulse 7890

等一串字符,说明接收器工作正常。

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
/etc/init.d/lirc restart

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. 输入如下命令,确定按键可以被正常识别,且不会被重复识别:
ircat home-assistant

然后按键进行测试。

2. 编辑 HomeAssistant 的 configuration.yaml 文件,顶头加入一行:
lirc:

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里的设备了。
接下来,为大家讲解通过让小爱同学控制发射红外来控制这些设备!

评分

参与人数 4金钱 +80 收起 理由
lidicn + 20 在下对你的景仰犹如滔滔长江之水,连绵不绝.
Milo + 20 在下对你的景仰犹如滔滔长江之水,连绵不绝.
antsunzj + 20 支持折腾!支持创新!
+ 20 在下对你的景仰犹如滔滔长江之水,连绵不绝.

查看全部评分

回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

 楼主| 发表于 2017-11-18 16:05:43 | 显示全部楼层
本帖最后由 27hh 于 2017-12-30 22:28 编辑

下面我们介绍小爱同学的接入。本方法的原理是让小爱同学通过场景,控制红外遥控器,发射红外信号被香橙派接收,执行动作。延迟极小,使用非常流畅。

需要注意的是,欲使用此方法,你必须拥有至少一个以下列表中的设备。不然,你就不是米家人,小爱同学会把你拒之门外

QQ截图20171118161259.png

下面开始教程:
1. 打开米家,找到红外遥控器,确保你要使用的遥控器已经配置好了。如果没有现成的,则按 复制遥控器 -> 其他遥控器,创建一个空白遥控器,然后把所需的红外码学习进来。


IMG_0923.PNG        IMG_0924.PNG
2. 为每个按键设置场景。

IMG_0925.PNG

3. 在小米AI中授权使用米家。


IMG_0922.PNG

注:如果没有购买任何支持的小米设备,则无法完成授权,因此场景也无法使用。

4. 为小爱添加技能。

IMG_0926.PNG
现在,可以用语音来控制HA中的设备了。这样也算是让小爱同学曲线地接入了HA。


另:当这个想法被提出时,有的人认为这样很蛋疼。但我并不认为。首先,我们并不是为了小爱同学才配置红外。如今红外遥控器几乎家家都有,并且是老年人最熟悉的控制设备。而每个遥控器总有那么几个键我们用不到,若把它配置成遥控HA设备,让我们可以在看电视时方便地调节灯光,或是让家里老人轻松地体验智能家居,岂不美哉?另外,此方法的延迟并不高,与米家设备相比,几乎感觉不到。因此,仍有极高的实用价值。


附录:红外接收学码方法


执行 irrecord -d /dev/lirc0 ~/lircd.conf ,进入学码程序。(程序需在lircd停止的情况下运行)

videoplayback[00_01_10][20171118-181517-0].PNG

当出现 Press RETURN 提示时,按回车开始学码。
接下来,程序将对你的遥控器进行分析。请按下遥控器的每个按钮,建议每个按钮按两次,直到屏幕下方的圆点走满。然后会出现一行英文,继续按遥控器,再次等待屏幕下方的圆点走满。

videoplayback[00_02_28][20171118-181611-1].PNG

当看到下列提示时,才进入了正式学码过程。(摔!) Please enter the name for the next button,即输入接下来的按键的名称。程序建议大家使用标准名称,所有可用的标准名称请提前输入 irrecord --list-namespace 查看。(此时也可以按Ctrl+C退出来输入命令查看,之间的操作不会丢失)

输入名称,按回车,按一下遥控器的按钮,一个按钮就学习完了。

videoplayback[00_03_50][20171118-183225-3].PNG

当所有按钮学习完后,再次按下回车,程序会将学好的码写入 /etc/lirc/lircd.conf 。最后修改 lircd.conf 中的name为你的遥控器名字(不能有空格,可以点和下划线),学码完成。如果需要学习其他的遥控器,可以再次运行本程序,但是需提前备份
/etc/lirc/lircd.conf ,以防被覆盖。

评分

参与人数 1金钱 +20 收起 理由
lidicn + 20 在下对你的景仰犹如滔滔长江之水,连绵不绝.

查看全部评分

回复

使用道具 举报

0

主题

16

帖子

60

积分

注册会员

Rank: 2

积分
60
金钱
44
HASS币
0
发表于 2023-10-12 09:51:52 | 显示全部楼层
感谢分享,学习下
回复

使用道具 举报

16

主题

216

帖子

1488

积分

金牌会员

Rank: 6Rank: 6

积分
1488
金钱
1272
HASS币
0
发表于 2022-5-6 23:04:23 | 显示全部楼层
神呐 ,我想接收燃气灶的红外信号,然后触发油烟机自动开启   
感觉只有这个可以实现我的想法
但是,小白一个  看的不是很了解
回复

使用道具 举报

2

主题

18

帖子

60

积分

注册会员

Rank: 2

积分
60
金钱
42
HASS币
0
发表于 2021-1-15 20:49:12 | 显示全部楼层
感谢楼主分享!
回复

使用道具 举报

7

主题

92

帖子

471

积分

中级会员

Rank: 3Rank: 3

积分
471
金钱
379
HASS币
0
发表于 2021-1-12 21:42:04 | 显示全部楼层
群晖怎么弄啊,能给个教程么?一步一步的弄的,新手学习
回复

使用道具 举报

2

主题

38

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
金钱
234
HASS币
0
发表于 2020-12-29 14:47:58 | 显示全部楼层
学习一下
回复

使用道具 举报

1

主题

74

帖子

287

积分

中级会员

Rank: 3Rank: 3

积分
287
金钱
213
HASS币
0
发表于 2020-11-26 10:09:21 | 显示全部楼层
学习中。。。
回复

使用道具 举报

0

主题

22

帖子

60

积分

注册会员

Rank: 2

积分
60
金钱
38
HASS币
0
发表于 2020-9-10 12:06:19 | 显示全部楼层
继续学习中。谢谢分享。
回复

使用道具 举报

2

主题

19

帖子

52

积分

注册会员

Rank: 2

积分
52
金钱
33
HASS币
0
发表于 2020-9-4 11:13:40 | 显示全部楼层
mark一下
回复

使用道具 举报

6

主题

137

帖子

1521

积分

金牌会员

Rank: 6Rank: 6

积分
1521
金钱
1384
HASS币
0
发表于 2020-8-23 23:29:01 | 显示全部楼层
感谢分享,学习一下
回复

使用道具 举报

0

主题

36

帖子

231

积分

中级会员

Rank: 3Rank: 3

积分
231
金钱
195
HASS币
0
发表于 2020-7-11 21:58:51 | 显示全部楼层
努力學習中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-26 20:19 , Processed in 0.066673 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表