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.

27 Comments

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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.