Was macht WLED bei Stripes besser als ESPhome

ich hatte das Thema hier schon mal angesprochen aber erstmal wieder an die Seite gelegt.

Also ein WLED auf einem ESP32 kann meine 145LEDs problemlos steuern mit dieser Hardware:

jetzt soll der ESP32 zusätzlich einen Temperatur-Sensor bedienen und das ist mit WLED nicht so einfach umsetzbar (ja es geht irgendwie mit individuellem Rumgefrickel)

aber ein ESPhome sollte es eigentlich genau so können, leider offensichtlich dann doch nicht.
zumindest nicht mit diesem flashcode

light:
  - platform: neopixelbus
    type: GRB
    variant: WS2812
    pin: GPIO16
    num_leds: 145
    name: "Sauna_LED"
    id: sauna_led
    method: esp32_rmt
    default_transition_length: 5s

der Stripe verhält sich völlig unkontrolliert, stellt wahllos Farben durcheinander dar und wechselt nach kurzer Zeit (10 Min.) auch einfach mal von rot auf grün oder irgend etwas anderes.

mögliche Fehlerquellen:

  1. der flashcode ist falsch
  2. der für ESPhome verwendete EPS32 ist defekt
  3. ich habe die falschen GPIO ausgewählt
  4. ESPhome kann das einfach nicht so gut wie WLED

also Ziel soll sein dieser 145LED lange Stripe mit einem ds18b20 Temperatursensor zusammen zu verwenden. Der Temp.-Sensor alleine hat am ESP32 kein Problem (GPIO4)

Bei eine WLED Stripe ist bei mir GPIO 18 konfiguriert (für den 2ten 17)

Ich nutze aber kein ESP32 ..sondern den fertigen Controller.

Hast du bei den Stripes nur 4 Leitungen? Ich hatte zeitweise Probleme mit dem Brücken der Datenleitungen

ein WS2812 Stripe hat 3 Leitungen

  • 5V
    GND
    Data

und Data ist wie gesagt auf GPIO16 (sowohl am ESPhome als auch am WLED)

Vermutlich wird ein Level Shifter notwendig sein.

kA, also WLED schafft es ohne das …
was genau meinst Du damit?

5V LED-Streifen sind für 5V Signale spezifiziert. 3,3V Eingangssignale liegen außerhalb der Spezifikation. Da es für die Signale Toleranzen gibt (z.B. 0-2,3V=Low-Signal und 2,8-5V=High-Signal) funktioniert die LED-Steuerung normalerweise mit 3,3V Steuersignalen recht gut.

Wenn jetzt aber die Signalspannung am LED-Streifen weiter sinkt, z.B. aufgrund schlechter Steckkontakte, zu dünner oder zu langer Leitungen etc., dann ist irgendwann der Punk erreicht, von dem ab die Steuerung nicht mehr richtig funktioniert und Chaos entsteht (einige LEDs gehen nicht an oder bleiben nach dem Ausschalten eingeschaltet, falsche Farben etc…).

Es gibt relativ günstige Bauteile „Levelshifter“ (ich glaube ich habe bei Ali beim letztem Kauf 2,5 Euro für 10 Levelshifter bezahlt), die 3,3V Signale auf 5V hochziehen. Damit reduziert man das Problem des Steuerspannungsabfalls (oder halt Kabel und Stecker verbessern).

ok, dann ist es ein Hardwareproblem

gibt es irgendwo eine Skizze, wie ich das einbauen müsste?

aber immer noch die Frage:
wie kann es WLED mit derselben Hardware (ohne Levelshifter) richtig machen?

EDIT:
also es gibt offensichtlich einen usermod zu WLED für genau diese Anwendung.
Hat da evtl. jemand Erfahrung, wie ich so etwas flashe?
Habe bisher immer nur die ganz normale Version über den WLED Webinstaller geflasht

