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.
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.
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
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.
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
Danke für den Tipp, damit klappt es heute.
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?
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!
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
Hmmm hab das gleiche Problem. Persönliches Topic geht, aber CHeerlights sind immer nur Magenta…
muss wohl ein Problem mit der Integration vom CHeerlights channel zum broker sein nehm ich an :-) Frohe Weihnachten ich geh jetzt schlafen.
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? :/
die sollte in entpackten Ordner von A16_P22_MQTT_Cheerlights.zip drin sein.
da druff klicken und entpacken… darin findest du die RGBLED.zip
vielen dank ich war nur verwirrt wegen dem Link. Hat geklappt :)
hab noch rausgefunden wie es geht, funktioniert super, z.Z ändert sich die Farbe alle paar Minuten ;-)
Sehr schöne Idee! Ich hoffe nur, dass die Community von Cheerlights noch ein bisschen aktiver wird :)
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 :-)
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
http://cheerlights.com/live/ — wenn euch die kleine LED nicht reicht, könnt ihr diesen Baum einfärben :-)
;-)
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.
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
Du solltest Dich mit „broker.fkainka.de“ verbinden, im Skript auf Zeile 81 wird der ja auch verlangt…
Probiere den Broker „broker.fkainka.de“ von Tag 20.
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?
habe jetzt bei github diese .zip runtergeladen:
Arduino-5f24ce7c8db9dfbb5252b59824c3217d851b3a3c.zip
da scheint keine gültige Library drin zu sein…
es handelte sich wohl um die rgbled.zip. habs gefunden…
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 :-)
welche rgbled.zip wenn ich fragen darf ? ich habe nämlich das selbe problem das keine bibothek gefunden wird :/
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
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.
Puhh,danke das du´s gesagt hast habs auch vergessen und war schon wieder fast am verzweifeln,jetzt geht es aber Astrein!
;-)
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).