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

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

  • Hallo,

    ich wollte mich jetzt endlich auch mal an mein erstes DIY-Ambilight machen und fand die Idee das Ganze per WLAN und einen ESP8266 zu realisieren sehr spannend. Als Hardware nutze ich ein NodeMCU und 255 St. WS2812B am Pin D5. Allerdings scheitert es bei mir schon beim kompilieren (Arduino 1.8.9 unter Win10), egal ob Developer oder Master, ebenfalls egal ob ich meine editierte ConfigStatic.h nutze oder diese unverändert lasse.

    Problem ist wohl die Bibliothek ArduinoJson version 6, da das Ganze vermutlich auf der Version 5 basiert und sich hier die Syntax o. ä. geändert hat.

    Fehlermeldung "ArduinoJson" (gekürzt)

    StaticJsonBuffer is a class from ArduinoJson 5. Please see http://arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6

    Wenn ich jetzt statt der Version 6 die Version 5.13.5 in der Bibliotheksverwaltung einstelle, erhalte ich stattdessen folgende Fehlermeldung;

    Fehlermeldung "Kompilieren NodeMCU" (gekürzt)

    In file included from C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.h:6:0,

    from C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.cpp:1:

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.001

    # pragma message "FastLED version 3.003.001"

    ^

    In file included from C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/FastLED.h:65:0,

    from C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.h:6,

    from C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.cpp:1:

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastspi.h:130:23: note: #pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output

    # pragma message "No hardware SPI pins defined. All SPI access will default to bitbanged output"

    ^

    In file included from C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/FastLED.h:44:0,

    from C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.h:6,

    from C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.cpp:1:

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) substituting 'template<int CYCLES> void delaycycles() [with int CYCLES = 1073740926]'

    FL_NOP; delaycycles<CYCLES-1>();

    ^

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: recursively required from 'void delaycycles() [with int CYCLES = 1073741822]'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: required from 'void delaycycles() [with int CYCLES = 1073741823]'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastspi_bitbang.h:177:52: required from 'static void AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::writeBit(uint8_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_ptr_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_ptr_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_t) [with unsigned char BIT = 0u; unsigned char DATA_PIN = 5u; unsigned char CLOCK_PIN = 4u; unsigned int SPI_SPEED = 5u; uint8_t = unsigned char; AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_ptr_t = volatile unsigned int*; AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_ptr_t = volatile unsigned int*; AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_t = unsigned int; AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_t = unsigned int]'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastspi_bitbang.h:345:14: required from 'void AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::writePixels(PixelController<RGB_ORDER>) [with unsigned char FLAGS = 128u; D = DATA_NOP; EOrder RGB_ORDER = (EOrder)10u; unsigned char DATA_PIN = 5u; unsigned char CLOCK_PIN = 4u; unsigned int SPI_SPEED = 5u]'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/chipsets.h:426:3: required from 'void SM16716Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED>::showPixels(PixelController<RGB_ORDER>&) [with unsigned char DATA_PIN = 5u; unsigned char CLOCK_PIN = 4u; EOrder RGB_ORDER = (EOrder)10u; unsigned int SPI_SPEED = 5u]'

    C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.cpp:124:1: required from here


    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: error: no matching function for call to 'delaycycles()'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: note: candidate is:

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:99:65: note: template<int CYCLES> void delaycycles()

    template<int CYCLES> __attribute__((always_inline)) inline void delaycycles() {

    ^

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:99:65: note: substitution of deduced template arguments resulted in errors seen above

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) substituting 'template<int CYCLES> void delaycycles() [with int CYCLES = 2147482749]'

    FL_NOP; delaycycles<CYCLES-1>();

    ^

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: recursively required from 'void delaycycles() [with int CYCLES = 2147483645]'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: required from 'void delaycycles() [with int CYCLES = 2147483646]'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastspi_bitbang.h:176:52: required from 'static void AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::writeBit(uint8_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_ptr_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_ptr_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_t, AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_t) [with unsigned char BIT = 0u; unsigned char DATA_PIN = 5u; unsigned char CLOCK_PIN = 4u; unsigned int SPI_SPEED = 3u; uint8_t = unsigned char; AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_ptr_t = volatile unsigned int*; AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_ptr_t = volatile unsigned int*; AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::data_t = unsigned int; AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::clock_t = unsigned int]'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastspi_bitbang.h:345:14: required from 'void AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::writePixels(PixelController<RGB_ORDER>) [with unsigned char FLAGS = 0u; D = DATA_NOP; EOrder RGB_ORDER = (EOrder)10u; unsigned char DATA_PIN = 5u; unsigned char CLOCK_PIN = 4u; unsigned int SPI_SPEED = 3u]'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/chipsets.h:138:3: required from 'void WS2801Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED>::showPixels(PixelController<RGB_ORDER>&) [with unsigned char DATA_PIN = 5u; unsigned char CLOCK_PIN = 4u; EOrder RGB_ORDER = (EOrder)10u; unsigned int SPI_SPEED = 3u]'

    C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.cpp:124:1: required from here


    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: error: no matching function for call to 'delaycycles()'

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:101:32: note: candidate is:

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:99:65: note: template<int CYCLES> void delaycycles()

    template<int CYCLES> __attribute__((always_inline)) inline void delaycycles() {

    ^

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastled_delay.h:99:65: note: substitution of deduced template arguments resulted in errors seen above

    In file included from C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.h:6:0,

    from C:\Users\Martin\Documents\Arduino\Hyperion_LED-Controller-master\HyperionRGB\HyperionRGB.ino:12:

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.001

    # pragma message "FastLED version 3.003.001"

    ^

    In file included from C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/FastLED.h:65:0,

    from C:\Users\Martin\AppData\Local\Temp\arduino_build_995497\sketch\WrapperLedControl.h:6,

    from C:\Users\Martin\Documents\Arduino\Hyperion_LED-Controller-master\HyperionRGB\HyperionRGB.ino:12:

    C:\Users\Martin\Documents\Arduino\libraries\arduino_191711/fastspi.h:130:23: note: #pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output

    # pragma message "No hardware SPI pins defined. All SPI access will default to bitbanged output"

    ^

    Bibliothek ArduinoThread in Version 2.1.1 im Ordner: C:\Users\Martin\Documents\Arduino\libraries\ArduinoThread wird verwendet

    Bibliothek Arduino-logging-library-master im Ordner: C:\Users\Martin\Documents\Arduino\libraries\Arduino-logging-library-master (legacy) wird verwendet

    Bibliothek EEPROM in Version 1.0 im Ordner: C:\Users\Martin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\EEPROM wird verwendet

    Bibliothek ESP8266WiFi in Version 1.0 im Ordner: C:\Users\Martin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WiFi wird verwendet

    Bibliothek ESP8266mDNS in Version 1.2 im Ordner: C:\Users\Martin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266mDNS wird verwendet

    Bibliothek ArduinoOTA in Version 1.0 im Ordner: C:\Users\Martin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ArduinoOTA wird verwendet

    Bibliothek arduino_191711 in Version 3.3.1 im Ordner: C:\Users\Martin\Documents\Arduino\libraries\arduino_191711 wird verwendet

    Bibliothek ArduinoJson in Version 5.13.5 im Ordner: C:\Users\Martin\Documents\Arduino\libraries\ArduinoJson wird verwendet

    Bibliothek ESP8266WebServer in Version 1.0 im Ordner: C:\Users\Martin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WebServer wird verwendet

    Bibliothek LinkedList in Version 1.2.3 im Ordner: C:\Users\Martin\Documents\Arduino\libraries\LinkedList wird verwendet

    exit status 1

    Fehler beim Kompilieren für das Board NodeMCU 0.9 (ESP-12 Module).

    Der Beispielsketch "Blink" aus der FastLED Bibliothek läuft ohne Fehler durch.

    Ich bin jetzt wirklich ratlos. :conf: Ich hoffe jemand hat noch eine Idee...

  • Okay, kompilieren hat jetzt doch noch funktioniert - ich habe folgende Bibliotheksversionen verwendet:

    ArduinoThread 2.1.1
    ArduinoJSON 5.12.0
    LinkedList 1.2.3
    FastLED 3.3.1

    Ausserdem habe ich noch in der configstatic.h den Wert bei "#define CONFIG_LED_DATAPIN" von "D5" auf "5" geaendert.

  • Hallo ,

    bei mir funktioniert das Ambilight bei TV hervorragend. Auf dem ESP8266 mit LEDS werden Farben und der gewählte Bereich richtig dargestellt.

    Wenn ich beim Hauptprozess hyperond eine Animation auswähle, wird diese am Fernseher richtig abgespielt, jedoch nicht auf dem zugehörigem ESP8266-Leds. Auf dem RP3 laufen zwei Hyperion-Daemon.

    Geht es überhaupt, dass die Animation oder auch eine feste Hintergrundfarbe an den ESP weitergereicht wird?

    Ich habe ein Demo-Video gesehen, da wurde die Nightrider-Animation auch vom ESP-Leds synchron ausgegeben.

    Danke

    Michael

    P.S.: Mit Hyperion.ng funktioniert es.

    Einmal editiert, zuletzt von Sputnik11 (21. Oktober 2019 um 09:53) aus folgendem Grund: Neue Erkenntnis

  • Hallo,

    ich wollte gerne meinen Hyperion auf dem pi mit einem esp8826 verbinden.

    Ich nutze den pi ganz normal und füge da nur die IP und die Ports von dem esp8826 für die json pronto Weiterleitung hinzu.

    Auf dem esp8826 brauch ich dann quasi so einen Sketch und verbinde die 3 Kabel zu den LEDs hnd Ground.

    Jetzt sollte der pi die Signale zum esp8826 schicken und der steuert die LEDs an.

    Ist das bis jetzt alles soweit korrekt?

    Hab bis jetzt noch nie mit einem esp8826 gearbeitet. Wahrscheinlich ist das ja aber ein wenig ähnlich zu Flaschen wie bei einem sonoff mit tasmota oder?

  • Hi Scilor,

    ich wüsste gerne ob der NodeMuc auch über USB mit Hyperion kommunizieren kann?

    Hintergrund ist, das nun endlich mehrere Lichter in meiner Wohnung steuern möchte und dafür gerne eine einheitliche Plattform hätte.

    Einige von den Lichtern stehen in unmittelbarer Nähe des RPIs und da wäre es ja etwas ungeschickt die Daten durch die Luft zusenden, wenn das Kabel sowieso schon verlegt ist.

    LG

    BooStar

  • Das ist nicht vorgesehen.

    Ich würde es persönlich auch vermeiden die LEDs mit dem Raspberry zu verbinden. Ich hatte dadurch einen Überspannungsschaden, der LEDs, Raspberry und den AVR gegrillt hatte.

  • Hi,

    erstmal vielen Dank für deine Arbeit. Ich habe erfolgreich mein ambilight mit nem wemos D1 deinem sketch und derzeit angesteuert per enigmalight umgesetzt, bzw testweise aufgebaut.

    Nun möchte ich das maximale rausholen bevor ich das endgültig hinter den TV verbaue. D.h. die Ansteuerung ist erstmal egal da man sie dank der flexiblen Installation per esp ja eh einfach tauschen kann, aber eben die LEDs (und vllt das Netzteil) sollten das best mögliche sein.

    Getestet habe ich mit einem ws2812b mit 60 led/m ein 5 m Band auf 5V basis. Umgesetzt wird an nem 65" etwa 3,50m. Das Ergebnis ist wie gesagt schon super aber vielleicht geht da ja doch noch was. Vor allem würde mich interessieren ob ich ein sk6812 RGBWW band nehmen kann? Bzw. ob es etwas gibt das hier dagegen spricht/es etwas noch besseres gibt/es überhaupt besser ist?

    Ein paar mal habe ich auch gelesen das ein apa102 besser sein soll, aber eine 100% Aussage hierzu konnte ich leider auch nicht finden.

    Preis ist egal, ich denke aber ich werde bei einem 60 LED/m band bleiben - weniger auf keinen Fall, mehr auch eher nicht außer alle sagen jetzt nimm unbedingt ein 144/m Band.
    Netzteil dachte ich an nen typisches meanwell lpv-100-5 mit 60Watt 5V für wemos und Band gleichzeitig?

    Für weiteren "Vorinstallations Input" bin ich natürlich auch gerne offen ich mache immer lieber mehr als das ich am ende ein Problem bekomme.


    Vielen Dank & nochmals größten Respekt vor deiner Arbeit weiter so.

  • Hi,

    kann mir hier wirklich keiner ein Tipp geben? Das Aussehen der LEDs mag ja eine subjective Bewertung sein, aber zumindest die Basis Info ob ich den überhaupt ein sk6812 RGBWW Band auf ca 3,5 m länge´mit 60led/m und dem hyperionclient auf einem wemos/nodemcu zum laufen kriegen kann würde ich gerne von hier bekommen.


    Vielen Dank

  • Hallo,

    ich habe gerade versucht an mein Hyperion auf dem Raspi einen ESP8266 anzubinden. Hat soweit auch alles geklappt. Arduino Sketch ließ sich Problemlos hochladen. Jetzt hab ich allerdings einen Hänger bei erstellen der hyperion.config.json wie müssen die genau aussehen??? Die zweite Instanz im ersten Beitrag und auf dem Github ist doch sicher nur ein Auszug, oder?

    Kann mir mal jemand ein Beispiel für die beiden Instanzen zukommen lassen?

    Hab die zweite Instanz so wie im ersten Beitrag hochgeladen (name und output habe ich angepasst), aber aus dem esp scheint nichts anzukommen!

    Danke schon mal im Vorraus!

  • Ich versuche gerade meinem ESP8266 zu flashen. Nach der Anleitung haben ich meine Config wie folgt angepasst und hochgeladen:

    Wie komme ich den per Wlan auf den ESP? Irgendwie stehe ich aufm Schlauch. Ziel ist es, die WLED in Hyperion NG einzubinden.

    • Offizieller Beitrag

    So wie das in Deinem Codeblock steht? Was ist mit

    // put your setup code here, to run once:

    und

    // put your main code here, to run repeatedly:

    ? Ist das bei Dir auch leer, also nur ein Kommentar? :conf: Dann passiert natürlich nichts.

  • Also muss es so eingetragen werden?

  • Moin MikeG93,

    Was du da machst ist der totale Blödsinn.

    Nur mal so als Frage, hast du dich schon mal mit einem ESP8266 auseinander gesetzt?

    Was willst du machen und hast du irgendeinen Code, denn du kopieren willst.

    73 de Bernd

    ps.: Mach doch einfach einen neuen Anfrage auf und schildere dein Problem. Das ist besser als sich an so einen altem Thema anzu hängen.

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (23. Januar 2021 um 02:15) aus folgendem Grund: Büschen erweitert

  • Nein. Ich setzte mich heute das erste mal damit auseinander.

    Habe jetzt die Hyperion_LED-Controller-master heruntergeladen. Ich glaube wir kommen der Sache schon näher.

    Folgende Log erhalte ich im Monitor:

    Wo gebe ich denn meine WLAN-Daten ein? Ich habe die in der ConfigStatic.h. jedoch verbindet es nicht. Es kommt immer "Connection Failed"

    Code
    WiFi Connection Failed! Rebooting...

    2 Mal editiert, zuletzt von MikeG33 (23. Januar 2021 um 03:13)

  • Hallo,

    erst mal ein sehr gutes Projekt!

    Ich habe versucht das auf den NodeMCU8266, leider bekomme ich eine Fehlermeldungen in folgender Datei: "BaseHeader.h"

    Meine Einstellung:

    Board: NodeMCU0.9(ESP32-12 Modul)

    #define min(a,b) ((a)<(b)?(a):(b))

    dort erhalte ich folgende Fehlermeldung:

    " expected unqualified-id before '(' token"

    Ich habe keine Ahnung mehr, vielleicht kann mir da jemand helfen, hat jemand das Projekt schon mal auf einen ESP32 geflasht zu bekommen ?

Jetzt mitmachen!

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