Manchmal wird man durch die Hardware in die Irre geführt, weil sich beim Rumhantieren ein Steckkontakt löst oder ein Kabel bricht. Wenn es beim Zurückwechseln immer noch mit WLED funktioniert, dann liegt es wohl eher an der Software. Mit ein wenig Probieren und der Online‑Hilfe sollte das aber zu schaffen sein. Ich kann definitiv bestätigen, dass man an einen ESP32 diverse Sensoren erfolgreich parallel zu einem LED‑Streifen anschließen kann.
Es existieren verschiedene Softwarevarianten, die sich für unterschiedliche Frameworks und ESPs etwas unterscheiden.
Neben der ESP-Variante hängt der Code z.B. vom Framework „arduino“ oder „esp-idf“ und der Platform „esp32_rmt_led_strip“, „neopixelbus“ oder „fastled_clockless“ ab.

Funktionierendes Beispiel von mir mit D1 Mini - ESP 8266:

esphome:
  name: kuechenstation
  friendly_name: kuechenstation
esp8266:
  board: d1_mini
light:
  - platform: neopixelbus
    #RGB, RBG, GBR, BGR, BRG, RGB
    type: GRBW
    variant: sk6812
    #type: GRB
    #variant: WS2812X
    #pin: D4, GPIO2 -für ESP8266 empfohlen
    pin: GPIO2
    num_leds: 60
    name: "Neopixel_WS2812B_60_Kueche"
    id: kueche_60_leds
    gamma_correct: 1.0

#******************* Start of light effects ********************************************
    effects:
      - flicker:
          name: Flicker Stronger
          alpha: 85%
          intensity: 6.5%  
      - addressable_rainbow:
      - addressable_rainbow:
          name: Fast Rainbow Effect With Custom Values
          speed: 60
          width: 60
      - addressable_fireworks:
          name: Fireworks Effect With Custom Values
          update_interval: 32ms
          spark_probability: 15%
          use_random_color: true
          fade_out_rate: 120
      - pulse:
          name: "Fast Pulse"
          transition_length: 0.1s
          update_interval: 0.2s
          min_brightness: 0%
          max_brightness: 90% 

Funktionierendes Beispiel von mir mit ESP32-S3-N16R8:

esphome:
  name: sz-station
esp32:
  board: esp32-s3-devkitc-1
  cpu_frequency: 240MHz
  variant: esp32s3
  flash_size: 16MB
  framework:
    type: esp-idf
    version: recommended
light:
  - platform: esp32_rmt_led_strip
    id: sz_leds_external
    pin: GPIO20
    chipset: WS2812
    use_psram: True
    max_refresh_rate: 15ms
    num_leds: 90
    rgb_order: GRB
    is_wrgb: False 
    rmt_symbols: 96
    default_transition_length: 0ms
    #gamma_correct: 1.0
    #power_supply: sz_led_power    #The Power Supply Component to connect to this light. When the light is turned on, the power supply will automatically be switched on too.

    effects:
      - flicker:
          name: Flicker Stronger
          alpha: 85%
          intensity: 6.5%  
      - addressable_rainbow:
      - addressable_rainbow:
          name: Rainbow Effect With Custom Values
          speed: 10
          width: 60
      - addressable_rainbow:
          name: Fast Rainbow Effect With Custom Values
          speed: 60
          width: 60
      - addressable_fireworks:
          name: Fireworks Effect With Custom Values
          update_interval: 32ms
          spark_probability: 15%
          use_random_color: true
          fade_out_rate: 120
      - pulse:
          name: "Fast Pulse"
          transition_length: 0.1s
          update_interval: 0.2s
          min_brightness: 0%
          max_brightness: 50% 

Beispiel aus dem Internet (nicht von mir und ungetestet, möglicherweise alt) für eine ESP32-C3:

esphome:
  name: table-lamp
  friendly_name: table_lamp
esp32:
  board: esp32-c3-devkitm-1
  variant: esp32c3
  framework:
    type: arduino
