Stmívatelná lampa nad postel

Napsal uživatel Stopka dne

Koupili jsme si nové poličky nad postel. Nic zvláštního, prostě Ikea. Ale hned po přivrtání na zeď jsem věděl, že pod ně budu potřebovat přidat lampu v podobě LED pásku. Když říkám lampu, myslím stmívatelnou chytrou lampu připojenou do mého domácího systému.

Všechna má chytrá zařízení jsou připojena do Home Assistent serveru s integrovaným Google Assistentem pro ovládání hlasem. Home Assistent lze propojit s mnoha zařízeními napřímo, ale nejraději mám stejně otevřené protokoly jako MQTT.

Nejprve jsem hledal nějaké hotové řešení. Chtěl bych aby zařízení mělo podporu po dobu 5 let a víc, nechci žádný neaktualizovatelný zmetek na jedno použití. Dlouhé podpory lze s trochou štěstí dosáhnout u otevřených produktů s dostatečně velkou komunitou uživatelů. Hledal jsem proto zařízení, které umí řídit nezávisle dva LED pásky, lze k němu připojit dva vypínače, lze jej připojit přes wifi a ještě lépe přes MQTT a je dodáváno, nebo alespoň je možné jej aktualizovat, s otevřeným firmwarem.

Na českém trhu jsem našel jediný více méně odpovídající zařízení: Shelly RGBW2. Je postaveno na ESP8266, poměrně otevřeném čipu s wifi a několika IO výstupy. K dispozici je hned několik otevřených firmwarů připravených k nahrání. Modul má 4 PWM výstupy pro 4 led pásky, ale jen jeden vstup pro vypínač. Já ale potřebuji vypínače dva. Každý ze dvou led pásku chci ovládat samostatným vypínačem. Nechci aby chytré zařízení bylo odkázáno jen a pouze na ovládání mobilem či hlasem.

Řešení je tedy koupit dva moduly? Nebo vymyslet jak mít dva vypínače na jednom vstupu? Třeba že by každý byl připojen přes jiný dělič napětí...

Shodou náhod jsem měl ale doma několik vývojářských desek s ESP8266 a tak jsem se rozhodl že si vyrobím vlastní ovádání LED lampy z nich. Nemělo by to být komplikované. Koupil jsem 12V DC zdroj, 5V regulátor napětí a dva mosfet transistory. A samozřejmě led pásky, s hliníkovými profily na přichycení a chlazení a s difuzním plastovým krytím pro rovnoměrný rozptyl světla. Elektrický zdroj jsem samozřejmě vybral vhodný pro délku a typ pásku a s rezervou pro řídící elektroniku.

Jako firmware jsem zvolil ESPHome. To je firmware a sada nástrojů přímo určených pro procesory ESP8266 a ESP32 a je jednoduše konfigurován YAML soubory. V konfiguraci se nadefinuje co by měl firmware dělat: na jakou wifi se má připojit, na kterém výstupu má led pásek, na jakém vstupu má připojený vypínač a co má dělat při jaké akci. ESPHome pak podle toho sestavý výsledný firmware a pomůže jej i nahrát.

ESPHome lze rozběhnout jednoduše v docker kontejneru. Ten vystaví jednoduché webové rozhraní kde lze provést vše od sepsání konfigurace, přes nahrání firmwaru do čipu až po následné aktualizace firmwaru. První nahrání je potřeba provést USB kabelem, aktualizace pak lze posílat přes wifi (tzv OTA). Firmware se umí napojit na Home Assistant přímo přes dedikované api, nebo pomocí MQTT. Obě varianty umožňují detekovat zařízení automaticky. Já zvolil otevřenější standard připojení přes MQTT. Stačilo jen Home assistant a ovladač lampy připojit na stejný MQTT server a vše hned začlo fungovat.

YAML konfigurace mé lampy vypadá následovně:

substitutions:
  id: bedroom_bed_light

esphome:
  name: bedroom-bed-light
  platform: ESP8266
  board: nodemcuv2

status_led:
  pin: 
    number: D4
    inverted: true

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

logger:

mqtt:
  broker: !secret mqtt_host
  username: ${id}
  password: !secret mqtt_pass
  discovery: true
  discovery_retain: true
  discovery_prefix: homeassistant

ota:
  password: !secret ota_pass
  
binary_sensor:
  - platform: gpio
    id: ${id}_wall_switch
    pin:
      number: D6
      mode: INPUT_PULLUP
      inverted: True
    name: "Bedroom wall bed switch"
    on_multi_click:
      - timing:
          - ON for at most 0.5s
          - OFF for at least 0.5s
        then:
          - light.toggle:
              id: ${id}_wall
      - timing:
          - ON for at most 0.5s
          - OFF for at most 0.5s
          - ON for at most 0.5s
          - OFF for at least 0.5s
        then:
          - light.dim_relative:
              id: ${id}_wall
              relative_brightness: +25%
      - timing:
          - ON for 0.5s to 2s
          - OFF for at least 0.5s
        then:
          - light.dim_relative:
              id: ${id}_wall
              relative_brightness: -25%
  - platform: gpio
    id: ${id}_door_switch
    pin:
      number: D7
      mode: INPUT_PULLUP
      inverted: True
    name: "Bedroom door bed switch"
    on_multi_click:
      - timing:
          - ON for at most 0.5s
          - OFF for at least 0.5s
        then:
          - light.toggle:
              id: ${id}_door
      - timing:
          - ON for at most 0.5s
          - OFF for at most 0.5s
          - ON for at most 0.5s
          - OFF for at least 0.5s
        then:
          - light.dim_relative:
              id: ${id}_door
              relative_brightness: +25%
      - timing:
          - ON for 0.5s to 2s
          - OFF for at least 0.5s
        then:
          - light.dim_relative:
              id: ${id}_door
              relative_brightness: -25%


output:
  - platform: esp8266_pwm
    id: ${id}_wall_mosfet
    pin:
      number: D5
  - platform: esp8266_pwm
    id: ${id}_door_mosfet
    pin:
      number: D2

light:
  - platform: monochromatic
    id: ${id}_wall
    name: "Bedroom wall bed light"
    output: ${id}_wall_mosfet
  - platform: monochromatic
    id: ${id}_door
    name: "Bedroom door bed light"
    output: ${id}_door_mosfet

Popisuje název zařízení pro autodetekci, přihlašovací údaje k wifi, přihlašovací pdaje k MQTT serveru, heslo pro OTA aktualizace. Dále následuje seznam vstupů a LED výstupy. Na konci je pak definice PWM stmívání na výstupech a mapování kombinací stisků a uvolnění tlačítek na různé akce jako zapnutí/vypnutí led nebo zvýšení/snížení jasu.

Na závěr jsem pak na 3D tiskárně vytiskl minimalistický rámeček k vypínači a přišrouboval jej na zeď u hlavy mezi postele. Takto jsou vypínače snadno dostupné pro oba spáče. Veškerá elektronika je přikurtovaná v krabičce zespodu postele.

A to jsou všechny dílky skládačky. Výsledek je dvojitá lampa nad postelí s funkcí stmívání a hlasovým voládáním. Uff, tolik textu pro takový mini projekt... 🙂

Další obrázky