IRremoteESP8266库通过MQTT提取Raw格式红外编码
本帖最后由 mossan 于 2020-12-9 12:14 编辑IRremoteESP8266库示例IRMQTTServer.ino可以接收红外编码并通过MQTT发送到ir_server/received,但格式是“协议+16进制”的。
其实可以做2个IRMQTTServer,一个发送ir_server-send(相当于平常的遥控器),一个接收ir_server-receive/received。
发送端可以web控制,也可以通过MQTT控制,以及本地管理端控制(通过MQTT),这样可以连接物联网平台。
发送端IRMQTTServer.ino不需要修改。
接收端IRMQTTServer.ino通过修改,可以获取Raw红外编码(参考IRutils.cpp):
添加:
String resultToRaw(const decode_results * const results) {
String output = "";
output.reserve(1024);
for (uint16_t i = 1; i < results->rawlen; i++) {
uint32_t usecs;
for (usecs = results->rawbuf * kRawTick; usecs > UINT16_MAX; usecs > UINT16_MAX; usecs -= UINT16_MAX) {
output += uint64ToString(UINT16_MAX);
output += F(",0,");
}
output += uint64ToString(usecs, 10);
if (i < results->rawlen - 1)
output += F(",");
}
return output;
}
将IRMQTTServer.ino的:
lastIrReceived = String(capture.decode_type) + kCommandDelimiter +
resultToHexidecimal(&capture);
修改为:
lastIrReceived = resultToRaw(&capture);
这样,接收端web页面可以看到Raw红外编码,通过订阅ir_server-receive/received,也可以接收到Raw红外编码。
页:
[1]