本帖最后由 inevitab 于 2024-6-2 14:39 编辑
想用 esp8266 控制热水器上面的增加温度的按钮,
在我的热水器上,连续重复按增加温度的按钮,温度会升到最高然后回到最低再升到最高,而长按,温度升到最高后就不动了。我需要实现长按的功能。
我先是用下面的代码来检测原遥控器增加温度按钮发出的信号:
remote_receiver:
pin:
number: GPIO14
inverted: True
mode: INPUT_PULLUP
dump: nec
原遥控器无论是短按还是长按,检测到的信号都是:
address=0xCF00, command=0x6996 command_repeats=1
然后我用这个代码可以成功控制热水器增加温度:
remote_transmitter:
pin: GPIO4
carrier_duty_percent: 50%
switch:
- platform: template
name: "ir_switch_test_01"
id: "ir_switch_test_01"
turn_on_action:
- while:
condition:
- lambda: return id(ir_transmit_count) < 50;
then:
- remote_transmitter.transmit_nec:
address: 0xCF00
command: 0x6996
command_repeats: 1
- delay: 20ms
- lambda: id(ir_transmit_count) += 1;
- lambda: id(ir_transmit_count) = 0; # 重置计数器
但是这个代码实现的效果是“连续重复点击”,不是“长按”,请问要怎样改成“长按”呢?
已测试这样不行:
switch:
- platform: template
name: "ir_switch_test_01"
id: "ir_switch_test_01"
turn_on_action:
- remote_transmitter.transmit_nec:
address: 0xCF00
command: 0x6996
command_repeats: 9999999
------------------------------------------------------
自己更新:esphome并不支持“长按”的操作,很难实现这个,改用tasmota了,tasmota直接支持
|