NEWS
ESPhome Licht Effekte mit ws2812
-
Hi,
ich steuere mit ESPhome ein Waveshare E-Ink Display, welches mir beim Verlassen des Hauses 4 Zustände (Licht an, Verschluss usw..) anzeigt. Dies habe ich nun um 3 WS2812 LEDs erweitert, praktisch als Beleuchtung für das Display.... Womit auch direkt die nächsten Ideen geboren sind: Lichteffekte bei bestimmten Zuständen... Und genau hier habe ich ein Verständnisproblem, befürchte ich. Effekte einzubinden ist nicht das Problem, aber sie müssen manuell ausgewählt werden, so steht es auch im ESPh Manual " entries for the effects dropdown in Home Assistant ".Wie kann ich eigene Lichteffekte in Lambda aufrufen?
Oder, wie kann ich eigene Effekte in Lambda erstellen?So sieht meine .yaml aus:
esphome: name: display-waveshare friendly_name: Waveshare Display 2.9inch esp32: board: esp32dev framework: type: arduino spi: clk_pin: 18 mosi_pin: 5 external_components: - source: type: git url: https://github.com/velaar/esphome ref: dev components: [ waveshare_epaper, display] # Enable logging logger: # Enable API api: password: "1234" ota: web_server: port: 80 wifi: ssid: !secret wifi_ssid password: !secret wifi_password manual_ip: static_ip: 192.168.3.xxx gateway: 192.168.3.1 subnet: 255.255.255.0 # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Waveshare-Display-2.9inch" password: "9Byyf" time: - platform: sntp id: sntp_time mqtt: broker: 192.168.3.xx port: 1883 username: !secret mqtt_user password: !secret mqtt_password captive_portal: font: - file: "fonts/arial.ttf" id: arial_18 size: 18 - file: "fonts/materialdesignicons-webfont.ttf" id: mdi_60 size: 70 glyphs: - "\U000F1A4E" # Glühbirne AN - "\U000F0E4F" # Glühbirne AUS - "\U000F081C" # Tür AUF - "\U000F10AF" # Tür ZU - "\U000F0ECC" # Verschluss ALARM - "\U000F0565" # Verschluss OK - file: "fonts/materialdesignicons-webfont.ttf" id: mdi_80 size: 96 glyphs: - "\U000F06DA" # Garage AUF - "\U000F06D9" # Garage ZU - file: "fonts/materialdesignicons-webfont.ttf" id: mdi_75 size: 84 glyphs: - "\U000F0012" # Anwesenheit false - "\U000F0004" # Anwesenheit true text_sensor: - platform: mqtt_subscribe name: "Licht" id: licht topic: scene/0/Licht_OFF - platform: mqtt_subscribe name: "Verschluss" id: verschluss topic: scene/0/Verschluss_Check - platform: mqtt_subscribe name: "Garage EG" id: garage_eg topic: hm-rpc/1/MEQ0364057/1/STATE - platform: mqtt_subscribe name: "Anwesenheit" id: anwesenheit topic: scene/0/Anwesenheit light: - platform: esp32_rmt_led_strip id: light_1 rgb_order: GRB pin: GPIO13 num_leds: 3 rmt_channel: 0 chipset: ws2812 name: "LED Beleuchtung" restore_mode: ALWAYS_ON effects: - strobe: - strobe: name: Farb-Strobo colors: - state: true brightness: 100% red: 100% green: 0% blue: 0% white: 0% duration: 500ms - state: true brightness: 100% red: 0% green: 0% blue: 100% white: 0% duration: 500ms display: - platform: waveshare_epaper model: 2.90inv2 rotation: 90° id: epaper cs_pin: 19 dc_pin: 21 busy_pin: 22 reset_pin: 23 reset_duration: 200ms update_interval: 2s full_update_every: 200 lambda: |- id(light_1).turn_on().set_brightness(0.6).perform(); // Licht if (id(licht).state == "true") { it.print(32, 25, id(mdi_60), TextAlign::TOP_CENTER, "\U000F0E4F"); // it.print(33, 80, id(arial_18), TextAlign::TOP_CENTER, "AUS"); id(light_1).turn_on().set_brightness(0.6).set_rgb(1.0, 1.0, 1.0).perform(); }; if (id(licht).state == "false") { it.print(32, 23, id(mdi_60), TextAlign::TOP_CENTER, "\U000F1A4E"); id(light_1).turn_on().set_brightness(0.6).set_rgb(0.5, 0.25, 1.0).perform(); }; // Verschluss if ( id(verschluss).state == "true" || id(verschluss).state == "uncertain" ) { it.print(110, 25, id(mdi_60), TextAlign::TOP_CENTER, "\U000F0ECC"); }; if (id(verschluss).state == "false") { it.print(110, 25, id(mdi_60), TextAlign::TOP_CENTER, "\U000F0565"); }; // Garage EG if (id(garage_eg).state == "true") { it.print(187, 10, id(mdi_80), TextAlign::TOP_CENTER, "\U000F06DA"); }; if (id(garage_eg).state == "false") { it.print(187, 10, id(mdi_80), TextAlign::TOP_CENTER, "\U000F06D9"); }; // Anwesenheit if (id(anwesenheit).state == "true") { it.print(265, 20, id(mdi_75), TextAlign::TOP_CENTER, "\U000F0004"); }; if (id(anwesenheit).state == "false") { it.print(265, 20, id(mdi_75), TextAlign::TOP_CENTER, "\U000F0012"); };
Prinipiell können ja verschiedene Lichtparameter in Lambda z.B. so definiert werden:
id(light_1).turn_on().set_brightness(0.6).set_rgb(0.5, 0.25, 1.0).perform();
Aber eben keine Effekt Parameter, oder?
-
Dann antwworte ich mir mal selber und denen, die ggfl. selbst mal vor dem Problem stehen. So steht es übrigens auch in der Doku...
Die Effekte werden in Lambda mit ihrem Namen aufgerufen (nicht der ID):
auto call = id(light_1).turn_on(); call.set_effect("Farb-Strobo"); call.perform();
oder die Kurzform:
id(light_1).turn_on().set_effect("Farb-Strobo").perform();
set_effect("Name des Effects")
und zum deaktivieren:
set_effect("none")