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

 找回密码
 立即注册
查看: 204|回复: 4

[求助] 旋转编码器调整色温

[复制链接]

26

主题

144

帖子

925

积分

高级会员

Rank: 4

积分
925
金钱
781
HASS币
0
发表于 2025-1-9 14:18:09 | 显示全部楼层 |阅读模式
我想用旋转编码器+8266+esphome通过api做一个无线调整灯光亮度和色温的测试,现在出现了一个问题:
1、现有代码可以实现顺时针旋转编码器增加亮度,逆时针旋转编码器调暗灯光
2、长按通过color_temp_kelvin只会增加开尔文的数值,当达到灯的最大值后,不会循环减小,而且8266会掉线。
3、如果在esphome中建立一个灯,那么代码使用没问题
可以帮忙看看代码哪地方有问题吗,谢谢!
#旋转调整亮度
sensor:  
  - platform: rotary_encoder    
    name: "亮度旋钮"     
    pin_a:
      number: RX
      inverted: True
      mode:
         input: true
         pullup: true
                        
    pin_b:
      number: TX
      inverted: True
      mode:
         input: true
         pullup: true

    resolution: 2            
    min_value: 0                
    max_value: 30          
    publish_initial_value: true    
    id: rotary1 

    on_clockwise:

      - homeassistant.service:
          service: light.turn_on        
          data:
            entity_id: 
               light.color_taideng_2024
            brightness_step_pct: "5"
            transition: "0.1"
      - delay: 0.1s
          
    on_anticlockwise:
      - homeassistant.service:
          service: light.turn_on
          data:
            entity_id: 
              light.color_taideng_2024
            brightness_step_pct: "-5"
            transition: "0.1"         
      - delay: 0.1s            

         
         
#长按调调颜色,单击开关灯
globals:   
 - id: my_global_inta
   type: int
   restore_value: no
   initial_value: '2000'    



binary_sensor:

  - platform: gpio
    name: "调试"
    pin: 
      number: 5
      inverted: True
      mode: 
        input: True
        pullup: True
    internal: true       
    id: my_binary_sensor
    on_press:
      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) >= 2000) && (id(my_global_inta) < 6536);
               then:
                - homeassistant.service:
                    service: light.turn_on
                    data:
                      entity_id: light.color_taideng_2024
                      transition: "0.1"
                      color_temp_kelvin: !lambda |-
                          id(my_global_inta) += 20;
                          return id(my_global_inta);
                - delay: 0.1s                

           - while:
               condition:
                - binary_sensor.is_on: my_binary_sensor
                - lambda: |-
                            return (id(my_global_inta) > 2000) && (id(my_global_inta) <= 6536);
               then:
                - homeassistant.service:
                    service: light.turn_on
                    data:
                      entity_id: light.color_taideng_2024
                      transition: "0.1"
                      color_temp_kelvin: !lambda |-
                          id(my_global_inta) -= 4000;
                          return id(my_global_inta);                      
                - delay: 0.1s                         

    on_click: 
      then:
                - homeassistant.service:
                    service: light.toggle
                    data:
                      entity_id: light.color_taideng_2024
                - delay: 0.05s              

回复

使用道具 举报

26

主题

144

帖子

925

积分

高级会员

Rank: 4

积分
925
金钱
781
HASS币
0
 楼主| 发表于 2025-1-9 14:19:33 | 显示全部楼层
补充一下,我的灯色温范围是2000k-6536k
回复

使用道具 举报

59

主题

330

帖子

5506

积分

元老级技术达人

积分
5506
金钱
5161
HASS币
100
发表于 2025-1-9 18:38:49 | 显示全部楼层
不会循环的原因是没写循环逻辑,重启的原因是陷入死循环导致看门狗超时
回复

使用道具 举报

26

主题

144

帖子

925

积分

高级会员

Rank: 4

积分
925
金钱
781
HASS币
0
 楼主| 发表于 2025-1-10 08:57:33 | 显示全部楼层
ryanh7 发表于 2025-1-9 18:38
不会循环的原因是没写循环逻辑,重启的原因是陷入死循环导致看门狗超时

谢谢,我试试
回复

使用道具 举报

26

主题

144

帖子

925

积分

高级会员

Rank: 4

积分
925
金钱
781
HASS币
0
 楼主| 发表于 2025-1-10 14:38:51 | 显示全部楼层
本帖最后由 taida 于 2025-1-10 14:40 编辑

检查到了,第二个内循环的条件错了,旋转编码器的值不一定是6536,或许超过了,不一定是20的整倍数,所以不能循环。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-1-22 23:53 , Processed in 0.166072 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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