找回密码
 立即注册

微信扫码登录

搜索
查看: 10915|回复: 9

[技术探讨] 【求助】esphome控制灯的色温的问题

[复制链接]

3

主题

54

回帖

862

积分

高级会员

积分
862
金钱
805
HASS币
0
发表于 2021-7-16 19:18:43 | 显示全部楼层
globals:
 - id: my_global_int
   type: float
   restore_value: no
   initial_value: '0'
   
 - id: my_global_inta
   type: double
   restore_value: no
   initial_value: '150'    

 - id: my_global_intc
   type: float
   restore_value: no
   initial_value: '2'    
   


binary_sensor:
  - platform: gpio
    name: "MCP23017 Pin #1"
    pin: 
      number: 25
      inverted: True
      mode: INPUT_PULLUP
    internal: true       
    id: my_binary_sensor
    on_double_click:
      min_length: 50ms
      max_length: 500ms
      then:
       - while:
           condition:
            - binary_sensor.is_on: my_binary_sensor
           then:
           - while:
               condition:
                - binary_sensor.is_on: my_binary_sensor
                - lambda: |-
                            return (id(my_global_inta) >= 150) && (id(my_global_inta) < 400);
               then:
               - light.turn_on:
                  id: lights_1
                  transition_length: 0.1s
                  color_temperature: !lambda |-
                          id(my_global_inta) += 5;
                          return id(my_global_inta);
               - delay: 0.1s    
           - while:
               condition:
                - binary_sensor.is_on: my_binary_sensor
                - lambda: |-
                            return (id(my_global_inta) > 150) && (id(my_global_inta) <= 400);
               then:
               - light.turn_on:
                  id: lights_1
                  transition_length: 0.1s
                  color_temperature: !lambda |-
                          id(my_global_inta) -= 5;
                          return id(my_global_inta);
               - delay: 0.1s 


    on_press:
     - delay: 0.55s
     - if:
        condition:
         - binary_sensor.is_on: my_binary_sensor
        then:
         - while:
             condition:
              - binary_sensor.is_on: my_binary_sensor
             then:
             - while:
                 condition:
                  - binary_sensor.is_on: my_binary_sensor
                  - lambda: |-
                              return (id(my_global_int) >= 0) && (id(my_global_int) < 50);
                 then:
                 - light.dim_relative: 
                    id: lights_1
                    relative_brightness: !lambda |-
                          id(my_global_int) += 1;
                          return id(my_global_intc) / 100.0;
                    transition_length: 0.3s
                 - delay: 0.1s
             - while:
                 condition:
                  - binary_sensor.is_on: my_binary_sensor
                  - lambda: |-
                              return (id(my_global_int) > 0) && (id(my_global_int) <= 50);
                 then:
                 - light.dim_relative: 
                    id: lights_1
                    relative_brightness: !lambda |-
                          id(my_global_int) -= 1;
                          return id(my_global_intc) / -100.0;
                    transition_length: 0.2s
                 - delay: 0.1s
              
        else:
         - light.toggle: lights_1 
         

 
回复

使用道具 举报

3

主题

54

回帖

862

积分

高级会员

积分
862
金钱
805
HASS币
0
发表于 2021-7-16 19:22:47 | 显示全部楼层
上面这段实现了长按无极调亮度,双击长按无极调色温。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-28 03:11 , Processed in 0.120998 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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