找回密码
 立即注册
搜索
查看: 16385|回复: 10

[基础教程] ESPHOME 红外发射和接收配合MQTT

[复制链接]

20

主题

199

回帖

1486

积分

论坛DIY达人

积分
1486
金钱
1242
HASS币
100
发表于 2021-8-10 12:25:12 | 显示全部楼层 |阅读模式
总体框架是这样的1,想要发送红外的时候,往MQTT 指定topic publish,然后ESPHOME会负责把内容发出去。
2,ESPHOME接受到遥控器的数据后,负责把数据转发到MQTT。
这样弄好之后,想要做什么都是通过MQTT自动化完成。
PIC20210810121704001.jpg

如下是ESPHOME的主要配置。
text_sensor:
  - platform: mqtt_subscribe
    name: "nec to send"
    id: sendnec
    topic: epshome32/sendnec
    on_value:
      then:
        remote_transmitter.transmit_nec:
          address: !lambda |-
            unsigned int addr;
            unsigned int command;
            sscanf(x.c_str(),"%x:%x",&addr,&command);
            ESP_LOGI("main", "NEC:0x%x:0x%x", addr,command);
            return addr;
          command: !lambda |-
            unsigned int addr;
            unsigned int command;
            sscanf(x.c_str(),"%x:%x",&addr,&command);
            return command;
  - platform: mqtt_subscribe
    name: "pana to send"
    id: sendpan
    topic: epshome32/sendpan
    on_value:
      then:
        remote_transmitter.transmit_panasonic:
          address: !lambda |-
            unsigned int addr;
            unsigned long command;
            sscanf(x.c_str(),"%x:%x",&addr,&command);
            ESP_LOGI("main", "PANA:0x%x:0x%x", addr,command);
            return addr;
          command: !lambda |-
            unsigned int addr;
            unsigned long command;
            sscanf(x.c_str(),"%x:%x",&addr,&command);
            return command;            
  - platform: mqtt_subscribe
    name: "sam to send"
    id: sendsam
    topic: epshome32/sendsam
    on_value:
      then:
        remote_transmitter.transmit_samsung:
          data: !lambda |-
            unsigned long data;
            sscanf(x.c_str(),"%x",&data);
            ESP_LOGI("main", "SAM:0x%x", data);
            return data;
remote_transmitter:
  pin: GPIO21
  carrier_duty_percent: 50%
  id: remote_send

  
remote_receiver:
  pin: 
    number: GPIO23
    inverted: True
#    mode: INPUT_PULLUP
  dump: all
  on_nec:
    then:
    - mqtt.publish:
        topic: esphome32/senso/ir
        payload: !lambda |-
          char temp[20];
          sprintf(temp, "%d:%d", x.address, x.command);
          ESP_LOGI("main", "rcv nec: %s", temp);
          return temp;
  on_panasonic:
    then:
    - mqtt.publish:
        topic: esphome32/senso/ir
        payload: !lambda |-
          char temp[20];
          sprintf(temp, "%d:%d", x.address, x.command);
          ESP_LOGI("main", "rcv pan: %s", temp);
          return temp;          
  on_sony:
    then:
    - mqtt.publish:
        topic: esphome32/senso/ir
        payload: !lambda |-
          char temp[20];
          sprintf(temp, "%d:%d", x.data, x.nbits);
          ESP_LOGI("main", "rcv sony: %s", temp);
          return temp; 
  on_jvc:        
    then:
    - mqtt.publish:
        topic: esphome32/senso/ir
        payload: !lambda |-
          char temp[20];
          sprintf(temp, "%d", x.data);
          ESP_LOGI("main", "rcv jvc: %s", temp);
          return temp; 
  on_rc5:        
    then:
    - mqtt.publish:
        topic: esphome32/senso/ir
        payload: !lambda |-
          char temp[20];
          sprintf(temp, "%d:%d", x.address, x.command);
          ESP_LOGI("main", "rcv rc5: %s", temp);
          return temp; 
          
硬件链接可以参考这个
https://cdn.sparkfun.com/assets/ ... e395f6d42000000.jpg
https://learn.sparkfun.com/tutorials/ir-communication/all
回复

使用道具 举报

30

主题

463

回帖

4805

积分

论坛元老

佑桑

积分
4805
金钱
4297
HASS币
156

教程狂人

发表于 2021-8-10 13:04:11 | 显示全部楼层
使用 OpenMQTTGateway 是不是更簡單點
https://docs.openmqttgateway.com/
ASRock H370 PRO4, 48GB, 8TBx3 + 2TBx3
ESXi 6.7 + Ununtu + Docker + HASS.IO -> Homeassistant OS
(Home Assistant Supervised 官方文件)
回复

使用道具 举报

18

主题

226

回帖

2901

积分

金牌会员

积分
2901
金钱
2657
HASS币
0
发表于 2021-8-10 13:11:22 | 显示全部楼层
待反馈吗?
回复

使用道具 举报

1

主题

201

回帖

2302

积分

金牌会员

积分
2302
金钱
2100
HASS币
0
发表于 2021-8-10 21:52:15 | 显示全部楼层
我觉得,使用ESPHOME的好处是可以结合更多的sensor和ble tracker等等在同一个板子上
回复

使用道具 举报

23

主题

132

回帖

925

积分

高级会员

积分
925
金钱
770
HASS币
0
发表于 2021-8-13 16:31:15 | 显示全部楼层
楼主,来个更详细的说明吧,之前买了小米的空调伴2    发现这玩意竟然没继电器,不能断电。想了一下这玩意可以自己做一个,继电器+红外发送就行了,。但它也有个好处,遥控器的开关和温度调整它也能接收到并更新APP上的状态
回复

使用道具 举报

0

主题

67

回帖

318

积分

中级会员

积分
318
金钱
251
HASS币
0
发表于 2021-10-28 13:23:30 | 显示全部楼层
谢谢分享
回复

使用道具 举报

23

主题

132

回帖

925

积分

高级会员

积分
925
金钱
770
HASS币
0
发表于 2022-6-20 08:53:48 | 显示全部楼层
这个有意思,现在DIY人体传感器,加个这玩意上去,又可以遥控房间红外设备了,66666
回复

使用道具 举报

38

主题

367

回帖

4384

积分

元老级技术达人

积分
4384
金钱
3924
HASS币
250
发表于 2022-6-20 09:14:02 来自手机 | 显示全部楼层
mark一下
回复

使用道具 举报

8

主题

222

回帖

1820

积分

金牌会员

积分
1820
金钱
1590
HASS币
0
发表于 2022-9-12 22:25:39 | 显示全部楼层
接收部分MQTT能收到按键信息了,请问里面的发射部分有什么作用?没明白原理。
epshome32/sendnec这个主题好像也没信息。
海鲜市场:jasona3
回复

使用道具 举报

0

主题

85

回帖

1158

积分

金牌会员

积分
1158
金钱
1073
HASS币
0
发表于 2023-3-23 08:57:02 | 显示全部楼层
留名学习
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-7-3 11:20 , Processed in 0.179233 second(s), 8 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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