Przejdź do treści

Xiaomi Mi Desk Lamp – smart lampka biurkowa

Lampka Xiaomi MJTD01YL

Nieco ponad rok temu, po zmianie biurka na takie bez nadstawki, nie miałem możliwości montażu żarówki Xiaomi Yeelight YLDP02YL, której używałem do tej pory. z racji tego, że był to czas remontu i musiałem przenieść się do piwnicy, praca przy komputerze bez jakiejkolwiek lampki była uciążliwa. Chcąc zachować możliwość sterowania światłem z jednej aplikacji, wybrałem chyba jedyną dostępną wtedy lampkę biurkową z ekosystemu, czyli Xiaomi Mi Desk Lamp MJTD01YL.

Budowa

Xiaomi Mi Desk Lamp wyposażona jest w 42 diody ciepłobiałe i zimnobiałe, zamontowane naprzemiennie, zamontowane za matową pleksą, która dodatkowo rozprasza światło. Za sterowanie odpowiada aplikacja Yeelight lub Mi Home oraz enkoder, którym można sterować jasnością, temperaturą barwową, przełączać lampkę oraz wywoływać np. zapisany preset. Niestety, regulowana jest tylko w jednej płaszczyźnie. Moduł LED połączono z resztą lampki płaskim, pomarańczowym przewodem, sprawia wrażenie solidnego. w tylnej części podstawy znajduje się gniazdo na wtyk od zasilacza, a pod spodem przycisk reset.

Xiaomi Mi Desk Lamp - parametry techniczne

Temperatura barwowa: 2700K - 6500K
Strumień świetlny: maks. 520 lm
Moc: 6W
Żywotność: 25 000h
Łączność: WiFi 802.11n 2.4GHz
Wysokość: 445 mm
Szerokość: 150 mm
Waga: 800 g

Możliwości modyfikacji

To chyba najważniejszy punkt - za sterowanie lampką odpowiada moduł ESP8266, dzięki któremu lampkę w prosty sposób można przerobić, stosując np. Tasmotę lub ESP Home, korzystając z template, który przygotowałem - niestety, na Tasmocie zdarzały mi się samoczynne resety do ustawień fabrycznych, dodatkowo, obsługę enkodera trzeba było wkompilować przy każdej aktualizacji. Poradnik dotyczący flashowania znajduje się tutaj.

Template do ESPhome

esphome:
  name: midesklamp
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pass
  ap:
    ssid: !secret fallback_ssid
    password: !secret fallback_pass
captive_portal:
logger:
api:
  password: !secret midesklamp_pass
ota:
  password: !secret midesklamp_pass
sensor:
  - platform: rotary_encoder
    id: rotation
    pin_a: GPIO13
    pin_b: GPIO12
    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*20)));
                  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 / 10.0;
        - sensor.rotary_encoder.set_value:
            id: rotation
            value: 0
binary_sensor:
  - platform: gpio
    id: button
    pin:
      number: GPIO2
      inverted: True
      mode: INPUT_PULLUP
    on_click: 
      then:
        - if:
            condition:
              light.is_on: light1
            then:
              - light.turn_off:
                  id: light1
            else:
              - light.turn_on:
                  id: light1
                  brightness: 50%
                  color_temperature: 2700 K
output:
  - platform: esp8266_pwm
    pin: GPIO4
    id: output_cw
  - platform: esp8266_pwm
    pin: GPIO5
    id: output_ww
light:
  - platform: cwww
    id: light1
    default_transition_length: 0s
    constant_brightness: true
    name: "Lights"
    cold_white: output_cw
    warm_white: output_ww
    cold_white_color_temperature: 6500 K
    warm_white_color_temperature: 2700 K
    gamma_correct: 0
Zasadniczą część konfiguracji przygotował u/erwinbamert, ja dostosowałem ją do GPIO.
Skip to content