经过满长的爬坑,终于成功用lirc控制空调,用于HomeAssistant。
准备
用到的硬件就下面这些。
顺便把马老板家红外模块链接放上,买电子元件什么的也是要看运气。
http://dwz.cn/hEALZbR1
http://dwz.cn/kZu5T03F
安装Lirc
sudo apt install lirc
,这里用的是STRETCH版的系统,lirc版本应该是0.94c+,旧版不太一样,本文仅针对新版。
修改启动配置
sudo vim /boot/config.txt
,修改
#dtoverlay=lirc-rpi
这行为
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
重启系统,lirc模块就被加载了
接线
安装gpiozero库,使用
pinout
查看树莓派管脚。
sudo apt install python3-gpiozero
pinout
将接收模块的数据口接到GPIO18(注意不是管脚号),将VCC接到5V,GND接地。
这个模块上没有标记,最好问一下客服,我买的两家的相同的模块,客服告诉我的都不一样。。。
发送模块数据口接GPIO17,VCC接5V,GND接地。
录制和发射
本来写了很多,发现 这篇文章 讲的很详细,简单说一下。
接收器是为了读取红外码,之后就不需要了,将红外码和键对应,生成Lirc配置文件,Lirc使用这个配置文件来发送相同的红外码,进而控制空调。
这里需要注意的是空调的红外码和其他设备不太一样,电视机这种'0’这个数字就对应一个代表'0’的码;而空调'27度’,对应的其实是当前的所有设置,包括风向、风速、制冷、温度这些,相当于给一个关闭的空调发送'27度’,就同时打开了空调,设置好了所有这些对应参数。因为它的特殊性,不能用lirc自带的工具录制,需要手动将复制到配置文件里面。
第一次发射的时候,空调没有反应,拖着排插按到空调上才成功,后面发现对准的话一两米也没有问题,最后固定在书架上对着空调的接收口。
发射的操作很简单,就是一条命令,通过其他程序调用,就产生了很多应用方案了,下一篇会说明如何整合到HomeAssistant。
参考
https://segmentfault.com/a/1190000014135418
http://jeffssss.github.io/%E6%A0%91%E8%8E%93%E6%B4%BE/2017/07/23/re-use-siri-turn-on-air-condition.html