Kurz und knackig,
ein kurzes Tutorial mit Beispielcode um einen NodeMCU (ESP8266) oder LOLIN32 (ESP32) an Hyperion anzubinden.
Ein ESP8266 ist einfach gesagt ein Microcontroller wie ein Arduino mit Wlan. Damit könnt ihr überall im Raum LEDs verteilen und dort anschließen.
Dann mit Hyperion ansprechen und freuen!
Ich habe schon den Code für das Devkit vorbereitet.
Der enthält folgendes:
1) WS2801 LED-Coding 50LEDs (mit Rainbow Farbverlauf im Ruhemodus)
2) JSON-Server für die Hyperion Android App (Farbe fest wählen, Resetknopf) auf Port 19444
3) UDP-Receiver für UDP Protocol 0 von Hyperion auf Port 19446
4) WLAN-Verbindung
5) Over-the-Air Updateinterface (WLAN Firmwareupdate über die Arduino IDE)
6) Logging auf 115200 Baud auf COM
Folgendes benötigt ihr an
Hardware:
NodeMCU Devkit Modul:
Amazon:
ELEGIANT NodeMcu Lua ESP8266 ESP-12E WIFI Development Board (Affiliate-Link) - 10,99€ - Versand aus dem Ausland
Diymall NodeMCU Devkit 1.0 CP2102 IIC SPI für Apple's MAC OS (Affiliate-Link) - 16,90€ - Prime Langstrecke
Ebay:
NodeMcu Lua WIFI Netzwerk entwicklungs-board basiert ESP8266 CH340 Board TE391 - 8,88€ - Versand aus Deutschland
4-adrige LEDs:
WS2801
Stripes:
-5M 32LEDs/m (Affiliate-Link) - 30,98€-122,99€ (je nach Helligkeit) - Amazon (Prime) - DE
12mm Dots:
-50 LED Pixel IP65 (Affiliate-Link) - 35,98€ - Amazon - DE
LPD8806
Stripes
-5M 32LEDs/m (Affiliate-Link) - 131,98€ - Amazon - DE
-5M 48LEDs/m (Affiliate-Link) - 132,99€ - Amazon Prime - DE
-5M 60LEDs/m (Affiliate-Link) - 159,99€ - Amazon Prime - DE
3-adrige LEDs:
WS2812B
Stripes:
-5M 30LEDs/m (Affiliate-Link) - 36,99€ - Amazon Prime - DE
-5M 60LEDs/m (Affiliate-Link) - 62,99€ - Amazon - CN
Netzteil
Plug'n'Play mit 5,5/2,1mm Stecker
-5V 10A (Affiliate-Link) - 25,98€ - Amazon - DE
Es laufen alle LEDs die von FastLED unterstützt werden.
Und natürlich den üblichen Kleinkram.
Software:
Arduino IDE - Boardinstallation:
Download: https://www.arduino.cc/en/Main/Software
Das Board wird von Hause aus nicht unterstützt.
Zuerst eine neue Boardverwalter URL hinzufügen:
1. Datei -> Voreinstellungen dann die URL "http://arduino.esp8266.com/stable/package_esp8266com_index.json" unter "Zusätzliche Boardverwalter-URLs" hinzufügen.
2. Werkzeuge -> Board -> Boardverwalter - esp8266 oder esp32 hinzufügen.
3. Werkzeuge -> Board -> NodeMCU 0.9/1.0 je nach Modul auswählen, bei mir NodeMCU 0.9 (steht auf dem Board selbst)
Englisches Tutorial zur Installation des NodeMCU Boards in der Arduino IDE: http://www.seeedstudio.com/rec…evkit-in-arduino-ide.html
Arduino IDE - Libraries
Es werden noch ein paar Softwarebibliotheken benötigt um die von mir bereitgestellte ESP8266 Software nutzen zu können.
1. Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
a) ArduinoThread
b) ArduinoJson
c) LinkedList
d) FastLED (min. 3.1.3)
e) Logging (manuell in den Ordner libraries kopieren) - https://github.com/SciLor/Ardu…ibrary/archive/master.zip
f) ESP32 Webserver https://github.com/nhatuan84/esp32-webserver - esp32 only
Hyperion mit ForwarderModifizierte Hyperionversion, die es erlaubt den Bild/Json Datenstrom an eine zweite Hyperioninstanz weiterzuleiten (ohne v4l2loopback).Siehe: https://forum-raspberrypi.de/f…nktion-update-27-02-2016/
Mittlerweile ist diese Funktion im Hauptstrang von Hyperion integriert.
Wichtige Punkte in der Konfiguration:
Hyperion Grundinstanz:
Hyperion Instanz 2, bitte Grabber auskommentieren,
LED-Konfiguration wie ansonsten auch eintragen (Bei mir für 50 WS2801):
IP-Adresse des ESP8266 ggbfs anpassen (DNS Name hostname siehe Quellcode)
{
"colorOrder" : "rgb",
"maxpacket" : 1450,
"name" : "AmbiSZ-ESP8266",
"output" : "ESP8266:19446", ///
"protocol" : 0,
"rate" : 250000,
"type" : "udp"
},
"protoServer" :
{
"port" : 19447
},
"jsonServer" :
{
"port" : 19446
},
Display More
Arduino IDE - Quellcode ESP8266
Im Anhang mein C/C++ Code für den NodeMCU/ESP8266. Einfach in den Arduino Sketchordner entpacken und anpassen.
Bitte die ConfigStatic.h.example nach ConfigStatic.h kopieren und anpassen.
LEDs mit nur einer Data-Leitung (z.B. WS2811) sind als clockless zu betrachten. Dort bitte den
#CONFIG_LED_CLOCKLESS_CHIPSET einkommentieren und den Namen dementsprechend setzen.
ConfigStatic.h (bitte die aktuelle Version aus dem GitHub verwenden)
/*------------------------------------------------*/
/*Configuration type*/
//#define CONFIG_ENABLE_WEBCONFIG 1
//Replaces all values in the webconfig with the ConfigStatic.h values when CONFIG_ENABLE_WEBCONFIG is enabled
//#define CONFIG_OVERWRITE_WEBCONFIG 1
/*------------------------------------------------*/
/*Logging level*/
#define LOGLEVEL LOG_LEVEL_INFOS
//#define LOGLEVEL LOG_LEVEL_DEBUG
//#define LOGLEVEL LOG_LEVEL_VERBOSE
/*------------------------------------------------*/
/*Main static configuration*/
//This cannot be changed via web inteface
#define CONFIG_LED_SPI_CHIPSET WS2801 //Comment out for clockless
//#define CONFIG_LED_CLOCKLESS_CHIPSET WS2812B
#define CONFIG_LED_DATAPIN D1
#define CONFIG_LED_CLOCKPIN D2 //Comment out for clockless
#define CONFIG_LED_COLOR_ORDER RGB
#define CONFIG_LED_COUNT 50
//OFF, RAINBOW, FIRE2012
#define CONFIG_LED_STANDARD_MODE FIRE2012
/*------------------------------------------------*/
/*Main configuration*/
//You can leave it empty and override it via the web interface on port 80
#define CONFIG_WIFI_SSID "ssid"
#define CONFIG_WIFI_PASSWORD "password"
//#define CONFIG_WIFI_STATIC_IP 1
//const byte CONFIG_WIFI_IP[] = {192, 168, 0, 100};
//const byte CONFIG_WIFI_SUBNET[] = {255, 255, 255, 0};
//const byte CONFIG_WIFI_DNS[] = {192, 168, 0, 1};
#define CONFIG_WIFI_HOSTNAME "ESP8266"
#define CONFIG_PORT_JSON_SERVER 19444
#define CONFIG_PORT_UDP_LED 19446
Display More
Arduino IDE - Hochladen
Einfach den ESP8266/NodeMCU per USB an den Rechner, ggbfs unter Werkzeuge den Port anpassen.
Jetzt am Besten noch den Serial Monitor (Werkzeuge) starten und die Baudrate auf 115200 ändern, dann solltet ihr das Logging sehen, wenn der Sketch auf dem NodeMCU läuft.
Auf den Pfeil oben Rechts klicken (hochladen).
Schon ist das Werk vollbracht.
Serial Monitor Output sieht wie folgt aus:
I: Start logging
I: reset Mode
I: Connecting to WiFi HomeSciLor
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 1
pm open phy_2,type:2 0 0
cnt
connected with HomeSciLor, channel 1
dhcp client start...
ip:192.168.123.123,mask:255.255.255.0,gw:192.168.123.1
I: Connected successfully, IP address: 192.168.123.123
I: Prepare OTA
I: OTA Ready
I: Open port 19446 for UDP...
I: success
I: Open port 19444 for TCP...
I: HEAP=42624
chg_B:-60
Display More
Jetzt im Git
https://github.com/SciLor/ESP8266_Hyperion_LED-Controller
Nachwort
Vielen Dank für Eure Unterstützung, besonders an:
-tpmodding
-raspbastler
-Kollektiv02
Vielleicht hab ich noch jemanden vergessen, nicht traurig sein!
PS
Falls mir jemand ein Dankeschön schicken möchte: http://www.scilor.com/donate.html