- 积分
- 727
- 金钱
- 659
- 威望
- 0
- 贡献
- 0
- HASS币
- 0
高级会员
- 积分
- 727
- 金钱
- 659
- HASS币
- 0
|
本帖最后由 jgx2003 于 2017-11-24 12:12 编辑
最近受到论坛基于红外控制HASS设备的帖子的启发,正好自己手头上有一个串口的红外收发模块(本来打算买来实现黑豆功能的,可惜一直没搞成),看到很多坛友的HASS都是基于小主机的,没有GPIO口,所以我就利用手头上的CH340+串口红外模块鼓捣了一个基于U口的红外设备来控制HA。(所需模块自行某宝购买吧,一搜一大把)
基本控制原理如下:
模块接收红外信号———>CH340——>Pyserial——->ircontrol.py程序————>调用HA的python API实现相应的控制功能
因为本人没有小主机,目前只在树莓派的U口上测试了一下可以正常使用,没有任何延时。
另外,这个py程序我也是现学现卖,放出这个帖子的目的也是为了让广大的坛友一起研究改进。
下面的安装步骤全部基于树莓派,其它系统可以参考更改适合自己系统的命令
3、关于config.yaml配置文件的设置:
安装到这里下一步就是要学习遥控器的编码,学习编码之前需要用到这个yaml文件的一个参数:serialPort的值,将其设置为你的ch340对应的串口号,一般为/dev/ttyUSB0,如果使用GPIO的串口,一般为/dev/ttyAMA0,其它参数可以不用管,后面我会介绍
4、学习遥控编码:
运行附件里面的learn.py程序,命令如下:
./learn.py
如果串口打开正常的话控制台会显示你上面设置的串口信息,如:/dev/ttyUSB0、/dev/ttyAMA0,如果不显示就是串口设置有问题,请自行排查
然后按下遥控器上的按键,就会输出一串数字,记下这组按键及数字的对应关系,后面会用到。
5、详细配置文件使用说明:
下面是最关键的一步,如果配置错误便会武功尽失,其实也很简单,细心就可以
host————>HA主机的IP
passwd———>HA的登录密码,没有密码就空着
serialPort———>串口的地址
后面的配置主要就是红外码与想要控制设备的一个对应关系
entityID———>要操作设备的在HA中的名称,查看states里的entity如light.mainbedroom,这里就写mainbedroom
domain—————>设备所属的域,如light、switch、fan、input_boolean等,目前只支持这四种
ircode—————>第四步记录的编码,想用哪个键控制上面的设备就写哪个键对应的编码
谨记:编码千万不要有两个一样的哦,后果我没试!
6、见证成果(退出虚拟环境):
验证成果前先要确认一下你的config.yaml的绝对路径,默认的是/home/pi/,如果不是请修改ircontrol.py里面的这一行 f = open('/home/pi/config.yaml', 'r')
控制台运行命令:./ircontrol.py,然后对着红外模块按下遥控器上的按键,对应的设备是不是可以控制了
这里可能错误的地方如果出现import找不到模块的错误,可以尝试修改ircontrol.py文件的第一行“#!/srv/homeassistant/bin/python3”为你的虚拟环境对应目录。
7、开机自启:
一切运行正常后就是要添加开机自启动了,命令如下:
sudo nano /etc/rc.local
在exit 0 上面增加一行 “/home/pi/ircontrol.py &”,保存并退出
重启验证一下就大功告成了。
最后延伸一下:
如果家里有黑豆或者pro的话,可以通过智慧星将遥控器添加进去,并设置相应的频道及按键,然后在天猫精灵添加博联的设备,这样就可以间接通过黑豆来发送红外指令控制HA里面的设备了。比如:把中央电视台综合频道的按键设置为1(1键实际控制某个灯),对着天猫精灵说“打开中央电视台综合频道”就可以打开这个灯了。因为天猫精灵的自定义技能下线了,所以只能暂时通过这种变态的方法来实现了,我测试的是没有问题的。
|
评分
-
查看全部评分
|