Tag 22: MQTT Cheerlights

In dem heutigen Versuch geht es um MQTT und um ein globales Projekt, das auch letztes Jahr vorgestellt wurde: nämlich 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. Eine andere Version dieses Projekts war Teil des letztjährigen Adventskalenders. Dieses Jahr gibt es die Version mit MQTT und erweiterten Funktionen.

Hinter dem heutigen Türchen befindet sich ein Widerstand mit 1 kOhm. Der Aufbau besteht aus der RGB-LED mit Vorwiderständen und einem Taster.

Aufbau der RGB-LED mit Button

Aufbau der RGB-LED mit Button

Laden Sie das Programm des heutigen Tages herunter. Bevor Sie das Programm aber auf den NanoESP übertragen können, müssen Sie zunächst eine Library installieren. Es geht um die Crossfade-Library von Radek Wierzbicki (Quelle: https://github.com/radekw/Arduino/tree/5f24ce7c8db9dfbb5252b59824c3217d851b3a3c). Aus praktischen Gründen ist eine Kopie der verwendeten Library-Version als Zip-Datei im Sketchordner enthalten. Diese können Sie einfach über den Library Manger in die Arduino IDE einfügen, indem Sie unter Sketch-> Bibliothek einbinden -> .Zip-Bibliothek einbinden das Zip-Verzeichnis im Sketchordner auswählen. Nun kompiliert das Programm und Sie können es auf den NanoESP hochladen.

Nach dem Hochladen des Programms gehen Sie nun wieder auf die Seite www.hivemq.com/try-out/ und bauen eine Verbindung zu dem Broker broker.hivemq.com auf. Dort können Sie mit dem Topic

NanoESP/mqttId /rgb/mode

den Modus zwischen Cheerlights und persönlicher Farbe wechseln, indem Sie eine 1 oder eine 0 publishen. Wichtig ist, dass Sie bei allen Nachrichten die Retain-Checkbox aktivieren bevor Sie die Nachricht mit dem Publish-Button rechts daneben abschicken. Retain bedeutet so etwas wie Behalten, denn der Broker behält die Nachricht gespeichert. Sobald ein Gerät nun das Thema subscribed, wird die gespeicherte Nachricht umgehend an das Gerät übermittelt. Sie können damit also Zustände speichern. Der Button, der sich auf dem Steckboard befindet, schaltet übrigens ebenfalls den Modus über eine Nachricht mit Retain-Flag um. Sie müssen später also nicht immer zur Try-Out Seite um dem Modus umzuschalten.

Im persönlichen Modus (mode 0) können Sie der RGB-LED eine Farbe verpassen, indem  Sie im Topic

NanoESP/mqttId /rgb/color

eine Nachricht nach der Form

rgb(X,X,X)

publishen. Das X  steht hier jeweils für einen PWM-Wert zwischen 0 und 255. Die Reihenfolge der Farben ist rot, grün, blau. Für eine grüne Farbe mit maximaler Helligkeit müssen Sie also

rgb(0,255,0)

publishen. Vergessen Sie nicht die Retain-Box zu aktivieren.

Im Cheerlights Modus (mode 1) subscribt das Board zu einem Topic, zu dem die aktuelle Cheerlights-Farbe veröffentlicht wird. Sie können diese Farbe verändern, 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 eine der vordefinierten Farben hinter dem Stichwort stehen haben. 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 #MQTT project on my #NanoESP with the color blue

Damit geben Sie sich und der ganzen Welt eine neue Farbe. Falls Sie aber ihre persönliche Farbe bevorzugen, ohne dass jemand dazwischen funkt, schalten Sie einfach wieder auf den  persönlichen Modus um und schon wechselt die LED wieder zu ihrer vordefinierten Farbe.

31 Kommentare

  1. Martin Klein

    Vor zwei Tagen hat der „Cheerlights“ Modus noch funktioniert. Jetzt kommt immer nur „magenta“ zurück – obwohl die richtige Farbe die ich ja im „Live“ Fenster der Cheerlights Seite sehe ganz anders ist.
    Irgendetwas klappt nicht mehr mit dem Broker. Der sollte das doch richtig rüberholen. Ist dort irgendetwas nicht mehr gestartet ?

    Vielen Dank
    Martin Klein

    Antworten
    1. Max

      Seit dem 23.12. wird der jkainka-broker „zugeballert“ mit climate-Messdaten, die zig-Leute zig-mal pro Sekunde übertragen (war ein echt Super-Sketch an dem Tag :-(.
      Abonniert mal das topic NanoESP/# und staunt.
      Da kommt der Server wohl nicht mehr dazu sein Info/Cheerlights-topic zu aktualisieren und liefert nur noch magenta.

      Antworten
    2. Martin Klein

      Habe jetzt eine einfache Umgehung gefunden. Mit identischem Aufbau einfach das Programm aus dem Vorjahr Tag 23 hochladen. War ja auch ein“Cheerlights“ das aber mit einem anderen Broker – dem „thingspeak“ – arbeitet.
      Das funktioniert perfekt. Man kann auch – im laufenden Betrieb – die 9V Batterie anstecken und USB abstecken dann arbeitet das ganze mit der Batterie weiter.

      Viele Grüße
      Martin

      Antworten
      1. Jürgen

        Danke für den Tipp, damit klappt es heute.

        Antworten
  2. Burkhard

    Jetzt dreht der arme Broker broker.fkainka.de (damit hat das Bord heute reagiert)wohl am Rad. Ohne dass ich etwas ändere an Bord, Twitter oder Website, springt der serielle Monitor nur so zwischen Personal… und Cheerlights hin und her. WAS IST HIER LOS?

    Antworten
  3. Burkhard

    Als ich das am 22. probierte, funktionierte es auf Anhieb. Seit gestern geht der Farbwechsel nur noch manuell, als ob das Bord nicht mehr auf den Broker „hört“. Ich kann ja die Progs vom 18. und 23. nicht kompilieren… Nun verliere ich doch allmählich die Lust: Steckbrett wenig geeignet, besonders für die dünnen Anschlußdrähtchen; Poti1 ohne Beinchen wegen „zu straff siegte gegen zu zart“ (Poti2 gerettet durch Punktrasterzwischenstück…) zwei Programme verweigern die Kompilierung. Hoffentlich wird Ostern schöner!

    Antworten
  4. Thomas

    Hallo zusammen,

    die Anwendung auf meinem Breadboard funktioniert heute perfekt. Aber die Queue enthält für die Farbe des Cheerlight immer und nur magenta?

    Viele Grüße
    Thomas

    Antworten
    1. Jens

      Hmmm hab das gleiche Problem. Persönliches Topic geht, aber CHeerlights sind immer nur Magenta…

      Antworten
      1. Jens

        muss wohl ein Problem mit der Integration vom CHeerlights channel zum broker sein nehm ich an :-) Frohe Weihnachten ich geh jetzt schlafen.

        Antworten
  5. Philipp

    Kann mir jemand zu später Stunde vielleicht nochmal mit dem nicht finden der Bibiothek helfen ?

    Arduino: 1.6.13 (Windows 10), Board: „Arduino Nano, ATmega328“

    Angegebener Ordner/ZIP-Datei enthält keine gültige Bibliothek

    Was mache ich falsch? :/

    Antworten
    1. Daniel

      die sollte in entpackten Ordner von A16_P22_MQTT_Cheerlights.zip drin sein.

      Antworten
      1. Daniel

        da druff klicken und entpacken… darin findest du die RGBLED.zip

        Antworten
      2. Philipp

        vielen dank ich war nur verwirrt wegen dem Link. Hat geklappt :)

        Antworten
  6. Michel2016

    hab noch rausgefunden wie es geht, funktioniert super, z.Z ändert sich die Farbe alle paar Minuten ;-)

    Antworten
  7. Flo

    Sehr schöne Idee! Ich hoffe nur, dass die Community von Cheerlights noch ein bisschen aktiver wird :)

    Antworten
  8. Michel2016

    okay, scheint zu funktionieren, meine LED leuchte grün. Taster geht auch, 1 und 0 kann ich senden. Aber wie mach ich das jetzt in Twitter? bin anscheinend zu blöd… Würde mal gerne die Farbe der LED in blau wechseln :-)

    Antworten
  9. Alan_the_H4cK3R

    Ja!!! Endlich kommt das CheerLights! Hatte schon Angst das kommt dieses Jahr nicht mehr dran :)

    P.S.: Funktioniert bei mir PERFEKT, ohne Probleme, beim ersten Anlauf.

    LG,
    Alan

    Antworten
  10. Chris

    http://cheerlights.com/live/ — wenn euch die kleine LED nicht reicht, könnt ihr diesen Baum einfärben :-)

    ;-)

    Antworten
  11. Steve

    Im Script des heutigen Tages ist die Datei RGBLED.ZIP dabei. Wenn Du alles per download auf deinen Rechner holst, dann kannst Du diese ZIP auswählen.

    Antworten
  12. David

    Hallo zusammen
    Ich haben ein kleines Problem. Immer wenn ich mich mit dem Boker „broker.hivemq.com“ verbinden will, kommt immer der gleiche Fehler, nähmlich „AMQJSC0001E Connec Timed out“.
    Ich bitte sie um Hilfe
    Danke im Voraus
    VSIA

    Antworten
    1. prisma01

      Du solltest Dich mit „broker.fkainka.de“ verbinden, im Skript auf Zeile 81 wird der ja auch verlangt…

      Antworten
    2. Steve

      Probiere den Broker „broker.fkainka.de“ von Tag 20.

      Antworten
  13. prisma01

    Hmmm, nachdem Tag 21 schon nicht geklappt hat (der Alarm ging gar nicht aus, Messages kamen weder im Broker noch im Nano an, ein Beinchen vom Tiltsensor hat sich in das Gehäuse zurückgezogen, selbst der serielle Monitor stoppt irgendwann usw) gehts jetzt heute genauso weiter:

    Zitat „Es geht um die Crossfade-Library von Radek Wierzbicki (Quelle: https://github.com/radekw/Arduino/tree/5f24ce7c8db9dfbb5252b59824c3217d851b3a3c). Aus praktischen Gründen ist eine Kopie der verwendeten Library-Version als Zip-Datei im Sketchordner enthalten. “

    hab weder eine passende .zip im gesamten Arduino Verzeichnis gefunden noch bei ardekw das passende Teil. Es gibt nix mit Namensteilen wie github, ardek w oder crossfade…

    wie heisst denn die Library genau? wo kann ich sie finden?

    Antworten
    1. prisma01

      habe jetzt bei github diese .zip runtergeladen:
      Arduino-5f24ce7c8db9dfbb5252b59824c3217d851b3a3c.zip
      da scheint keine gültige Library drin zu sein…

      Antworten
      1. prisma01

        es handelte sich wohl um die rgbled.zip. habs gefunden…

        Antworten
        1. prisma01

          jetzt klappt es sehr schön, fliessende Übergänge, allerdings scheint meine LED etwas blaulastig zu sein, alle 3 Farben auf 255 gibt eher ein helles Blau als ein weiss, aber es funktioniert :-)

          Antworten
          1. Philipp

            welche rgbled.zip wenn ich fragen darf ? ich habe nämlich das selbe problem das keine bibothek gefunden wird :/

    2. Bernd

      Tja, irgendwas funktioniert immer nicht:
      also cheerlight – cyan steht im monitor und das sieht wohl so blaustichig weiss aus.
      Wenn ich 0 publiziere und danach ein rgb tripel tut sich nichts und taucht auch nicht im monitor auf. nach ein paar versuchen war dann schluss:
      Unsubscribed from Cheerlights
      Max subscribe handler reached
      Personal light mode

      Antworten
      1. Bernd

        jetzt klappts, vergessen /mode in /color zu ändern (im topic field.
        den Twitter Teil schenke ich mir, da ich keine intentionen habe mich da anzuschliessen.
        Aber ich sehe Volk ist emsig dabei die cheerlight Farbe zu ändern.
        weiterhin viel Spass dabei.

        Antworten
        1. Leon

          Puhh,danke das du´s gesagt hast habs auch vergessen und war schon wieder fast am verzweifeln,jetzt geht es aber Astrein!
          ;-)

          Antworten
    3. Bernd

      Ich mach das so (windows 10):
      program runterladen (steht dann links unten) – öffnen, dann findet man sich im filhantierer (oder wie immer das programm jetzt heisst). Ich kopiere die Bibliotek nach „Dokumente / Arduino“
      Und von da kann man beim Einbinden aufrufen.
      Ansonsten öffne ich da und doppelkicka das Arduino program (kein einbinden nötig).

      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.