substitutions: name: bedside_lamp friendly_name: Bedside Lamp transition_length: 1s # Use your own preferences for these components. wifi: #ssid: "Your-SSID" #password: "Your-Password" #use_address: 192.168.10.12 # # Enable fallback hotspot (captive portal) in case wifi connection fails #ap: # ssid: "Bedside_lamp_$name" # password: "bedside2021" captive_portal: api: ota: logger: # Special platform + package are used for enabling unicore and disabling the # efuse mac crc check. These two changes are required for the ESP32-WROOM-32D # that is used in the Yeelight bedside lamp 2. esphome: name: $name platform: ESP32 board: esp32doit-devkit-v1 platformio_options: platform: espressif32@3.2.0 platform_packages: |-4 framework-arduinoespressif32 @ https://github.com/pauln/arduino-esp32.git#solo-no-mac-crc/1.0.6 # NOTE: HIGHLY OPTIONAL BLOCK # # This yeelight_bs2 comopnent acts as the hub for the device. Other # components talk to the hardware via this component. Normally, you # wouldn't need to change anything in the default implementation. You # can even fully omit this element from the configuration. # Only define this when you need different pin numbers or want to # assign specific ID's to the pin components. yeelight_bs2: red_id: TheRedOne red: GPIO13 green_id: TheGreenOne green: GPIO14 blue_id: TheBlueOne blue: GPIO5 white_id: TheWhiteOne white: GPIO12 master1_id: TheFirstMaster master1: GPIO33 master2_id: TheSecondMaster master2: GPIO4 sda: GPIO21 scl: GPIO19 trigger_pin: GPIO16 # This component controls the light of the device. light: - platform: yeelight_bs2 name: ${friendly_name} RGBW Light default_transition_length: ${transition_length} # You can use any effects that you like. These are just examples. effects: - random: name: "Slow Random" transition_length: 30s update_interval: 30s - random: name: "Fast Random" transition_length: 3s update_interval: 3s binary_sensor: # When pressing the power button, turn on the light. - platform: yeelight_bs2 id: ${name}_power_button part: power button on_press: then: - light.toggle: ${name} # When holding the color button, turn on night light mode. - platform: yeelight_bs2 id: ${name}_color_button part: color button on_multi_click: - timing: - ON for at least 0.8s then: - light.turn_on: id: ${name} brightness: 0.01 red: 0 green: 1 blue: 0 sensor: # When the slider is touched, update the brightness. # Brightness 0.01 initiates the light night mode, which has already # been handle above. Therefore, brightness starts from 0.02 here, # so night mode is not triggered from the slider. - platform: yeelight_bs2 id: ${name}_slider_level range_from: 0.02 on_value: then: - light.turn_on: id: ${name} brightness: !lambda return x;