devices.esphome.io
Xiaomi Mi Smart LED Desk Lamp Pro
Xiaomi Mi Smart LED Desk Lamp Pro
Device Type: lightElectrical Standard: euBoard: esp32
Install ESPHome on Xiaomi Mi Smart LED Desk Lamp Pro
Materials
To install ESPHome onto your Lamp you need
- Soldering iron
- Serial to USB stick
- 3 Volt Power from extern or the Serial-USB
Open the Device
Unplug your Lamp and remove the screw under the rubber feet. Marked in the picture.
Solder your debugger onto the Board
Plugin the 3Volts last.
(Optional) backup old Firmware
If you want to backup the old firmware just use esptool.
Just replace COM or ttyUSB.
Linux
python3 -m esptool -b 115200 --port /dev/ttyUSB0 read_flash 0x00000 0x400000 your/folder/firmwaredump.bin
Windows
python.exe -m esptool -b 115200 --port COM3 read_flash 0x00000 0x400000 your/folder/firmwaredump.bin
Recommended Config
esphome: name: midesklamppro
esp32: board: esp32doit-devkit-v1 framework: type: esp-idf sdkconfig_options: CONFIG_FREERTOS_UNICORE: y advanced: ignore_efuse_mac_crc: true
wifi: ssid: !secret wifi_ssid password: !secret wifi_password
# Enable logginglogger:
api: reboot_timeout: 0s encryption: key: !secret encryption_key
ota: password: !secret password
sensor: - platform: rotary_encoder id: rotation pin_a: GPIO26 pin_b: GPIO27 resolution: 2 on_value: then: - if: condition: # Check if Button is pressed while rotating lambda: "return id(button).state;" then: # If Button is pressed, change CW/WW - 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: # If Button is not pressed, change brightness - light.dim_relative: id: light1 relative_brightness: !lambda |- return x / 25.0; # Reset Rotation to 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.5s filters: - delayed_off: 5ms
number: - id: freq1 name: "Flicker Frequency" icon: "mdi:sine-wave" unit_of_measurement: "Hz" platform: template min_value: 0 max_value: 100000 initial_value: 100000 mode: box step: 1 set_action: - output.ledc.set_frequency: id: output_cw frequency: !lambda return x; - output.ledc.set_frequency: id: output_ww frequency: !lambda return x;
output: - platform: ledc pin: GPIO2 id: output_cw power_supply: power frequency: 100000Hz - platform: ledc pin: GPIO4 id: output_ww power_supply: power frequency: 100000Hz
power_supply: - id: power pin: GPIO12 enable_time: 0s keep_on_time: 0s
light: - platform: cwww id: light1 name: "Mi Desk Lamp Pro" 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 #2500k is the original value of the lamp. To correct binning for 2700k to look more like 2700k use 2650k instead restore_mode: RESTORE_DEFAULT_OFF gamma_correct: 1