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.

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

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

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.

Der heutige Flow

Der heutige Flow

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.

27 Kommentare

  1. nochsoeiner

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

    Antworten
    1. arra

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

      Antworten
      1. nochsoeiner

        Vielen Dank!

        Antworten
  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

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

    Antworten
  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

    Antworten
  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

    Antworten
  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

    Antworten
  7. Magdalena

    Meine LED hat es beim Einstecken zerfetzt o_O

    Antworten
    1. paulaner

      mechanisch oder elektrisch?

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

      Antworten
    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

      Antworten
    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…

      Antworten
  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

    Antworten
    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

      Antworten
      1. Daniel G

        Hallo Martin,

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

        Jedoch Danke für deine Antwort

        Antworten
  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.

    Antworten
    1. paulaner

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

      Antworten
    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!

      Antworten
  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

    Antworten
    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.

      Antworten
  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

    Antworten
    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

      Antworten
  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!

    Antworten
    1. Abu Kali

      Danke! Sehr hilfreiche Infos.

      Antworten
  13. Michael

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

    Antworten
    1. paulaner

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

      Antworten
      1. paulaner

        nein, muss mich korrigieren, geht nicht.

        Antworten

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.