Skip to main content

Ansteuerung der LED-Leiste über’s Netzwerk

Adresse

Die LED-Leiste ist unter der IP-Adresse 10.233.0.118 im ZAM-Netzwerk erreichbar.

Dienste

Folgende Dienste laufen auf dem ESP32:

  • Ein HTTP-Server, über den die fest einprogrammierten Funktionen gesteuert werden können (Animationswechsel, Anzeige einfacher Farben) => http://10.233.0.118/
  • Ein UDP-Server, der die Echtzeitansteuerung ermöglicht. Dieser wird weiter unten genauer beschrieben.

⚠️ Wichtig: Eine Ansteuerung über UDP „gewinnt“ immer gegenüber den Einstellungen auf dem HTTP-Server. Sobald ein Kommando über UDP empfangen wurde, wird die interne Animation unterbrochen und das „Live-Bild“ angezeigt. Die interne Animation wird fortgesetzt, wenn für 3 Sekunden kein UDP-Paket empfangen wurde.

Der HTTP-Server

Der ESP32 stellt per HTTP eine sehr spartanische Startseite bereit, auf der einige vordefinierte Animationen umgeschaltet werden können. Da die Firmware ursprünglich für einen anderen Aufbau geschrieben wurde, sind manche Animationen noch nicht an den Aufbau im ZAM angepasst, also bitte nicht wundern, wenn mal etwas komisch aussieht.

Zusätzlich bietet der HTTP-Server eine API an, die z.B. das Setzen von Farben für die ganze Leiste ermöglicht, z.B. setzt folgendes ein hübsches Frühlingsgrün:

http://10.233.0.118/api/color?color=20800010

Es gibt auch eine API für Textanzeige, die aber am ZAM-Aufbau nicht sinnvoll umsetzbar ist:

http://10.233.0.118/api/text?text=Hallo%20ZAM!&color=20800010

Echtzeit-Ansteuerung über UDP

Der ESP32 wartet auf Port 2703 auf Kommandos.

Ein Kommando ist wie folgt aufgebaut:

Byte 0 1 2 3 4 5 6
Bedeutung Kommandotyp Strip-Index LED-Index Rot-Wert Grün-Wert Blau-Wert Weiß-Wert

Es gibt folgende Kommandos zum Setzen bzw. Verändern von Farben:

  • Farbe setzen (Kommandotyp 0x00): setzt die gegebene LED direkt auf die gegebene Farbe.
  • Farbe überblenden (Kommandotyp 0x01): blendet die LED linear auf die gegebene Farbe über.
  • Farbe aufhellen (Kommandotyp 0x02): addiert die gegebene Farbe auf die aktuelle Farbe der LED.

Außerdem gibt es folgende Steuerbefehle. Für diese werden die Index-Bytes und Farbwerte speziell interpretiert:

  • Überblendgeschwindigkeit setzen (Kommandotyp 0x03): Setzt die Schrittweite pro Frame bei der Überblendung. Diese ist im Rot-Wert (Byte 3) angegeben, alle anderen Bytes werden ignoriert. Schrittweite 1 ist am langsamsten, Schrittweite 255 setzt die Farbe direkt.
  • Frame beenden (Kommandotyp 0xFE): Schließt den aktuellen Frame nach diesem Paket ab. Sollte das Paket noch weitere Kommandos enthalten, werden diese noch verarbeitet, es werden aber keine weiteren Pakete für diesen Frame gelesen. Die Bytes 1 bis 6 werden ignoriert.
  • Bestätigung anfordern (Kommandotyp 0xFF): Fordert eine Antwort vom ESP an. Die Antwort ist ein UDP-Paket mit 2 Bytes: das erste ist der Rot-Wert aus dem Kommando, das zweite der Grün-Wert. Dieses Kommando ist nützlich, um eine Flusskontrolle umsetzen zu können, indem in den beiden Bytes ein Zähler mitgeschickt wird. Hinkt dieser Zähler in den Antworten hinterher, weiß man, dass der ESP die Pakete nicht schnell genug verarbeiten kann. Dann sollte die Senderate gedrosselt werden.

In einem UDP-Paket können bis zu 210 Kommandos aneinandergereiht werden. Bei mehr Kommandos müsste das UDP-Paket fragmentiert werden, was der ESP32 nicht unterstützt. Pro Frame verarbeitet der ESP32 jedoch bis zu 3 UDP-Pakete.