Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Microcontroller
  5. ESPhome Licht Effekte mit ws2812

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

ESPhome Licht Effekte mit ws2812

Geplant Angeheftet Gesperrt Verschoben Microcontroller
2 Beiträge 1 Kommentatoren 680 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • X Offline
    X Offline
    xdelta
    schrieb am zuletzt editiert von xdelta
    #1

    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 Antwort Letzte Antwort
    0
    • X 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 Offline
      X Offline
      xdelta
      schrieb am zuletzt editiert von xdelta
      #2

      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 Antwort Letzte Antwort
      0
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      827

      Online

      32.4k

      Benutzer

      81.5k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe