Tag 19: Cheerlights
Hinter dem Türchen des heutigen Tages befindet sich eine ganz besondere LED. Es handelt sich um eine RGB-LED mit integriertem Controller (Typenbezeichnung PL9823, vergleichbar mit WS2812). Sie ermöglicht es, mehrere LEDs hintereinanderzuschalten und über ein Protokoll einzeln anzusteuern. Heute werden wir allerdings zunächst eine LED ansteuern. Dafür kommt ein Versuch gerade recht, der schon eine gewisse Tradition in meinen Adventskalendern hat: das Cheerlights-Projekt von Hans Schaaler. Für alle diejenigen, die das Projekt nicht kennen: Es geht um weltweit vernetzte bunte Lichter, die sich simultan über Twitter-Kommandos steuern lassen. Und dazu passt Node-RED sehr gut. Für den Versuch des heutigen Tages benötigen Sie den folgenden Aufbau und das Programm des heutigen Tages.
Die LED kann nun über eine Reihe von Kommandos gesteuert werden. Sie wird über den Begriff Pixel angesprochen. Am heutigen Tag werden wir vor allem sehen, wie man alle LEDs mit der gleichen Farbe ansteuern kann, denn wir haben heute ja nur eine LED. In einem späteren Versuch wird aber deutlich, mit welchen Kommandos man den LEDs einzelne Farben zuweisen kann.
Kommando im in-Topic | Einstellungen |
{„cmd“:“set_pixel_hex“,„value“:“#FFFFFF“} | Setzt alle LEDs auf den Farbwert im HEX-Format. |
{„cmd“:“set_pixel_rgb“,„value“:“rgb(255,255,255)“} | Setzt alle LEDs auf den Farbwert im RGB-Format. |
{„cmd“:“set_pixel_hsv“,„value“:“hsv(120, 100%, 100%)“} | Setzt alle LEDs auf den Farbwert im HSV-Format. |
{„cmd“:“get_pixel_hex“} | Gibt die aktuelle Farbe im entsprechenden Format wieder, wird automatisch beim Setzen einer Farbe zurückgegeben. |
{„cmd“:“get_pixel_rgb“} | |
{„cmd“:“get_pixel_hsv“} |
Das Cheerlights Cheerlights-Projekt hat eine Webseite (https://cheerlights.com/), auf der Sie einige Informationen zu dem Projekt bekommen. Außerdem finden Sie dort eine Unterseite, bezeichnet mit Cheerlights API, auf der Sie eine Vielzahl von Möglichkeiten dazu erhalten, wie Sie den aktuellen Farbwert bekommen. Wir benutzen hier die Schnittstelle
http://api.thingspeak.com/channels/1417/field/2/last.json
über die der aktuelle Wert als JSON-Value und im HEX-Format angeboten wird.
In dem Flow des heutigen Tages müssen wir einfach nur alle paar Sekunden diese Seite aufrufen und den aktuellen Wert extrahieren. Es wird überprüft, ob sich der Wert geändert hat. Ist das der Fall, wird die neue Farbe an das Board übertragen. Zusätzlich können Sie auch den Twitter-Node mit Ihren TwitterDaten konfigurieren, falls Sie bei Twitter angemeldet sind. Er sucht dann ebenfalls nach Tweets mit dem Cheerlights-Text und liest die Nachricht vor, während sie auf der GUI anzeigt wird.
Doch wie können Sie die Farbe verändern? Das geht, indem Sie eine Twitter-Nachricht verfassen und damit Ihre und auch die Farbe aller anderen Cheerlights-Nutzer verändern. Die Nachricht muss zum einen #Cheerlights, @Cheerlights oder einfach nur das Stichwort Cheerlights enthalten, und zum anderen muss eine der vordefinierten Farben hinter dem Stichwort stehen. Zu den vordefinierten Farben gehören:
red, green, blue, cyan, white, warmwhite, purple, magenta, yellow, orange, pink
Ein möglicher Tweet lautet also:
Testing my #cheerlights project on my #NodeESP with the color blue.
Damit geben Sie sich und der ganzen Welt eine neue Farbe.
Tag 19 – wieder ein schönes Experiment, lieben Dank.
Die Polung der RGB-LED habe ich aufgrund Bernd1′ Kommentar bestimmt 5-mal geprüft, da seine LED aufgrund falscher Verdrahtung explodiert war.
Dennoch, ganz so reibungslos ging es nicht, aber immerhin: die RGB-LED wechselt die Farben.
1.) Ich weiß nicht, ob ich da was überlesen habe, aber den Node „Twitter in“ musste man erst installiere. Hilfe bot diese Seite: https://flows.nodered.org/node/node-red-node-twitter
Da musste dann noch ein Account eingetragen werden; ich habe den des Autors verwendet: @DonElVino
2.) Sprachausgabe funktioniert nicht; es kommt kein Mux (Firefox und Internet Explorer.
3.) Ebenso die Textausgabe im Dash-Board auch nicht.
4.) Die RGB-LED zeigt – außer bei rot – nicht die korrekte Farbe (blau ist violett, grün ist gelb). Darüber war ich ziemlich enttäuscht, weil ich gedacht hätte, dass bei so einem kompakter Bauteil, die einzelnen LEDs für die Farben korrekt abgestimmt wären.
Übrigens: Zum Vergleich, was weltweit eingestellt ist, hier https://cheerlights.com/live/
Wer sich noch an die Cheerlight-Variante beim NanoESP erinnert, wird die schönen Farbübergänge beim Wechsel jetzt beim NodeESP vermissen. Ich habe beide Boards und hier punktet eindeutig die ältere Variante.
Welche Erfahrungen habt Ihr mit der RGB-LED? Passen bei euch die Farben?
Bei wem funzt die Sprachausgabe? Welcher Browser wird dabei verwendet?
Lieben Gruß
Äd
Also, habe jetzt verstanden, dass der Twitter-Node gar nicht in Betrieb ist. Um ihn nutzen zu können, muss man inzwischen sich als Developer bei Twitter angemeldet haben. Das ist ziemlich umstädlich und man muss ein paar Fragen beantworten.
Wie man dann an die erforderlichen Daten (API key, API secret key,Access token und Access token secret) ist mir nicht klar.
Hat jemand von euch diesen Aufwand bereits getrieben? Wer hatte Erfolg, und was muss ich noch tun?
Zu meinem Punkt 4 (s.o.):
Dies ist ein Bug im Firmware-Update!
Ich habe die Version ESP32_FW_1v3_161218.bin geladen, und damit funzt es wunderbar.
Was ist der Fehler:
Bei allen Farben wir rot dabeigemischt, d.h. statt Grün wird Gelb und statt Blau wird Violett angezeigt.
Für Testzwecke habe ich im Node „Vorlage“ den HEX-Wert für die Farbe direkt vorgegeben, um nicht immer über Twitter die Vorgabe machen zu müssen. Dabei ergibt:
{„cmd“:“set_pixel_hex“,“value“:“#0000FF“} Violett statt Blau
{„cmd“:“set_pixel_hex“,“value“:“#00FF00″} Gelb statt Grün
{„cmd“:“set_pixel_hex“,“value“:“#FF0000″} Rot, was korrelt ist
{„cmd“:“set_pixel_hex“,“value“:“#000000″} Rot aber dunkler als oben (LED sollte aus sein)
Es lässt sich also Rot nie ganz abschalten.
Aber jetzt kommts: Wenn man eine Farbe wählt, z.B. Grün, und das NodeESP-Board eine Weile von der Versorgungsspannung trennt, dann wird auch die korrekte Farbe angezeigt. Das ist aber nur einmalig nach dem Power-Up. Wenn dann wieder eine Farbe vorgegeben wird (auch wenn es dieselbe Farbe ist), wird wieder rot dazugemischt.
FK: KÖNNTEST DU BITTE DIE FIRMWARE UNTERSUCHEN.
Vielleicht ist es ja wieder der Card-Reader (z.B. ein Interrupt, der dazwischen funkt). Die Cheerlights sind wirklich eines meiner Lieblings-Experimente aus dem Kalender (ein NanoESP ist damit im Dauereinsatz), und Weihnachten möchte ich die Experiemte noch mal mit neinem Neffen durchspielen. Ich wäre dir wirklich sehr dankbar. Bitte schaue auch gleich auf die anderen Experimente, die die PL9823 RGB-LED verwenden. Wahrscheinlich, dass dort das gleiche Problem besteht.
Übrigens: Die Farben, die diese PL9823 RGB-LED darstellt, sind wirklich wunderbar – eine optimale Abstimmung der 3 internen LEDs, was ja bei den „einfachen“ LEDs nur duch optimale Abstimmung der unterschiedlichen Vorwiderstände gelingt.
Lieben Gruß
Äd
Eine Reaktion auf den hier nachgewiesenen FEHLER IM FIRMWARE-UPDATE (s.o.) wäre sehr schön.
Lieben Gruß,
Äd
Die mit ausgelieferte Firmware hatte bei mir auch den „rot“ Effekt. Ein neu Builden des aktuellen Repos und flashen hat geholfen, nun funktioniert es wie es soll.
Lieben Dank, Santa. Das sind sehr gute Nachrichten.
Allerdings, ich arbeitet bisher beim ESP nur mit der Arduino IDE, und mir ist nicht wirklich klar, wie ich die Firmware generiere. Vermute, ich brauche dazu die ESP-IDF, oder? Ok, das dürfte auch kein Problem sein; muss man sich halt einarbeiten. Mit Repos meinst du dies https://github.com/FKainka/NodeESP_Firmware, oder?
Wo finde ich die Infos, um den Build zu machen?
Oder kannst du die HEX-Datei zur Verfügung stellen?
Nochnals, herzlichen Dank.
Lieben Gruß
Äd
Hallo Äd, leider gab es beim unteren Post keinen Link zum Antworten…
Die Instruktionen zum Build habe ich unter https://pastebin.com/uPu8cSzD abgelegt. Meine Entwicklungsumgebung ist Ubuntu 18.04, unter Windows sollte es aber ähnlich laufen.
Hallo Santa,
herzlichen Dank für deine Hilfe.
Denke, habe das Wesentliche verstanden, werde es bei der nächsten ruhigen Minute ausprobieren. Bin auch gespannt, wie’s unter Windows geht.
Gute Gelegenheit, mal nicht alles nur über die Arduino IDE zu machen :)
Liebe Grüße,
Äd
DAU kommt mit dem Schaltplan nicht klar: 16E, 17H, 18H, 19H?
weiter unten das bild von paulaner zur diode ist hilfreich (DIN = Data In)
Vielen Dank!
{„created_at“:“2018-12-29T15:37:06Z“,“entry_id“:499571,“field2″:“#FF0000″}
Mit angepasster Farbe auf eigenem webspace ablegen und http-Request-Node anpassen sollte eigentlich klappen
Das Setzen der Farben über Twitter funktioniert. Den Aufwand mit dem Twitter Developer Account habe ich nicht betrieben, weshalb das Vorlesen und Anzeigen der Tweets nicht funktioniert. Muss aber auch nicht :-)
Puh – jetzt hab ichs geschafft mit dem Twitter Node.
Habe meinen Twitter Account auf einen Developer Account umdefiniert und danach eine App erstellt und ein Developer Environment erstellt.
Das ist ein wenig mühsam da man beschreiben muss was die App macht und wozu man sie braucht
aber es war keine Rocketscience.
Danach bekommt man die App Credentials angezeigt – also den API key und den Access token und Access token secret.
Das alles habe ich in den Twitter Node eingetragen.
Den Twitter ID hab ich leer gelassen, da schreibt er dann selber etwas rein.
Seit dem bekomme ich Tweets im Debug Fenster zum Thema „cheerlights“.
Die Sprachausgabe funktioniert noch nicht. Die bleibt still.
Viele Grüße
Martin Klein
Hallo,
auch der Hinweis das sich etwas geändert hat bei den Twitter-nodes und es ab dem 12.06.2018 nicht ohne Update funktioniert brachte nicht den erhofften Erfolg.
Zitat:
If you don’t update, you’ll no longer be able to use Twitter after June 12th 2018.
Die installierte Version ist die Neuste 1.1.4., 2 Monate alt.
Einzig ‚Twitter credentials‘ ist geghostet und nicht verwendet?
Danke für Hilfe
Hallo,
im Net hab ich gelesen das Problem, missing twitter credentials‘ soll mit verschiedenen Browsern/Versionen auftauchen.
Mit Chrom soll es gehen.
Nun zu meinen Versuche mit Firefox, Chromium und Explorer.
Zu ersteren habe ich die Probleme beschrieben.
1. keine Audioausgabe (Device funktioniert)
2. kein Text wird vorgelesen (vorlesen funktioniert wenn man die Verbindung z.B. an http Request koppelt)
3. Debug Meldung (missing twitter credentials)
Chromium:
alle Fehler außer Nr.3, es erscheint keine Debug Meldung
es werden auch sonst keine Debug Ausgaben gemacht
IE:
1. Audio funktioniert nicht, kann nicht geladen werden, angeblich ‚fehlerhafte Konfiguration‘
2. auch keine Textausgabe
3. keine Debug Ausgaben
Was kann ich noch tun?
Wer hat das auch und welche Konfiguration?
Bei wem funktioniert es, welche Konfiguration.
Danke
Meine LED hat es beim Einstecken zerfetzt o_O
mechanisch oder elektrisch?
Gibts für billig Geld bei jedem Anbieter.
100 Stück beim Chinesen 9€.
Meine auch. Ich hatte sie verkehrt herum eingesteckt. Sie Anleitung:
„So wird die PL9823 richtig angeschlossen (lange Beinchen rechts)“
Das hatte ich überlesen. Im Fenster 24 ist noch eine und auf Amazon kann man sie nachbestellen.
Dann richtig eingesteckt und alles funktioniert.
Viele Grüße
Martin Klein
Tja, hätte ich mal vorher hier reingeguckt… reihe mich leider ein in den Club der DAU: Verkehrt herum gesteckt.
Mechanisch zerfetzt. Und wenn ich zerfetzt sage, dann meine ich wirklich Geschoß vom Kaliber 5mm. Ging am Auge vorbei, Brille sei Dank. Reflexartig nach hinten geworfen und dabei noch den Drucker heruntergerissen.
Geraucht hats hinterher auch.
Das war nun wirklich kein Versuch zum Nachmachen.
Eine fette Warnung im Text wäre hilfreich beim nächsten Mal…
Bei mir funktioniert die selbstständige Änderung der LED Farbe nicht,
das LED leuchtet kurz beim Einschalten/Reset Blau auf und schaltet sich danach wieder ab.
so bleibt es dann obwohl der Flow die Farben im Debug Fenster anzeigt und auch MQTT mit meiner id auf fkainka.de verbunden ist Dunkel.
(Firmwareupdate habe ich auch schon durgeführt )
Ich benutze ein Raspberry PI als Node-RED Server
für Hilfe hierbei währe ich dankbar
Hatte ich auch. Ich hab vergessen in der ganz rechten Node (NoedeESP) den string [PID] mit meinem MQTT Identifier zu ersetzen.
Viele Grüße
Martin Klein
Hallo Martin,
Die ID hatte ich schon eingetragen, bekomme auch die Nachrichten im debug Fenster.
Jedoch Danke für deine Antwort
Hallo,
im twitter-node ist ja ‚@DonElVino‘ eingetragen, wenn ich den Flow deployed habe, bekomme ich eine Meldung
„missing twitter credentials“, ist das normal, emfängt dann der twitter node irgendwas?
Ich kann nichts debuggen, nichts lesen und auch nichts hören.
Auxh mit meiner eigenen twitter ID der gleiche Fehler.
auch steht nichts darunter das er nach cheerlights sucht, wie im Bild des Flows.
Hallo,
ich beantworte mal meine Fragen selbst.
Der Eintag sollte mit @DonElVino, also fk. seinem Account gehen, als auch mit dem eigenen.
Fehlermeldung kommt aber bei beiden Einträgen.
Debuggen nur die Fehlermeldung, lesen und hören nix.
Blaues Zeichen unter Twitter Node mit cheerlights nix.
Schaltet aber trotzdem die Farben!
Der Audio-Out Node arbeitet bei mir nicht. Fehlermeldung: „Error: Not allowed“ (der Rest funktioniert, also Twitter-Nachricht wird angezeigt.)
Hat jemand eine Idee?
Vielen Dank, Peter
Eventuell Browser-Problem? Diese Fehlermeldung hatte ich bei den früheren Experimenten auch. Bei mir lag es am Browser (Chrome, Edge). Erst mit dem Firefox unter Windows 10 hat es dann mit dem Audio-Out funktioniert.
Ich hab in den Twitter Node meine Twitter ID eingetragen. Aber muss ich auch eine Twitter App erstellen mit API key usw. ?
Das schaut nämlich schwierig aus ?
Viele Grüße
Martin Klein
bei twitter angemelet und einen Text rein und senden fertig.
z.B. ‚Testing my #cheerlights project on my #NodeESP with the color blue.‘
oder
#cheerlights blue
oder
#cheerlights red
red, green, blue, cyan, white, warmwhite, purple, magenta, yellow, orange, pink
Hallo,
erst einmal eine Info zum Bauelement selbst.
– 5V
– 24it RGB
– kompatible mit WS2812 LED
Dies ist KEINE normale RGB LED, diese RGB ist Controller gesteuert!!!
Es wird auch nur +5V(3v3), GND und Din benutzt!
Danke! Sehr hilfreiche Infos.
Hallo,
ich habe kein Twitter. Wie kann ich die Farbe der LEDs wechseln?
ganz einfach den Twitter-node entfernen und einen anderen im Flow einfügen (email z.B.).
nein, muss mich korrigieren, geht nicht.