Day 19: CheerLights

Today we have a very special LED waiting behind the door. It is an RGB LED with integrated controller (type PL9823, equivalent to WS2812) and with it you can now connect several LEDs in series and control them individually by means of a protocol. Today we will start by controlling one LED only. Here, an experiment that is almost customary in my Advent calendars fits in handy: the CheerLights project by Hans Schaaler. For all those who do not yet know the project: these are globally linked colourful lights which can be controlled simultaneously via Twitter commands. And here Node-RED fits in very well. The experiment today requires the following setup besides the program of today.

So wird die PL9823 richtig angeschlossen (lange Beinchen rechts).

A proper connected PL9823 (long legs right)

The LED is controlled by a set of commands. It is activated by the term Pixel. But first and foremost, we will learn today how we control all LEDs of the same colour as we are dealing with only one LED. In one of the coming experiments we will explain all the commands that can be used for assigning individual colours to the LEDs.

Command in topic Settings
{“cmd”:”set_pixel_hex”,”value”:”#FFFFFF”} Sets all LEDs to the HEX colour value.
{“cmd”:”set_pixel_rgb”,”value”:”rgb(255,255,255)”} Sets all LEDs to the RGB colour value.
{“cmd”:”set_pixel_hsv”,”value”:”hsv(120, 100%,100%)”} Sets all LEDs to the HSV colour value.
{“cmd”:”get_pixel_hex”} Displays current colour in the appropriate format, returns automatically when a colour is set.
{“cmd”:”get_pixel_rgb”}
{“cmd”:”get_pixel_hsv”}

The CheerLights project has a website (https://cheerlights.com/) where you can get some information about the project. Moreover, one of the subpages, Cheerlights API, has a bunch of options of how to obtain the actual colour value. We are using here the interface http://api.thingspeak.com/channels/1417/field/2/last.json which offers the current value as JSON value and in HEX format.

Der heutige Flow

Today’s Flow

In terms of today’s flow, we just need to refresh this page every few seconds and extract the current value. It checks, if the value has changed. If so, the new colour is sent to the board. You can also configure the Twitter node with your Twitter data, if you have a Twitter account. The node will search for tweets with cheerlights text and reads the message to the GUI, where it is displayed.

But how can you change the colour?  That is simple. Publish a Twitter message and by that change your colour and the colour of all other Cheerlights users. Basically, the message must contain #Cheerlights, @ Cheerlights or just the keyword Cheerlights followed by one of the predefined colours. The predefined colours include:

red, green, blue, cyan, white, warm white, purple, magenta, yellow, orange, pink

A tweet could look like this:

Testing my #cheerlights project on my #NodeESP with the colour blue.

And by that you have just given yourself and the world a new colour.

35 Comments

  1. Äd Franzis

    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

    Reply
    1. Äd Franzis

      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?

      Reply
    2. Äd Franzis

      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

      Reply
      1. Äd Franzis

        Eine Reaktion auf den hier nachgewiesenen FEHLER IM FIRMWARE-UPDATE (s.o.) wäre sehr schön.

        Lieben Gruß,
        Äd

        Reply
        1. Santa

          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.

          Reply
          1. Äd Franzis

            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

      2. Santa

        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.

        Reply
        1. Äd Franzis

          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

          Reply
  2. nochsoeiner

    DAU kommt mit dem Schaltplan nicht klar: 16E, 17H, 18H, 19H?

    Reply
    1. arra

      weiter unten das bild von paulaner zur diode ist hilfreich (DIN = Data In)

      Reply
      1. nochsoeiner

        Vielen Dank!

        Reply
  3. arra

    {“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

    Reply
  4. Bernd

    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 :-)

    Reply
  5. Martin Klein

    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

    Reply
  6. paulaner

    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

    Reply
  7. paulaner

    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

    Reply
  8. Magdalena

    Meine LED hat es beim Einstecken zerfetzt o_O

    Reply
    1. paulaner

      mechanisch oder elektrisch?

      Gibts für billig Geld bei jedem Anbieter.
      100 Stück beim Chinesen 9€.

      Reply
    2. Martin Klein

      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

      Reply
    3. Bernd1

      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…

      Reply
  9. Daniel G.

    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

    Reply
    1. Martin Klein

      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

      Reply
      1. Daniel G

        Hallo Martin,

        Die ID hatte ich schon eingetragen, bekomme auch die Nachrichten im debug Fenster.

        Jedoch Danke für deine Antwort

        Reply
  10. paulaner

    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.

    Reply
    1. paulaner

      auch steht nichts darunter das er nach cheerlights sucht, wie im Bild des Flows.

      Reply
    2. paulaner

      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!

      Reply
  11. Peter

    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

    Reply
    1. Bernd

      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.

      Reply
  12. Martin Klein

    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

    Reply
    1. paulaner

      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

      Reply
  13. paulaner

    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!

    Reply
    1. Abu Kali

      Danke! Sehr hilfreiche Infos.

      Reply
  14. Michael

    Hallo,
    ich habe kein Twitter. Wie kann ich die Farbe der LEDs wechseln?

    Reply
    1. paulaner

      ganz einfach den Twitter-node entfernen und einen anderen im Flow einfügen (email z.B.).

      Reply
      1. paulaner

        nein, muss mich korrigieren, geht nicht.

        Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.