substitutions:
  friendly_name: Mi Desk Lamp 1S
  device_name: mi-desklamp-1s
esphome:
  name: ${device_name}
  friendly_name: ${devicename_friendly}
  comment: ${friendly_name}
esp32:
  board: esp32doit-devkit-v1
  framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_FREERTOS_UNICORE: y
    advanced:
      ignore_efuse_mac_crc: true
      
      ignore_efuse_custom_mac: true
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: on
  ap:
    ssid: ${device_name}
    password: !secret ap_password
    ap_timeout: 1min
logger:
captive_portal:
api:
  reboot_timeout: 0s
  encryption:
    key: !secret encryption_key
ota:
  - platform: esphome
    password: !secret ota_password
web_server:
  port: 80
time:
  - platform: homeassistant
    id: homeassistant_time
text_sensor:
  - platform: version
    name: "Version"
    icon: mdi:cube-outline
  - platform: wifi_info
    ip_address:
      name: "IP Address"
      icon: mdi:lan
sensor:
  
  - platform: uptime
    name: "Uptime"
    update_interval: 60s
    icon: mdi:clock-outline
  
  - platform: wifi_signal
    name: "WiFi Signal"
    update_interval: 60s
    icon: mdi:wifi
  
  - platform: rotary_encoder
    id: rotation
    pin_a: GPIO27
    pin_b: GPIO26
    resolution: 2
    on_value:
      then:
        - if:
            condition:
              
              lambda: "return id(button).state;"
            then:
              
              - lambda: |-
                  auto min_temp = id(light1).get_traits().get_min_mireds();
                  auto max_temp = id(light1).get_traits().get_max_mireds();
                  auto cur_temp = id(light1).current_values.get_color_temperature();
                  auto new_temp = max(min_temp, min(max_temp, cur_temp + (x*10)));
                  auto call = id(light1).turn_on();
                  call.set_color_temperature(new_temp);
                  call.perform();
            else:
              
              - light.dim_relative:
                  id: light1
                  relative_brightness: !lambda |-
                    return x / 25.0;
        
        - sensor.rotary_encoder.set_value:
            id: rotation
            value: 0
binary_sensor:
  
  - platform: gpio
    id: button
    pin:
      number: GPIO33
      inverted: True
      mode: INPUT_PULLDOWN
    on_click:
      then:
        - light.toggle:
            id: light1
            transition_length: 0.2s
    filters:
      - delayed_off: 5ms
output:
  - platform: ledc
    pin: GPIO2
    id: output_cw
    power_supply: power
    frequency: 40000Hz
  - platform: ledc
    pin: GPIO4
    id: output_ww
    power_supply: power
    frequency: 40000Hz
power_supply:
  - id: power
    pin: GPIO12
    enable_time: 0s
    keep_on_time: 0s
light:
  - platform: cwww
    id: light1
    name: "Light"
    default_transition_length: 0s
    constant_brightness: true
    cold_white: output_cw
    warm_white: output_ww
    cold_white_color_temperature: 4800 K
    
    warm_white_color_temperature: 2500 K
    restore_mode: RESTORE_DEFAULT_OFF
    gamma_correct: 0