Lokale LED-Band Steuerung

  • Hi,

    für meine Band suche ich eine Lösung mehrere LED Bänder Wireless über einen RPI zu steuern.

    Meine Idee war Home Assistant auf einen RPI zu installieren, hierrüber den RPI parallel als Router zu nutzen, an den sich die LED Bänder, welche mit einem ESP8266 verbunden sind, verbinden.

    Würde so etwas klappen?

    Mit Optimalfall wäre es dann Möglich mit einer Automatisierung verschiedene Abläufe abzuspielen.

    Grüße

    Nun, wir alle fürchten böse Menschen. Aber das Böse hat viele Gesichter und eins davon ist für mich das fürchterlichste; und das ist die Gleichgültigkeit guter Menschen.

  • Das Band für die Band ist etwas verwirrend... ich nehme an, es geht um eine "Lichtshow" für deine Musikkapelle?

    Ob Home Assistant dafür die richtige Lösung ist, weiß ich nicht, aber ich hätte das nicht als ersten Gedanken gehabt...

    Router ist wohl auch der falsche Ausdruck für den Pi als "Netzwerkzentrale". Du meinst wohl eher, dass er für die ESPs als Access Point dient?

    Prinzipiell ist das kein großes Problem.

    Pi als Access Point einrichten.

    Die ESPs brauchen eine Software, die die LED-Steuerdaten entgegennimmt und an die LED-Stripes schickt.

    Der Pi braucht ein Programm, das die "Show" steuert und die Daten jeweils an die ESPs schickt.

    Die beiden Softwareteile wirst du selbst stricken müssen. Vielleicht gibts für die Erstellung der Lichteffekte was von der Stange, aber zumindest die Übertragung an die ESPs wirst du wohl selbst programmieren müssen.

    Wenn du umfangreiche Lichtefefkte und vielleicht noch Synchronisierung mit der Musik haben willst, kann das aber ganz schön komplex werden...

    Ich denke nicht, dass es ohne tiefere Kenntnisse möglich ist, auf professionelle Lichtsteuerungen (DMX/KNX) aufzusetzen. So lange es also nur um ein paar LED-Stripes geht, ist es wahrscheinlich einfacher, wenn du dir was selbst programmierst.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Ok alles klar, aber wichtig ist vorallem dass das alles Offline laufen kann. Also wenn der PI als AP fungiert kann der den ESPs allen eine lokale IP zuweisen? Auch offline?

    Umfangreiche Lichteffekte und Synchronisation mit der Musik sind erstmal nicht notwendig. Es reicht wenn pro Song eine andere Farbe gesetzt werden kann (vorerst) und jemand über eine APP evtl. während dem Auftritt wechseln kann.

    Oder geht es über DMX deutlich leichter? Wichtig ist wie gesagt, dass es wireless ist und man nicht jedesmal 1000 Kabel legen muss.

    Nun, wir alle fürchten böse Menschen. Aber das Böse hat viele Gesichter und eins davon ist für mich das fürchterlichste; und das ist die Gleichgültigkeit guter Menschen.

    Einmal editiert, zuletzt von Nibako (8. August 2022 um 11:46)

  • Was bitte verstehst du unter offline?
    Du kannst den ESPs doch feste IP-Adressen geben, damit das Ding immer sauber läuft.

    Ich kenn mich mit DMX nicht aus - aber geh mal davon aus, dass das irre komplex ist (wenn du mit sowas die Lichtshof der Stones machst, wird das nicht gerade mit zwei Seiten Handbuch abgehandelt sein...). Du kannst dich ja mal schlau machen, aber ich fürchte, das sprecht den Rahmen. Du baust dir ja auch kein Hausautomationssystem, um dann nur einen Lüfte rin Klo zu steuern...

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Was bitte verstehst du unter offline?
    Du kannst den ESPs doch feste IP-Adressen geben, damit das Ding immer sauber läuft.

    Darunter verstehe ich, dass alles nur lokal läuft. Das der RPI nicht mit dem Internet verbunden ist. Deswegen im ersten Post die Frage mit dem Router. Müssen ja auch irgendwoher die IPs zugewiesen werden, wenn es kein DHCP gibt.

    Das war ja auch nur eine Idee, wenn es eine bessere Lösung gibt gerne her damit :D

    Ich will letztendlich am Ende 3 Podeste haben unter denen dann LED Streifen angebracht sind, denen ich mit einem Knopfdruck eine Farbezuweisen kann. Es soll an diesen Podesten keine Kabel geben, die nach außen führen. So das man die Dinger nur aufstellt, Batterie an oder Netzkabel und vllt noch den RPI auf dem Verstärker aufbaut und los gehts.

    Vllt klappt auch sowas:

    https://github.com/Aircoookie/WLED/wiki/DMX-Output

    https://www.ebay.com/itm/DMX-to-WS2…r-/221299388963

    Nun, wir alle fürchten böse Menschen. Aber das Böse hat viele Gesichter und eins davon ist für mich das fürchterlichste; und das ist die Gleichgültigkeit guter Menschen.

  • Die IPs weist entweder der Pi zu, denn deine ESPs stellen ja ein lokales Netz dar (damit hat das Internet nichts zu tun) oder du spenierst ihnen gleich feste IPs, was dir meiner Meinung nach viel Ärger spart, weil dann jeder ESP eine feste IP hat und es kein durcheinander geben kann, wenn wechselnde IPs zugewiesen werden. Für die IPs brauchsyt du auch keinen Router, sondern einen DHCP-Server, der auf dem Pi laufen könnte. Aber wie gesagt, das würde ich nicht machen.

    Für deine Anforderungen bist du mit dem Pi als Steuerzentrale, einer schlichten WLAN-Verbindung zu den ESPs und den direkt dort angeschlossenen Stripes sicher gut bedient. Bei jeder ESP-Einheit brauchst du natürlich noch die Stromversorgung für den ESP und für die Stripes. Netzanschluss wird sich nicht vermeiden lassen - mit Akkus kommst du da nicht weit. Bei längeren Stripes müsstest du ggf. noch mehrfach Strom einspeisen, damit es nicht zu einem Helligkeitsabfall über die Länge des Stripes kommt.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Die WS2812 LED-Stripes benötigen 5V und es gibt RGB [Anzeige] und RGBA (SK6812) [Anzeige].

    Erklärvideo:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Kabel lassen sich nicht vermeiden, denn die LEDs brauchen Strom. D.h. du wirst auch noch ein Netzteil spendieren müssen. Welches Netzteil du verwendest, hängt dann von der Anzahl der LEDs ab. Mit wenig LEDs könnte man das auch mit einer Powerbank laufen lassen.

    Was die Konnektivität betrifft, hast du 3 Möglichkeiten:

    • ESP32 als Station betreiben (WLAN.STA_IF)
    • ESP32 als AccessPoint betreiben (WLAN.AP_IF)
    • Beides gleichzeitig betreiben

    Wenn der ESP32 als Client (STA_IF) agiert, so bezieht er sich die IP-Adresse vom Router (via DHCP).

    Falls man sich mit dem ESP32 verbindet (WLAN.AP_IF), weist der ESP32 dem Client eine IP via DHCP zu.

    Dann kann man im lokalen Netzwerk oder auch übers Internet einen Socket öffnen. Das ist ziemlich Low-Level.

    Einfacher ist es mit MQTT. MQTT benötigt im eigenen Netzwerk irgendwo einen Broker, mit dem sich die Clients verbinden können.

    MQTT nutzt das Publisher-Subscribe Verfahren. Es können hierarchisch Nachrichten via MQTT verschickt werden.

  • Ok alles klar. Vielen Dank für die Infos ihr beiden! :)

    Nun, wir alle fürchten böse Menschen. Aber das Böse hat viele Gesichter und eins davon ist für mich das fürchterlichste; und das ist die Gleichgültigkeit guter Menschen.

  • Was die Konnektivität betrifft, hast du 3 Möglichkeiten:

    • ESP32 als Station betreiben (WLAN.STA_IF)
    • ESP32 als AccessPoint betreiben (WLAN.AP_IF)
    • Beides gleichzeitig betreiben

    Lösung zwei hieße bei mehreren ESPs mehrere Access Points, an die sich der Pi dann gleichzeitig anmelden müsste, was ziemlich unsinnig ist.
    Beides gleichzeitig? Dafür sehe ich hier keine Anwendung.
    Die naheliegendste Lösung ist hier sicher, dass der Pi die Zentrale (und damit auch den Access Point) übernimmt und die ESPs sich dort anmelden.
    So lange du die Stripes einfarbig ansteuerst, ist MQTT eine nette Lösung. Wenn du komplexere Muster übertragen willst - bewegte Effekte oder sowas, wo nicht alle LEDs eines Stripes immer die gleiche Farbe haben, musst du die Effekte entweder in den ESP programmieren oder du musst größere Datenmengen (Farbdaten für alle LEDs) zu jedem ESP schicken. Dann ist MQTT eher nicht mehr das passende.
    Der Geschwindigkeit wegen wäre es dann aber wahrscheinlich eh besser, die Effekte in den ESP zu programmieren und vom Pi nur noch mit einigen Parametern aufzurufen, das ginge dann mit MQTT ganz gut.

    Kleine Rechnerei mal zur Vorstellung. 5 LED-Streifen, 150 LEDs je Streifen, 64 Bit Farbinformation pro LED, 25 Frames/sec für flüssige bewegte Effekte:
    5 x 150 x 64 * 25 = 1,2 MBit/Sec. So viel Daten müsste der Pi pro Sekunde aufbereiten und übers Netz an die ESPs schicken. Prinzipiell ist das zwar für Wifi machbar, aber was der ESP tatsächlich schafft, müsste man testen und du müsstest das alles ja noch verarbeiten, da kommt noch Overhead dazu usw. Da bietet es sich schon an, die Arbeit von den ESPs machen zu lassen und nicht riesige Datenmengen übers WLAN zu schicken.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Lösung zwei hieße bei mehreren ESPs mehrere Access Points, an die sich der Pi dann gleichzeitig anmelden müsste, was ziemlich unsinnig ist.

    Ich habe nur die Möglichkeiten aufgezählt. Was er daraus macht, ist seine Sache.

    Beides gleichzeitig? Dafür sehe ich hier keine Anwendung.

    Hier nicht, aber ich habe alle Möglichkeiten einfach aufgezählt, ohne sie zu werten.

    Andere mit anderen Szenarien haben danach gefragt: https://forum.micropython.org/viewtopic.php?f=18&t=12875

    Die naheliegendste Lösung ist hier sicher, dass der Pi die Zentrale (und damit auch den Access Point) übernimmt und die ESPs sich dort anmelden.

    Ja, so würde ich das auch machen, da es am einfachsten ist.

    Mit Lichteffekten und MQTT ginge das auch, wenn ein "Ablauf-Programm" via MQTT übertragen wird. Das effizient hinzubekommen, ist der schwierige Teil. Aber auch ohne MQTT hat man bei den Mikrocontrollern unterschiedliche Latenzen.

    Ich würde es einfach mit UDP machen, falls MQTT zu langsam sein sollte. Sollen denn überhaupt Echtzeitdaten übertragen werden? Falls ja, welche Grantien? Also wie schnell muss das System garantiert reagieren. Wenn es im Bereich von 10 ms ist, ist es kein Problem, es seiden die Garbage Collection kommt einem in die Quere. Dann passiert mal 100 ms lang nichts.

  • Ich habe nur die Möglichkeiten aufgezählt. Was er daraus macht, ist seine Sache.

    Da hast du aber zahlreiche Möglichkeiten vergessen? Er kann zum Beispiel die Chips von den ESPs popeln und vor dem Fernseher zum Bier knabbern!
    Was soll der Unsinn, ihm "Möglichkeiten" aufzuzählen, die keine sind, weil sie nichts bringen oder nicht funktionieren???

    Ein Ablauf-Programm (im Sinne eines Programmcodes) per MQTT zu übertragen, ist ebenfalls nicht besonders sinnvoll. Da alles lange vor dem Auftritt konfiguriert ist, kann man dieses Ablaufprogramm auch gleich im ESP speichern und dann eben nur aufrufen (ggf. mit Parametern, wie ich oben schon gesagt habe). Mit einer Handvoll Effektprogramme im ESP, die man dan nach belieben vom Pi aufrufen kann, wird das schon richtig gut.
    Entscheidend ist dann, wie man die Abfolgen im Pi hinterlegen, zeitlich steuern und auslösen kann. So der Klassiker: beim kraftvollen Gitarreneinsatz solls einen hellen Lichtblitz geben. Heißt, da muss das vorher rote Schwummerlicht warten, bis einer im richtigen Moment auf einen Taster haut, um dem Pi (und der dann den ESPs) zu sagen: jetzt Lichtblitz fürs Gitarrensolo... Das zu Programmieren, ist dann die eigentliche Kunst für dieses Projekt.

    Wenn man tatsächlich vollständige LED-Farbdaten übertragen will und MQTT zu lahm ist, bietet sich TCP oder UDP an. (Dass MQTT zu langsam ist, würde ich eigentlich wegen der normalerweise kleinen Payload der MQTT-Pakete erwarten - es mag aber auch möglich sein, die Pakete zu vergrößern... da kenn ich mich mit MQTT zu wenig aus. Pro Frame wären das 1200 Byte... wer weiß.)
    TCP würde die Daten sicher übertragen, führt aber im Fehlerfall zu großen Latenzen, die alles aus dem Takt bringen können. UDP hat da in der Tat den Vorteil, dass es keine Wiederholungspakete gibt. Allerdings, was nicht ankommt, kommt nicht an und verlangt, dass ein Frame oder bei längere Störungen mehrere Frames komplett ausfallen. Also, egal wie man es macht - die Übertragung großer Datenmengen über einen ganzen Abend hinweg birgt doch die Gefahr, dass es zu Aussetzern kommt. Selbst wenn es in der Entwicklung funktioniert, weiß man nicht, wie es sich verhält, wenn man auf der Bühne steht, um einen herum lauter elektrisches Equipment, das Störungen verursachen kann, und unten 200 (oder 20000) Konzertbesucher, die alle ihr WLAN am Handy eingeschaltet haben... 10 oder 100 oder 200 ms machen sicher nichts aus, aber unter Umständen muss man da mit ganz anderen Dimensionen rechnen.

    Hat man die Effekterzeugung auf dem ESP, genügt es, wenige Bytes zu übertragen, um dann eine Lichtfolge sogar über mehrere Sekunden oder mehr ablaufen zu lassen. Man könnte das auf dem Pi für einen kompletten Song vorprogrammieren und als Parameter/Steuerfolge an die ESPs schicken.

    Schwieriger wird es, die ESPs zu synchronisieren, falls einer wegen irgendwelcher Funkstörungen seine Befehle eine Sekunde später bekommt. Bei kurzen folgen ist das schnell wieder weg. Aber wenn man die Lichtfolge für einen kompletten Song hat und dann drei Minuten lang der eine Stripe immer ne Sekunde hinterher hinkt, ist das nicht so schön.

    Ich wäre da aber mal optimistisch, dass das bei vernünftiger Struktur des Gesamtsystems funktionieren wird. Von der Übertragung der rohen LED-Daten würd ich aber auf jeden Fall abraten.

    Das größte Problem ist möglicherweise geringe Erfahrung beim TO. Der Fragestellung nach scheint er kein IT-Experte zu sein. Ein bisschen Vorkenntnisse und Programmiererfahrung sollte man für so ein Projekt schon haben - oder vieeeel Geduld. Jedenfalls finde ich die Idee sehr spannend. Und ausbauen lässt sich das dann auch noch nach Belieben.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Da hast du aber zahlreiche Möglichkeiten vergessen? Er kann zum Beispiel die Chips von den ESPs popeln und vor dem Fernseher zum Bier knabbern!
    Was soll der Unsinn, ihm "Möglichkeiten" aufzuzählen, die keine sind, weil sie nichts bringen oder nicht funktionieren???

    Mir reicht es so langsam! Deine Angriffe gehen mir tierisch auf den Sack. UNTERLASSE DAS!

    Der OP möchte das:

    Umfangreiche Lichteffekte und Synchronisation mit der Musik sind erstmal nicht notwendig. Es reicht wenn pro Song eine andere Farbe gesetzt werden kann (vorerst) und jemand über eine APP evtl. während dem Auftritt wechseln kann.

    Zum Setzen der Farbe aller LEDs würden 3 Byte reichen. Wenn man mehrere Programme ablaufen lassen will, dann muss man sich ggf. noch ein Byte für Befehle und paar Byte für Parameter senden. Der Mikrocontroller kann die Effekte berechnen und falls man mit MQTT arbeitet, kann man sich das auch über das Topic machen.

    • /stripe1/programm/1
    • /stripe1/on
    • /stripe1/off

    Über den Payload können zusätzliche Parameter gesendet werden, z.B. die Farbe.

    Beispielcode werde ich jetzt aber nicht schreiben. Kann der Gnom machen, denn er weiß es ja besser als ich.

  • Mir reicht es so langsam! Deine Angriffe gehen mir tierisch auf den Sack. UNTERLASSE DAS!

    Und mir gehts auf den Sack, wenn Leute Dinge aufzählen, die gar nicht funktionieren und auch nichts bringen.

    Der OP möchte das: [...]

    Ich erlaube mir zu zitieren:

    Umfangreiche Lichteffekte und Synchronisation mit der Musik sind erstmal nicht notwendig. Es reicht wenn pro Song eine andere Farbe gesetzt werden kann (vorerst) und jemand über eine APP evtl. während dem Auftritt wechseln kann.

    Man beachte das Wort "erstmal"! Das impliziert durchaus, dass später noch was dazukommen kann. Und dann sollte man sich das nicht von vornherein verbauen. In der Softwareentwicklung nennt man das "konstruktive Voraussicht".

    Ansonsten sagst du ja genau das, was ich auch schon von Anfang an sage. Einfache Lichtsteuerungen im ESP mit Parametrierung.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Vielen dank für eure zahlreichen Ideen. WLED ist auch echt eine gute Idee. Das würde wahrscheinlich die Arbeit erheblich erleichtern. Nehmen wir mal an, ich würde mich aus der Liste der "Controllers with WLED pre-installed" für eines entscheiden, welches Produkt würde am meisten Sinn machen? (https://kno.wled.ge/basics/compatible-hardware/) Das würde mir das 5 malige flashen sparen, aber natürlich auch mit mehr kosten verbunden sein.

    Möglicherweise der ABC! WLED Controller?

    Manche scheinen schon ein Powersupply dabei zu haben, das würde wahrscheinlich schon günstiger sein.

    Grüße

    Nun, wir alle fürchten böse Menschen. Aber das Böse hat viele Gesichter und eins davon ist für mich das fürchterlichste; und das ist die Gleichgültigkeit guter Menschen.

    Einmal editiert, zuletzt von Nibako (9. August 2022 um 10:14)

  • Nehmen wir mal an, ich würde mich aus der Liste der "Controllers with WLED pre-installed" für eines entscheiden, welches Produkt würde am meisten Sinn machen?

    Da ich keins dieser Produkte habe, kann ich keins empfehlen. Wenn du schon mal einen Mikrocontroller geflasht hast und dich unter Linux etwas auskennst, kannst du die Firmware auch selbst flashen.


    Die Konfiguration wird auf der Datenpartition gespeichert. Man kann nach dem Flashen die Anzahl der LEDs einstellen. Ich habe jetzt auf die Schnelle nichts gefunden, dass eine Auswahl der unterschiedlichen LED-Typen gefunden.

    Das Coole an dem Projekt ist, dass es direkt mehrere Möglichkeiten der Steuerung gibt. UDP und MQTT sind mit dabei.

    Man kann Kommandos via MQTT, HTTP, HTTP+JSON an den Controller senden.

    Wenn man z.B. mit MQTT Programme wählen will, muss man sich auch die HTTP-Request-Api ansehen.

    Es können mehrere Controller mit UDP synchronisiert werden.

    DMX kann auch angesteuert werden. Über eine Steuerung durch DMX (Controller ist slave) ist aber nichts in der Doku zu entnehmen.

    Sofern das erforderlich sein sollte, am besten etwas Fertiges nehmen. Dieser Controller unterstützt DMX: https://forkineye.com/espixelstick-v3/

    Falls DMX nicht benötigt wird, würde ich eher zu irgendeinem ESP32 tendieren. Kann ein vorbereitetes Board für dieses Projekt sein oder der Standard-Kram von Amazon.

  • Moinsen DeaD_EyE,

    Mir reicht es so langsam! Deine Angriffe gehen mir tierisch auf den Sack. UNTERLASSE DAS!

    Da bist du nicht der einzige dem diese Art von Gnom mehr als nur auf den Sack geht. Überall wo dieser Typ sich reinhängt, verbreitet er Stunk. Die Worte "Meinungsfreiheit" und "Gedankenaustausch" scheinen diesem Wesen vollkommen fremd zu sein. Es gibt schließlich nicht nur einen Weg, es gibt immer mehrere Lösungsweg. Nur der TO Nibako kann entscheiden, was er auf Grund seines Erfahrungsschatzes, seine Budgets und seinen technischen Umsetzungsmöglichkeiten realisieren kann. Das sollte man in aller erste Linie auch berücksichtigen.
    Dieses ständige "Das mußt du so oder so machen" ist einfach nur nervig. Wahrscheinlich kommt es in der Gedankenwelt von GNOM nicht vor, daß man zZ auch nicht alle Artikel bekommt, daß viele seiner Ideen zwar erst einmal funktionieren, meist aber mit höheren Unterhaltskosten und einer eingeschränkten Nutzungsdauer einhergehen.

    Franky

    Franky

  • Da bist du nicht der einzige dem diese Art von Gnom mehr als nur auf den Sack geht.

    Ich möchte hier keine Unruhe verbreiten. Ich mache das jetzt so, dass ich ihn erst mal ignoriere. Dafür gibt es ja eine Funktion im Forum. Es ist halt immer wieder schade, dass Unbeteiligte mit hereingezogen werden. Im öffentlichen Raum finden fast nur noch destruktive Diskussionen statt. Das ist mir seit dem großen C besonders stark aufgefallen.

  • Danke euch.

    Ich habe schonmal einen Mikrocontroller geflasht und kenne mich unter Linux etwas aus. Ich habe schonmal ein Ambilight system mit einem APA102 Streifen gebastelt, da war das Löten etwas mühselig.

    Deshalb dachte ich vllt gibt es etwas leichteres zum verbinden.

    Nun, wir alle fürchten böse Menschen. Aber das Böse hat viele Gesichter und eins davon ist für mich das fürchterlichste; und das ist die Gleichgültigkeit guter Menschen.

Jetzt mitmachen!

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