Day 22: MQTT Cheerlights

Today’s trial is about MQTT and a global project that was presented last year: the Cheerlights Project by Hans Schaaler. For everyone who doesn’t know the project: It’s about globally networked coloured lights that can be simultaneously controlled through Twitter commands. Another version of this project was part of last year’s Advent calendar. This year we have the version with MQTT and expanded functions.

Behind today’s door is a 1-kohm resistor. The layout consists of the RGB LED with series resistors and a button.

Aufbau der RGB-LED mit Button

Todays layout

Download today’s programme. Before you can transfer the programme to the NanoESP, you have to install a library. This is the Crossfade library by Radek Wierzbicki (source: https://github.com/radekw/Arduino/tree/5f24ce7c8db9dfbb5252b59824c3217d851b3a3c). For practical reasons, a copy of the library version used is contained as a ZIP file in the Sketch folder. You can easily add integrate this through the Library Manager in the Arduino IDE by selecting the ZIP directory in the Sketch folder Sketch > Integrate library > Integrate .ZIP library. Now the programme compiles, and you can upload it to the NanoESP

After uploading the programme, now go back to the site www.hivemq.com/try-out/ and establish a connection to the broker.fkainka.de broker. There, with the topic

NanoESP/MyMQTTiD/rgb/mode

you can switch the mode between Cheerlights and personal colours by publishing a 1 or a 0. It’s important that for all messages you activate the Retain check box before you send the message with the Publish button next to it on the right. Retain means something like Save because the broker stores the message. Now, as soon as a device subscribes to the topic, the saved message is sent in its entirety to the device. You can thus save states. Incidentally, the button on the breadboard likewise switches the mode using a message with Retain flag. So later on, you don’t always have to go to the Try Out site to switch the mode.

In personal mode (mode 0), you can give the RGB LED a colour by publishing a message in the topic

NanoESP/MyMQTTiD/rgb/color

in the form

rgb(X,X,X)

The X stands here respectively for a PWM value between 0 and 255. The sequence of colours is red, green, blue. So for a green colour with maximum brightness, you have to publish

rgb(0,255,0)

Don’t forget to check the Retain box.

In Cheerlights mode (mode 1), the board subscribes to a topic to which the current Cheerlights colour is published. You can change this colour by composing a Twitter message and thereby changing your colour and also the colour of all other Cheerlights users. First, the message must contain #Cheerlights, @Cheerlights or simply the keyword Cheerlights; second, one of the predefined colours must come after the keyword. The predefined colours include:

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

A potential tweet thus looks like this:

Testing my #cheerlights #MQTT project on my #NanoESP with the color blue

You thereby give yourself and the whole world a new colour. But if you prefer your personal colours without someone else butting in, simply switch back to the personal mode, and now the LED changes back to your predefined colour.

31 Comments

  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

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

      Reply
    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

      Reply
      1. Jürgen

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

        Reply
  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?

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

    Reply
  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

    Reply
    1. Jens

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

      Reply
      1. Jens

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

        Reply
  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? :/

    Reply
    1. Daniel

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

      Reply
      1. Daniel

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

        Reply
      2. Philipp

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

        Reply
  6. Michel2016

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

    Reply
  7. Flo

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

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

    Reply
  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

    Reply
  10. Chris

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

    ;-)

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

    Reply
  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

    Reply
    1. prisma01

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

      Reply
    2. Steve

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

      Reply
  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?

    Reply
    1. prisma01

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

      Reply
      1. prisma01

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

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

          Reply
          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

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

        Reply
        1. Leon

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

          Reply
    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).

      Reply

Leave a Comment

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