light:
  - platform: neopixelbus
    num_leds: 7
    type: GRB
    variant: ws2812x
    id: table_lamp
    pin: GPIO10
    effects:
      - addressable_flicker: 
      - addressable_twinkle: 
      - pulse: 
      - flicker:  

Beispiel aus dem Internet für eine standard ESP32 (nicht von mir und ungetestet):

esphome:
  name: koffiecorner-ledstrip
  friendly_name: Koffiecorner LEDstrip
esp32:
  board: esp32dev
  framework:
    type: arduino
light:
  - platform: neopixelbus
    variant: WS2812X
    pin: GPIO2
    num_leds: 32
    type: GRB
    name: "Koffiecorner LEDstrip"
    id: Koffiecorner_ledstrip
    effects: 

Der 470 Ohm Widerstand ist ein Schutzwiderstand für die erste LED im Streifen (unter bestimmten Bedingungen, wenn z.B. ESP und LED von unterschiedlichen Netzteilen versorgt werden, dann kan das bei unterschiedliche Einschaltzeitpunkten zur Zerstörung der ersten LED führen). Viele lassen ihn weg. Ich muste ihn bei meinen Schaltungen bis auf 90 Ohm reduzieren damit die Steuerung richtig funktioniert.

Der Kondensator sorgt für eine Stabilisierung der Versorgung. Bei plötzlichen Helligkeitsschwankungen aufgrund von Lichteffekten kann es zu so großen Versorgungsschwankungen kommen, das der ESP temporär abstürzt…

:crayon:by HarryP: Post formatiert

@LutzHB
besten Dank, ja einen Widerstand habe ich auch in meiner Schaltung, den Kondensator bisher nicht.
Aber sollte man einen langen Streifen (hier 3 m) nicht an beiden Enden mit 5V und GND versorgen? Habe ich mal irgendwo gelesen.

Könntest ja mal den Widerstand zwischen den beiden Enden messen. Und wenn Du dann noch den max. Strom kennst kannst Du ja den Spannungsabfall ausrechnen und schauen ab der Relevant ist.

ist mir zu mühsam, habe die Installation ja schon vorgenommen und es funktioniert inzwischen
und zwar ohne irgendwelche Zusatz-Komponenten (Levelschifter) etc. mit
einem Usermod zu WLED

wie steht jetzt alles hier …

Das mit der Einspeisung siehst du leicht selber. Wenn du einen 3m langen 5V LED-Streifen auf den Boden legst und maximal auf weiß aufdrehst, dann wird er nach hinten immer gelber, weil die Versorgungsspannung auf der Strecke zu sehr abfällt. Das hängt natürlich von der Anzahl der LEDs ab. Mehr LEDs pro Meter, dann schneller gelber.

Ich hatte mal eine 5m Rolle und das ausprobiert. Soweit ich mich erinnern kann fing die Verfärbung irgendwo zwischen ein und zwei Metern an bei 60 LEDs pro Meter, genau kann ich mich aber nicht erinnern. Für meine 1m langen Meldungsstationsstreifen ist eine einseitige Einspeisung kein Problem. Bei 3m würde ich auf jeden Fall von vorne und hinten einspeisen.

Wenn du nur einfarbiges oder buntes Licht Licht verwendest, dann wird der Effekt möglicherweise kaum auffallen.

genau so ist es zumal ich in der Sauna eh kein grelles weiss haben will sondern eher ein dezentes lila oder orange …
ausserdem speise ich ja von beiden Seiten ein …

Wenn du nur eine Farbe verwendest, nicht auf 100% und nicht schlagartig einschaltest (also schlagartig auf 100%), dann wirst du den Kondensator nicht benötigen. Er reduziert nur die Anzahl der Abstürze/Störungen, wenn man wilde Lichteffekte einsetzt.

danke für die Erklärung

ist in der Sauna nicht so angesagt, da will man ja eher chillen (= auf dt. ENTSPANNEN)