Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. ESPhome Licht Effekte mit ws2812

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ESPhome Licht Effekte mit ws2812

    This topic has been deleted. Only users with topic management privileges can see it.
    • X
      xdelta last edited by xdelta

      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?

      X 1 Reply Last reply Reply Quote 0
      • X
        xdelta @xdelta last edited by xdelta

        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")

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        859
        Online

        31.7k
        Users

        79.7k
        Topics

        1.3m
        Posts

        1
        2
        525
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo