『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 7354|回复: 10

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

[复制链接]

18

主题

201

帖子

1346

积分

论坛DIY达人

积分
1346
金钱
1120
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

主题

493

帖子

4767

积分

论坛元老

佑桑

Rank: 8Rank: 8

积分
4767
金钱
4259
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

主题

230

帖子

2410

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

1

主题

189

帖子

1919

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

21

主题

135

帖子

786

积分

高级会员

Rank: 4

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

使用道具 举报

0

主题

66

帖子

252

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

21

主题

135

帖子

786

积分

高级会员

Rank: 4

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

使用道具 举报

37

主题

396

帖子

4090

积分

元老级技术达人

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

使用道具 举报

8

主题

194

帖子

1439

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

0

主题

77

帖子

920

积分

高级会员

Rank: 4

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-24 15:18 , Processed in 0.062683 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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