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

 找回密码
 立即注册
查看: 1240|回复: 5

[技术探讨] esphome长按循环事件触发的方式

[复制链接]

25

主题

224

帖子

1032

积分

金牌会员

007潜水了

Rank: 6Rank: 6

积分
1032
金钱
808
HASS币
0
发表于 2024-4-2 20:52:47 | 显示全部楼层 |阅读模式
本帖最后由 demacia 于 2024-4-2 21:06 编辑

esphome 长按循环变化的方案

场景: 灯的亮度调节,想通过长按一个gpio的方式,在长按的时间段中循环调整亮度参数。

在高铁上想了下实现方式的伪代码

通过第一次长按触发number事件变化
number事件触发后:
   1. 判断当前按钮是否press,是则进入2,否则退出
   2. 执行真正的亮度调节逻辑
   3. 每次在更新自身值,再次进入1
  

纯yy手敲的,有时间实践试试,有没有大佬提点下,其他可行的方式

number:
  - platform: template
     name: my_number
    on_value:
      if:
      condition:
        # Same syntax for is_off
        binary_sensor.is_on: my_binary_sensor
      then:
        - (具体的业务逻辑)
        - (sleep 休眠一段时间)
        - number.set:
           id: my_number
           value: value+1
binary_sensor:
  - platform: gpio
    pin:
      number: D2
      mode:
        input: true
        pullup: true
    name: my_binary_sensor
    on_multi_click:
    - timing:
        - ON for at most 1s
       then:
          - number.set:
             id: my_number
             value: 1




评分

参与人数 1金钱 +16 收起 理由
sorrypqa + 16 大神666!

查看全部评分

回复

使用道具 举报

24

主题

580

帖子

2689

积分

金牌会员

Rank: 6Rank: 6

积分
2689
金钱
2109
HASS币
0
发表于 2024-4-2 22:28:52 | 显示全部楼层
binary_sensor:
  - platform: gpio     #物理开关
    pin:
      number: 0
      mode: INPUT_PULLUP
      inverted: True
    name: "Sonoff Basic Button"
    on_press:
      - switch.toggle:
          id: fakebutton
      - delay: 0.5s

  - platform: gpio   #调整+亮度物理按键
    pin:
      number: 5
      inverted: True
      mode: INPUT_PULLUP
    name: Up Button
    id: up_button
    internal: True
    on_press:
      then:
      - while:
            condition:
            - binary_sensor.is_on: up_button
           # - delay: 1s
            then:
            - logger.log: "Single Long Clicked"  #长按调亮度
            - light.dim_relative:
                id: led
                relative_brightness: 5%  #增加5%
                transition_length: 0.1s
            - delay: 0.1s

  - platform: gpio      #调整-亮度物理按键
    pin:
      number: 4
      inverted: True
      mode: INPUT_PULLUP
    name: Down Button
    internal: True
    id: Down_Button
    filters:
      - delayed_on: 50ms
      - delayed_off: 50ms          #消抖 
    on_press:
      then:
      - while:
            condition:
            - binary_sensor.is_on: Down_Button
           # - delay: 1s
            then:
            - logger.log: "Single Long Clicked"  #长按调亮度
            - light.dim_relative:
                id: led
                relative_brightness: -5%  #减少5%
                transition_length: 0.1s
            - delay: 0.1s

#==========================================================================
output:
  - platform: esp8266_pwm
    id: basic_green_led
    pin:
      number: GPIO13    #pwm线接口
    frequency: 1000

#==========================================================================
light:
  - platform: monochromatic
    name: "bedroom chandelier led"
    output: basic_green_led
    id: led
    default_transition_length: 2.5s
这是我以前抄大佬的了 好像也是这里的大佬

评分

参与人数 1金钱 +16 收起 理由
sorrypqa + 16 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

51

主题

1340

帖子

5600

积分

论坛DIY达人

积分
5600
金钱
4260
HASS币
20
发表于 2024-4-2 22:55:18 | 显示全部楼层
感谢两位大佬,刚有想弄个LED灯带控制面板的打算,就有作业抄了,哈哈~
回复

使用道具 举报

25

主题

224

帖子

1032

积分

金牌会员

007潜水了

Rank: 6Rank: 6

积分
1032
金钱
808
HASS币
0
 楼主| 发表于 2024-4-3 08:34:17 | 显示全部楼层
kjjuhfv 发表于 2024-4-2 22:28
这是我以前抄大佬的了 好像也是这里的大佬

原来能循环,谢谢大佬
回复

使用道具 举报

24

主题

580

帖子

2689

积分

金牌会员

Rank: 6Rank: 6

积分
2689
金钱
2109
HASS币
0
发表于 2024-4-3 14:13:21 | 显示全部楼层
demacia 发表于 2024-4-3 08:34
原来能循环,谢谢大佬

不能循环的
回复

使用道具 举报

25

主题

224

帖子

1032

积分

金牌会员

007潜水了

Rank: 6Rank: 6

积分
1032
金钱
808
HASS币
0
 楼主| 发表于 2024-4-4 11:01:10 | 显示全部楼层

你贴的配置里不是写了循环嘛?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 10:26 , Processed in 0.051343 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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