之前我又篇文章介绍了如何使用ESPHome 来抓取和并发送红外代码,来实现用NodeMCU来制作一个万能遥控器,当时上一次的方法需要每次更新了红外代码都要刷新一次esp8266的固件才可以控制新设备或者修改设备代码,实现起来比较繁琐。

于是本文给大家带来OpenMQTTGateway方法来实现红外代码的学习和发送,OpenMQTTGateway是一个红外发送接收的中间件,这个中间件会把收到的任何格式的红外代码通过MQTT的形式发布到对应的主题上,这样我们就可以从mqtt服务器端直接看到收到的红外代码,并且取回后还可以通过发布到mqtt的commands主题实现让esp8266通过发射头发射信号出去,这样就可以简单的实现万能遥控功能。

OpenMQTTGateway支持很多形式的信号收发转mqtt,本文仅针对红外收发做描述。

首先我们下载固件并写入NodeMCU。

项目地址;https://github.com/1technophile/OpenMQTTGateway

在release页面下载最新nodemcuv2-ir-firmware.bin

然后我们再下载ESP8266刷固件程序
下载地址:https://github.com/marcelstoer/nodemcu-pyflasher/releases

将固件刷写到NodeMCU里,芯片会发射出一个信号,我们连接到信号,会自动弹出网页带大家到配置界面。

配置界面引导我们配置好WiFi信号和MQTT相关信息。
然后就是nodemcu的连线部分参考下图:


简单总结就是发射头接D0,接收头接D4
全部配置完毕后我们向接收头发送红外命令,从MQTT端可以看到收到json格式的数据内容,证明成功配置接收端。

发送数据部分我们要向
home/OpenMQTTGateway_ESP8266_IR/commands/MQTTtoIR
这个topic发送json格式的命令,即可从NodeMCU的发射头发送出去相应的红外代码。
NEC格式红外代码发送例子:


SONY格式红外代码发送例子:


RAW格式红外代码发送例子:


可以定义"repeat": N 在json内容中,来实现重复发送多少次,以防止命令丢失。
Home Assistant配置红外开关例子:

switch:
- platform: mqtt
  name: IR Power
  #state_topic: "home/OpenMQTTGateway_ESP8266_IR/commands/MQTTtoIR"
  command_topic: "home/OpenMQTTGateway_ESP8266_IR/commands/MQTTtoIR"
  payload_on: '{"value": 16625743}'
  payload_off: '{"value": 16625743}'
  qos: "0"
  retain: true

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据