Tutorial: ESP8266/ESP32 Addon (Wifi LED Controller UDP)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Logging bitte auf Verbose oder Debug

  • Tutorial: ESP8266/ESP32 Addon (Wifi LED Controller UDP)? Schau mal ob du hier fündig wirst!

  • Logging bitte auf Verbose oder Debug

    as i added in my first post:

    after a while in my hyperion.log i get:

    ssh in: PROTOCONNECTION INFO: No connection to Hyperion: 127.0.0.1:19445


    I: Start logging

    I: CFG=Static config loaded

    D: Chipset=Clockless, dataPin=5, clockPin=NONE, colorOrder=10, ledCount=16

    I: Reset Mode

    I: Mode changed to 4

    D: Interval set to 16ms

    D: WrapperWiFi(ssid="myssid", password="mypasswd")

    I: Connecting to WiFi myssid

    I: Using static ip

    I: Connected successfully, IP address: 192.168.0.55

    I: Prepare OTA

    D: WrapperOTA(hostname="ESP8266")

    I: OTA Ready

    I: Open port 19446 for UDP...

    I: success

    I: Open port 19444 for TCP...

    I: HEAP=43272

    D: HEAP=43376

    D: HEAP=43376

    D: HEAP=43376

  • Ist kein Problem mit dem ESP8266, dort kommen keine Daten an, so wie es scheint.

    Hyperion wird wohl falsch konfiguriert sein.

    Nutze bitte die Standardkonfiguration und tausche einfach das Zielgerät so aus, wie du es hier gepostet hast.

  • aber das habe ich gemacht :(

    sind denn die Ports für Json und Proto in der standard kofiguration richtig?

    // JSON SERVER CONFIG

    "jsonServer" :

    {

    "port" : 19444

    },

    // PROTO SERVER CONFIG

    "protoServer" :

    {

    "port" : 19445

    },

  • Proto / Json Server brauchst du nicht, wenn du keine 2 Hyperion Instanzen hast. Das dient dazu das Video von der 1. Instanz zur 2. weiterzuleiten. Aber du hast ja nur eine Instanz.

  • Proto / Json Server brauchst du nicht, wenn du keine 2 Hyperion Instanzen hast. Das dient dazu das Video von der 1. Instanz zur 2. weiterzuleiten. Aber du hast ja nur eine Instanz.

    die kann dann aber dennoch per wlan angesteuert werden? Oder muss die erste instanz via usb verbunden sein?

  • die kann dann aber dennoch per wlan angesteuert werden? Oder muss die erste instanz via usb verbunden sein?

    Du verwechselst da gerade etwas.

    Normalerweise hast du auf dem Raspberry Pi eine Hyperioninstanz, die das Video vom Grabber für die per Kabel am Raspbi angeschlossenen LEDs umwandelt.

    Meine Beispielkonfiguration setzt darauf eine 2. Hyperioninstanz auf dem Raspbi zu installieren und die Bilddaten von der 1. Instanz zu holen und dann per WLAN die Daten an den ESP8266 zu schicken.

    Du möchtest aber eher die erste Variante per WLAN. Von daher musst du dort einfach nur den ESP8266 (udp) als Zielgerät einstellen wie du das gemacht hast.

  • Du verwechselst da gerade etwas.

    Normalerweise hast du auf dem Raspberry Pi eine Hyperioninstanz, die das Video vom Grabber für die per Kabel am Raspbi angeschlossenen LEDs umwandelt.

    Meine Beispielkonfiguration setzt darauf eine 2. Hyperioninstanz auf dem Raspbi zu installieren und die Bilddaten von der 1. Instanz zu holen und dann per WLAN die Daten an den ESP8266 zu schicken.

    Du möchtest aber eher die erste Variante per WLAN. Von daher musst du dort einfach nur den ESP8266 (udp) als Zielgerät einstellen wie du das gemacht hast.

    hm, okay. Danke

  • okay, scheint nun zumindest zu laufen.

    im Serial Monitor des NodeMCU kommt nun:

    D: UDP-Packet size expected=48, actual=60

    D: UDP-Packet received, length: 60

    ist das trotz der zu großen pakete dennoch okay?

    hills8

  • Jetzt ist es sauber, nur die Anzahl der LEDs nicht. Hyperion muss da = ESP8266 sein

  • Ich selbst nutze es beispielsweise im Schlafzimmer um unter dem Bett auch Ambilight zu haben. Ist der ESP8266 mit der Software angebunden kannst du Ihn wie alle anderen LEDs ansteuern oder alternativ ohne Raspberry einfach als Beleuchtung verwenden

    Hi dazu brauche ich kein Hyperion. MC Lightning 2 macht es besser. Hat bessere Efekte.

    Mc Lightning 2

  • Hallo Scilor,

    vielen Dank für die Anleitung. Ich benutze deinen Code aktuell für die Ansteuerung von 8 WS2801 LED.

    Gibt es auch eine Möglichkeit, die LEDs unabhängig voneinander zu steuern?. Also vorab die LED auszuwählen (z.B. LED 6) und dann nur für diese eine Farbe mittels Hyperion zu vergeben und die anderen dabei unbeeinflusst zu lassen? Die anderen sollen entwendet im Effekt weiterlaufen, oder ebenfalls individuell verstellt werden.

    Wäre sowas lösbar über die "Effects", so dass für jede LED ein Effect vergeben wird, bei dem nur die einzelne angesprochen wird?

    Bin gespannt ob das umsetzbar ist.

    VG

  • in den todos steht

    Music visualizer / Bring back ArtNet Issue

    wenn das klappen sollte, würde es theoretisch gehen...

    Das ließe sich auch bei mir leicht umsetzen, Ich habe es mal als Issue aufgenommen: https://github.com/SciLor/ESP8266…oller/issues/32
    Wenn ich mal Zeit und Lust habe übernehme ich das mit, wenn des ESP32 bei mir sauber läuft

    Einfach ist das leider nicht umsetzbar. Passt nicht in das Einsatzkonzept von mir.

    Das wird am einfachsten gehen, wenn du pro LED einen eigenen ESP8266 nimmst, das wäre aber auch irgendwie doof.

    Alternativ könntest du es selbst in meine Software implementieren oder in Hyperion jeweils als Effekt.

  • Jede Led ein eigener ESP ist nicht schön. Vor allem muss man dann immer den server wechseln und die Effekte müssen uber verschiedene Server laufen. Kenne mich leider nicht besonders gut aus mit Hyperion. Habe bisher nur einen weiteren Effekt in deinem Code hinterlegt. Aber wie man mit einem Effekt nur eine LED freischaltet für den Farbkreis und die anderen im aktuellen Effekt weiterlaufen lässt übersteigt derzeit mein Wissen.

    Falls jemand eine gute Idee hat bin ich sehr dankbar. Habe leider nichts in der Richtung gefunden.

  • Jede Led ein eigener ESP ist nicht schön. Vor allem muss man dann immer den server wechseln und die Effekte müssen uber verschiedene Server laufen. Kenne mich leider nicht besonders gut aus mit Hyperion. Habe bisher nur einen weiteren Effekt in deinem Code hinterlegt. Aber wie man mit einem Effekt nur eine LED freischaltet für den Farbkreis und die anderen im aktuellen Effekt weiterlaufen lässt übersteigt derzeit mein Wissen.

    Falls jemand eine gute Idee hat bin ich sehr dankbar. Habe leider nichts in der Richtung gefunden.

    Ansatzpunkt wäre:

    BaseHeader.h

    1) Einen Effekt für jede LED als "Mode" hinzufügen

    WrapperJsonServer.cpp - readData( );

    1) Eigene Effekte im "serverinfo" Command anlegen, damit diese in der App bekannt sind.

    2) Im "effect" Command den passenden Mode über effectChange( ); aufrufen.

    HyperionRGB.ino - ledColorWipe( );

    Hier ruft das JSON-Modul bei Nutzung des des Farbrades der Hyperion App die Methode parametrisiert mit der Farbe aus.

    1) Verhindern, dass der changeMode(STATIC_COLOR) / fillSolid( ) ausgeführt wird, wenn du einen deinen neuen LED-Effekte drin hast.

    2) Die Farbe deiner anhand des Mode identifizierten LED setzen.

    Jetzt kannst du schon einmal jede LED über die Hyperion App einzeln setzen. Diese wären aber bei einem Effekt wieder weg.

    Im ersten Schritt könntest du die Farben für die einzelnen LEDs zwischenspeichern und dann immer nach dem Effekt wieder drüberlegen. Das könnte nun erst einmal flackern, weil die Effekte erst einmal gezeichnet werden würden. Dies kannst du verhindern, in dem du in der:

    WrapperLedControl.cpp - rainbowStep( ); / fire2012Step( );

    1) jeweils die show( ); Methode entfernen

    HyperionRGB.ino - animationStep( );

    1) ledStrip.show( ); - Methode am Ende einbauen, damit die Effekte erst dann gezeichnet werden

    2) Deine Zwischengespeicherten LEDs hier konkret wieder setzen.

    Jetzt kannst du beliebig viele LEDs einzeln setzen und über alle anderen einen Effekt laufen lassen.

    Leider fehlt mir die Zeit das zu implementieren. Versuche dich gerne dran und veröffentliche es über GitHub. Dann kann ich es ggbfs. integrieren.

  • Ich probier's noch Mal mit meiner Frage:

    Funktioniert alles wunderbar. Ich möchte gern, wenn das NodeMCU Strom bekommt, mit fester Farbe starten.

    Ich hab die Einstellung define CONFIG_LED_STANDARD_MODE in ConfigStatic.h auch gefunden.

    Nur: wie bzw. an welcher Stelle definiere ich diese "solid color"?

    Oder merkt sich der Node die letzte über Hyperion App eingestellte Farbe von selbst? - wohl kaum, denke ich.

    Ich bin für jeden Hinweis dankbar. :)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!