Fhem mit LED Statusanzeige / LED-Stripe WD2812B / ESP 8266

Update 29.11.2016 Ich hätte nicht gedacht, das die Status-Anzeige von so vielen nachgebaut wird. Ich habe vom Blog-Leser Dirk, der sich auch mit der Thematik beschäftigt hat, eine modifizierte Version bekommen. Ich stelle sie hier jetzt mal weiter unten ungeprüft in dem Beitrag ein.

[sgmb id=“1″]

Update 06.08.2016 Beispiel-Bilder von Blog-Lesern
LED-Rahmen mit ESP 8266 WeMos

LED-Rahmen mit ESP 8266 WeMos

„Alle guten Dinge sind drei“ heißt ein bekanntes Sprichwort. Nachdem ich für Fhem LED Statusanzeigen mit LED – Stripes vom Typ 2812 B gebaut habe, kam öfter das Feedback, ob es nicht noch einfacher gehen würde.

Nochmal zur Erinnerung: Das LED Stripe wird in einem einfachen Bilderrahmen geklebt und je nach Stripe-Länge kann es mehrere Zustände in verschiedenen Farben anzeigen.

LED - Stripe für Fhem, gesteuert von einem WeMos

LED – Stripe für Fhem, gesteuert von einem WeMos

Die Zustands-Daten kommen alle vom Hausautomation-Server Fhem und können auf 8 unterschiedlichen WD2812 B LEDs angezeigt werden. Es können auch mehr LEDs verwendet werden, jedoch ist hier eine bessere Spannungsquelle und eine andere Beschaltung notwendig.

Beispiele:
Wann wird die gelbe Tonne geleert?  Morgen : LED = gelb , Heute : LED = Rot oder nächste Woche = LED = aus

Regnet es draußen: LED = rot, sonst aus

Ist das Fenster offen: LED = rot, sonst aus

Hat ein PIR (Bewegungsmelder) angeschlagen: LED = rot, sonst aus

Habe ich erhöhte Verkehrsdichte zu erwarten (Google verkehr): LED = gelb (mittelmäßig), LED = rot (Stau)

Ist die Tempertur unter 0 Grad gefallen: Ja, LED = blau, sonst aus

Hier kann ich wieder die Vorteile von Fhem wiederholen. Es gibt Plugins für Abfall, Verkehr usw. Man kann einmal eingerichtete Sensoren abfragen, z. B. Lacrosse, oder auch Daten, die über MySensors Sensoren kommen. Fhem ist offen für alles. Die LED-Farben könnt ihr selber bestimmen durch das Mischen der Farbwert Rot, Grün Blau.

Neuer Übertragungsweg:
Nachdem ich im ersten Blogbeitrag zum Thema LED-Bilderrahmen einen 433 MHz Sender + Empfänger genommen habe, welche bei mir immer noch im Live System aktiv ist (-> siehe Blogbeitrag), habe ich bei meinem zweiten Bilderrahmen für meine Testumgebung einen LED-Bilderrahmen mit der MySensors-Technologie gebaut (-> Siehe Blogbeitrag). Der Nachteil dieser beiden Übertragungswege ist, das man sich extra einen Empfänger (433 MHz oder ein Gateway) anschaffen muss, um diese beiden Bilderrahmen zu bedienen. Blog-Leser, welche fleißig meine Sensoren nachbauen, haben bestimmt auch viele MySensors Module (Temperatur, PIR, Regensensor) etc. im Einsatz.

Die dritte Methode, die ich Euch heute vorstelle, nutzt die Palette der ESP 8266 Module.
Bei dieser Art werden die Daten über WLAN übertragen, der LED-Bilderrahmen nimmt über WLAN die Daten von Fhem entgegen. Ich habe vor einiger Zeit einiges über die 8266-Module geschrieben, z. B. WeMos oder NodeMCU.

Ein zweiter Vorteil dieser WLAN – Technik ist, das es sehr viele ESP-8266 Module gibt. Das fängt mit dem ESP 8266-01 an, geht über ESP 8266-07 usw. Ihr könnt auch einen NodeMCU nehmen, oder auch ein WeMos Baustein. Ein Witty-Board (-> Blog-Beitrag)  tut es auch.

Außerdem ist auf dem NodeMCU, WeMos oder Witty ein USB Anschluß drauf, welcher auch über ein Spannungsregler dem Basis-Baustein ESP 8266 die notwendige stabile 3.3 V Spannung gibt. Die 5 V greift ihr an einem 5 V pin ab. Und nehmt auch ein 1.5 A 5 V Netzteil. Ich würde auch empfehlen, nicht mehr als 8 LEDs als Anzeige zu nehmen. Ansonsten müsst ihr über noch eine extra Schaltung bauen.

LED-Stripe für Fhem, eine Auswahl von 8266 Modulen, NodeMCU, ESP 01

LED-Stripe für Fhem, eine Auswahl von 8266 Modulen, NodeMCU, ESP 01

Software:
Blog-Leser Thomas hat mir ein Script geschickt, welches man mit der Arduino Software auf dem ESP8266 kopieren muss. Da es, wie oben erwähnt, sehr viele Module mit ESP8266 Bausteine gibt, gehe ich jetzt nicht auf das Flashen ein.
Ich kann hier ein schönes kostenloses  e-Book empfehlen (englisch):  Kolban’s Book on ESP 8266
Ich habe für mein Beispiel einen WeMos genommen, welchen wir einfach programmieren können. Nachdem wir das Script vom Thomas angepasst haben (SSID, Passwort, Fhem-IP), kann es auch schon auf dem Baustein kopiert werden.
Auf Fhem-Seite muss ein Mosquitto-Broker installiert werden. Wie das funktioniert, wurde im Fhem-Forum erklärt.

Die notwendige Software findet ihr hier: https://github.com/tom71/MQTT/tree/master/FastLED_MQTT

Um die LEDs von Fhem aus zum Leuchten zu bringen, bedarf es im Grunde nur eine Zeile. Hier ist ein Bespiel für ein Dachfenster. Ein Dachfenster-Sensor (Schalter) funkt zu Fhem, und das kurze Skript bringt eine LED zum Leuchten

define Dachfenster_1_LED notify Dachfenster_1:.* {if
(Value("Dachfenster_1") eq "on")
{myLEDSend("Dachfenster_1","6,255,255,255");;} else
{myLEDSend("Dachfenster_1","6,0,0,0");;}}

Hier wird bei geöffnetem Dachfenster die 6. LED auf dem Stripe mit der Farbe weiß (255,255,255) (Rot Grün Blau) zum Leuchten gebracht, mit 0 0 0 wird sie ausgeschaltet.
Andere Farben sind natürlich auch möglich, auch die Helligkeit ist variabel (0 – 255).

in der globalen Datei 99_FhemUtils.pm muss noch die folgende Prozedur eingebunden werden.

sub myLEDSend($$) {
my ($dev,$led) = @_;
my $cmd = "mosquitto_pub -d -t cmnd/FastLedDisplay/rbw -m '$led'";
system( "$cmd;$cmd;$cmd" );
return undef;
}

 

Hardware:
An dem Pin 4 des Wemos (oder egal welchen Baustein) wird der Data-In von dem LED-Stripe. 5 V und Masse kann vom WeMos abgenommen werden.

Einkaufen:
WLAN-Baustein, wahlweise für Profis ESP-01 (-> amazon: ESP-01) ODER
WeMos-Baustein, einfacher zu programmieren ( -> amazon: WeMos D1 Mini),
Micro-USB-Kabel (-> amazon: USB 2 USB-Micro), ggf.
passendes Netzeil: (-> amazon: NOKIA AC-10E)
LED-Stripe WS2812B: z.b. 8 LED Stripe, auf Platine (-> amazon: RGB LED Stripe)
Oder auch sowas: WS2812 B Stripe 1m 60 LED´s mit integrierten WS2811 Controller PCB schwarz

LED-Rahmen mit ESP 8266 WeMos

LED-Rahmen mit ESP 8266 WeMos

Angebot: Ich habe noch ein 8 – LED-Stripe mit einem WeMos-Baustein hier. Falls ihr Interesse habt, für 19,95 Euro inkl. Versand gehört dieses Set Euch. Den WeMos-Baustein könnt ihr natürlich auch für etwas anderes verwenden.

Fazit: Ihr bekommt für wenig Geld und etwas Scripting einen schönen LED-Bilderrahmen, bei dem ihr durch 8 verschieden farbige LEDs alles im Blick habt. Wegen WLAN habt ihr bessere Möglichkeiten zur Positionierung des Rahmens im Haus.
Probiert es aus, für Fhem User nicht teuer und es unheimlich flexibel.

Hier noch einige Bilder vom Blog-Leser Thomas, wie sowas „mal in schön“ aussehen könnte. Er hat anstatt eines WiMos, ein ESP 8266 -01 benutzt mit einem Spannungsregler von 5 V auf 3,3 V. Meine Meinung, etwas aufwendiger, aber wenn man die Bauteile in der Grabbelkiste findet, warum nicht.

Update vom Blog-Leser Dirk vom 29.11.2016 (start):
Die Änderungen haben soweit die Auswirkung das der ESP evtl. die Wlan Verbindung nicht mehr verliert sobald dieser mehr als einmal mit dem alten Sketch programmiert wurde.
Die Client ID wird nun automatisch per Zufall erzeugt damit es eine Eindeutige ID im MQTT hat ! Und der ESP ist kein offener AP mehr !!

Es kann auch abhängig von verwendeten esp8266 lib und der verwendeten Arduino IDE sein das es mit dem alten Sketch auch rennt !
Nachzulesen ist der Bug hier ! https://github.com/esp8266/Arduino/issues/1615

Der alte Sketch lief bei mir immer 1-2 Tage danach sind die ESP´s ausgestiegen und waren im Wlan nicht mehr sichtbar . Die Led´s leuchteten weiterhin mit dem letztem Status !
Nach dem aufspielen des modifizierten Sketches habe Ich keine Probleme mehr damit und die Anzeige macht was sie soll und ohne Ausfälle ! Bis jetzt !!

Hier nochmal die Änderung in der 99_myUtil.pm in Fhem.

sub myLEDSend($$)
{
my ($dev,$led) = @_;
my $cmd = „sudo mosquitto_pub –quiet -t cmnd/FastLedDisplay/rbw -m ‚$led'“;
system( "$cmd;$cmd;$cmd" );
return undef;
}

Wenn der Befehl mit SUDO ausgeführt wird und die Debug MSG ausgeschaltet wird , Atrib. –d weglassen ,hat man keine Meldung mehr im LOG !!

Download der Datei hier:

Update vom Dirk (Ende).

Viel Spaß beim Nachbauen, und bei Fragen, fragen

LED-stripe 8266 3

ledstripe 4

Blog-Leser Jens hat mir ein Bild geschickt von einem LED-Stripe mit Acryl-Stab-Verlängerung

esp8266 LED stripes

Update 06.08.2016: Blogleser Peter hat mir ein Foto vom LED-Bilderrahmen geschickt!

LED Bilderrahmen 8266 fhem

Update 06.08.2016: Blog-Leser Dennis hat mir ein Foto von seinem LED-Bilderrahmen geschickt!

led bilderrahmen fhem 8266

 

Dieser Beitrag wurde unter Fhem-Hausautomation abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

85 Antworten zu Fhem mit LED Statusanzeige / LED-Stripe WD2812B / ESP 8266

  1. Stefan sagt:

    Hallo,
    Um noch mal auf meinen Beitrag weiter unten zurück zu kommen wenn ich mehrere WeMos mit WS2812B ansteuern will, und jeder was verschiedenes anzeigen soll, spielen da die diese Vareablen vom FastLED_MQTT.ino eine rolle?
    34 const char* inTopic = „cmnd/FastLedDisplay/rbw“;
    35 const char* outTopic = „out_fastled_display_abfall“;
    Wenn ic hdas richtig verstehe wird ja in der 99_FhemUtils.pm über MQTT genau cmnd/FastLedDisplay/rbw angesteuert. Wenn ich den 2ten WeMos mit z.B. cmnd/FastLedDisplay1/rbw und dann im 99_FhemUtils.pm hinterlege müsste ich ja über MQTT auch den 2ten WeMos gezielt ansteuern können.

    Aber was bedeutet dann 35 const char* outTopic = „out_fastled_display_abfall“; ????

  2. Stefan sagt:

    Es gibt wohl doch einen Fehler in der log
    Warning: Unable to locate configuration directory, default config not loaded.
    Client mosqpub/4851-mint-virtu sending CONNECT
    Client mosqpub/4851-mint-virtu received CONNACK
    Client mosqpub/4851-mint-virtu sending PUBLISH (d0, q0, r0, m1, ‚cmnd/FastLedDisplay/rbw‘, … (9 bytes))
    Client mosqpub/4851-mint-virtu sending DISCONNECT

  3. Stefan sagt:

    Hallo nochmal,

    Ich habe auch wie weiter unten von Jens beschrieben die Einträge in meinem Log, Connect, connack, publish, disconnect usw. und mein log ist jetzt schon einige GB groß geworden. Wie kann ich diese Logeinträge vermeiden? verbose in der fhem.cfg?

  4. Robin sagt:

    Hallo Joe,

    Ja, habe ich da.
    Inkl. Kabel
    Möchtest du die Headers am Stripe angelötet haben?
    Du hast Post.
    LG
    /robin

  5. Joe sagt:

    Hallo Robin,

    du hattest mal erwähnt das du noch einen Stripe mit Baustein hast?
    Noch vorhanden?

  6. Robin sagt:

    Hallo Stefan,
    ich glaube eher mit dem Löschen.
    Überschreibe den Baustein am besten noch mal mit einem nodemcu bin. Und mache dann nochmal den EasyESP drauf. Meines Wissens meldet sich der AP mit ESP0.

    EDIT: Ich konnte das Problem nachvollziehen. Bei mir hat das Modul auch erst ein AP mit ESP_02340 aufgemacht, nachdem ich mich darauf mit der IP 192.168.4.1 eingeloggt hatte, passierte nichts.
    Nach einiger Zeit wurde ein AP mit ESP0 aufgemacht. Kurz Stecker raus und Rein blieb der ESP0, darauf mit 192.168.4.1 eingeloggt, etwas gewartet, und dann kamen die Auflistungen meiner APs in meiner Umgebung.
    Also meinen AP ausgewählt und SSID Passwort eingegeben und alles war gut.

    LG
    /robin

  7. Stefan sagt:

    Hallo,

    Ich habe da noch ein seltsames verhalten.
    Ich haben dem D1 mini noch mal komplett gelöscht.
    Wenn ich ein Wlan scan mit meinem Hand mache, kommt da immer noch ein ESP_MAC, was auf ein espeasy hin deutet, und der Login geht auch, aber die Webpage nicht. Da muss ich mich jetzt fragen was hat das hier mit dem espeasy zu tun? Oder ist da vielleicht was beim flashen schief gelaufen?

  8. Dirk sagt:

    Hallo Robin.

    Vielen Dank für deine PM. Habe die Bibliotheken die Holger in seiner „Anleitung“ auflistet installiert und jetzt funktioniert es.

    Nochmal vielen Dank für deine Unterstützung und diese tolle Anleitung.

    Was kommt als nächstes? – ich bin gespannt

    Gruß

    Dirk

  9. Robin sagt:

    Hallo Holger,
    danke für die ausführlichen Hinweise. Ich hätte dir den WeMos aus flashen können, dafür hätte ich (siehe Sourcecode, deine SSID, PW und IP von Fhem benötigt).
    Für das Stromausfallproblem habe ich derzeitig auch keine Lösung bei mir funktioniert er schon seit Monaten rund um die Uhr.
    Schick mal ein Foto, wenn Du alles fertig hast.

    LG
    /robin

  10. Holger sagt:

    So, ich bin mittendrin in meinem erstern Ausflug in Sachen IoT. Ich habe vorher noch NIE mit Arduino und Co. zutun gehabt. Meiner Meinung nach, um diese Artikel zu verstehen, muss man erstmal kapieren wie man mit der Arduino IDE umgehen muss. Weiterführende Hinweise welche Pakete, oder Libraries oder wie das heisst, die man herunterladen muss, und wie man diese dann in die Arduino Software geladen bekommt etc. wären sicher hilfreich.
    Ich musste z.B. folgende nachladen und in die IDE „installieren“:
    Sources für das WeMos D1 mini Board wie beschrieben auf wemos.cc
    http://arduino.esp8266.com/stable/package_esp8266com_index.json
    und dann halt noch:
    1) D1_mini_Examples-master.zip
    2) FastLED-master.zip
    3) pubsubclient-2.6.zip
    4) Adafruit_NeoPixel-master.zip
    5) „FastLED_MQTT“ von tom71
    https://github.com/tom71/MQTT/tree/master/FastLED_MQTT

    Naja, ich habe es inzwischen hinbekommen. Jetzt muss ich nur noch einen Bilderrahmen und eine Beschriftung und die Elektronik vereinen und dann habe ich auch so eine schicke Statusanzeige.

    Was ich allerdings wissen möchte ist:
    Wenn ich den WeMos vom Strom trenne und wieder einstecke verbindet er sich zwar, aber die vorherigen Stati der LEDs sind logischerweise weg. Kann man da noch irgendwas machen damit das Ding die Stati vom FHEM Server wieder einliest?

    Beste Grüße

    Holger

  11. Robin sagt:

    Hallo Dirk,
    hört sich so an, als wenn die Fastled – Komponente probleme macht. Ich schicke dir mir meine zu per PM. Diese bitte mal ausprobieren.
    LG
    /robin

  12. Dirk sagt:

    Hallo Robin.

    Ich habe schon viele deiner Anleitungen nachgebaut. Bei dieser allerdings, stoße ich an meine Grenzen. Kannst Du darauf eingehen, wie man die Software compiliert? ich bekomme jede Menge Fehlermeldungen. (z.B. ‚changeColor‘ was not declared in this scope)

    Dank und Gruß

    Dirk

  13. Robin sagt:

    Hallo Stefan,
    hier wird nix gelöscht, wenn du links angegeben hast, kann es sein, das du im unerwünschte Mail Filter reingerutscht bist.

    LG
    /robin

  14. Stefan sagt:

    Hallo,

    Bin gerade dabei das nachzubauen für eine Leistungsanzeige Stromzähler und Temperatur für Solarthermie mit LED RGW ES2812B Ring, deswegen benötige ich mehrere WeMos/D1 mini die verschiedene Dinge Anzeigen können.
    Seltsam ist, das manchmal ein Kommentar angezeigt wird, manchmal nicht …..

  15. Stefan sagt:

    Warum wurde mein Beitrag gelöscht?

  16. Stefan sagt:

    Hallo

    Vielleicht habe ich mich etwas falsch Ausgedrückt.
    z.B. der FHEM mit MQTT hat die 192.168.1.10
    1 WeMos mit LED Strip 192.168.1.11
    2 WeMos mit LED Strip 192.168.1.12
    3 WeMos mit LED Strip 192.168.1.13

    Wie kann ich jetzt die verschiedenen WeMos ansteuern und deren LED Strips mit WS2812B?

  17. Robin sagt:

    Hallo Stefan,

    du rufst in Fhem eine Prozedur mit Übergabeparameter auf, z.b. so:
    esa2000WZ_43CB:actual.* {
    myLEDSend("10010",1,$EVTPART1 < 0.5?0:1,"13Strom",$EVTPART1); if ($EVTPART1 < 0.5) { fhem("set LEDRahmenSwitch 7 110000"); } else { fhem("set LEDRahmenSwitch 7 001100"); } }

    würde also heißen: 7. LED leuchtet rot oder grün. Die Zahlen gehen von 000000 (aus) bis ffffff (weiß)

    LG
    /robin

  18. Stefan sagt:

    Hallo,

    Eins ist mir noch nicht ganz klar.
    Wenn ich mehrere D1 mini mit LED Strip im Einsatz habe, würden ja theoretisch alle das gleiche anzeigen? Wie kann ich definieren welcher D1 mini welche LEDs eingeschaltet werden?

  19. Heinz-Rolf sagt:

    Hallo Robin,
    habe den Fehler gefunden. Die Adressierung der Leds beginnt mit 0. Habe in der Zeile 90 des Arduino-Sketches „leds[l] = CRGB( r, g, b);“ in „leds[l-1] = CRGB( r, g, b);“ geändert. Damit funktioniert auch meine 12. Led.
    mfg
    Heinz-Rolf

  20. Heinz-Rolf sagt:

    Hallo Robin,
    habe mir mal Dein Projekt nachgebaut mit einem Nodemcu und einem LEDstripe mit 12 Leds. Angesteuert über FHEM funktioniert alles gut bis auf die Tatsache, dass die 12. LED nicht will. Auch direkt vom Raspi via MQTT brennt sie nicht. Ein Test mit einem Progamm aus der Library FastLED funktioniert aber. Im Serial-Monitor vom Arduino-IDE wird die Ausgabe für LED 12 auch richtig angezeigt. Irgend eine Idee?

    mfg
    Heinz-Rolf

  21. Floca sagt:

    Gehört vielleicht nicht hier direkt hin, aber da ich vor einigen Tagen schon gesehen habe, dass ihr in den Kommentaren über die RFID Geschichte sprecht… Ich habe mich jetzt damit auseinandergesetzt und den Code selber geschrieben.

    Vielleicht kannst du und Extruder was damit anfangen 😉

    Grüße Floca

    https://github.com/Fl0ca/MQTT-RFID_MRC522

  22. Dennis sagt:

    Naja viel geändert nicht nur die Formatierung angepasst. Da hat Arduino immer rumgemeckert. Als MQTT Broker nutze ich Mosquitto. Lese damit einige Wemos mit DHT22 sensor aus. In jedem Zimmer hängt einer.

    http://pastebin.com/pyp1knH7

  23. Robin sagt:

    Hallo Dennis,
    kannst Du mir den geänderten Code schicken. Ich würde den mal vergleichen, mit dem vom Thomas.
    Welche MQTT Version hast du genommen? Hast du was am PubSubSend.h geändert?

    LG
    /robin

  24. Dennis sagt:

    So habs hinbekommen. Lag am Script. Musste einige sachen ändern dann ging es. Led`s leuchten schon mal^^. Sobald ich einen passenden rahmen habe gibt es Bilder. Jetzt erstmal den Müllkalender einfügen und anzeigen lassen.

  25. Holger Franzke sagt:

    Hallo ich hätte Interesse an dem LED Strip und dem WeMos Baustein gerne auch programmiert.

  26. Robin sagt:

    Hallo Dennis,

    hier hat BitBastelei es kurz erklärt: https://www.youtube.com/watch?v=rX31pUHtyio
    Und richtig, du musst die FastLED-Library und die SubPubSend noch hinzufügen.

    LG
    /robin

  27. Dennis sagt:

    Hallo Robin, erstmal vielen dank für die vielen Anleitungen. Einiges hab ich schon umgesetzt und läuft bestens. Aber an der Anleitung scheitere ich klaglos. Wie bekomme ich den Sketch auf meinen Wemos? Arduino wirft nur fehler aus die ich leider nicht nachvollziehen kann. FastLED hab ich installiert. Ich dreh bald durch^^

  28. Robin sagt:

    Hallo Extruder,

    Die Datenübertragung zu Fhem geht einfach über die Library PubSubClient und dem Sketch mqtt-esp8266 in den examples und den code von ihm hier „mergen“: https://github.com/Jorgen-VikingGod/ESP8266-MRC522. Bei meinem Sketch wird der SSH Zugang lahmgelegt, wenn ich meinen Sketch starte :-(. Vielleicht liest Thomas mit und baut was brauchbares daraus.

    LG
    /robin

  29. Extruder sagt:

    Hallo Robin,
    hört sich ja erstmal Super an, hänge da schon eine Ewigkeit drann fest (seit der Forumsbeitrag aufgetaucht war), eine Lösung zu finden.
    Ist halt ein zweischneidiges Schwert, weil die Mifare 1K nicht sicher sind und es Rohlinge gibt auf die man UID’s schreiben kann wie man lustig ist. Genial wäre eine Kombi aus UID und nem zusätzlichen Code auf der Karte den man beliebig mit dem dem rc522 draufschreibt, habe mir da noch nicht richtig gedanken gemacht.

    Cool wäre ja erstmal ne basis, wo die uid zu Fhem kommt.

  30. Robin sagt:

    Hallo Extruder,
    ich wollte darüber einen Blog-Beitrag schreiben (MRC522 Mifair) mit MQTT. Ich habe den Scetch soweit fertig, läuft bei mir aber unstabil, mangels C Kenntnisse.
    Wenn Thomas sowas runterschreiben könnte wäre es klasse. Ich schreibe ihn nochmal privat an. Ideal wäre natürlich wenn man über ESPEasy sowas gemacht werden könnte.

    LG
    /robin

  31. Extruder sagt:

    Hallo Thomas,
    du scheinst echt den durchblick in sachen MQTT zu haben.
    Kannst du evtl. einen Sketch schreiben, der die gelesene UID eines Mifare Tags an Fhem via Mqtt durchreicht?
    Wäre ja Pubsub plus die MRC522 Library von Miguel Balboa.
    Würde dir einen MRC522 auch kostenlos zur Verfügung stellen, wenn du keinen hast.

    Du wärst echt meine Rettung, ich bekomme es einfach nicht hin 🙁

    Sorry Robin, wenn ich mich mit dem Thema Offtopic befinde, aber mich lässt das einfach nicht los, seit ich einen Thread im Fhem Forum gelesen habe, wo ich die Idee her habe, lässt mich das nicht los…

  32. Jens sagt:

    Kann Erfolg melden:
    Mit einem ESP8266-01 funktioniert nun alles! Keine Ahnung weshalb es mit dem NodeMCU nicht funktioniert hat, ich denke, dort sind die GPIOs nicht korrekt vergeben (und ich habe mir nun die letzten zwei Abende genug Anleitungen durchgelesen ;-)).
    Aktuell nur ein Prototyp – sobald ich das Ganze „Wohnungstauglich“ umgesetzt habe, wird es ein Bild geben.

  33. Robin sagt:

    Hallo Jens,

    wir sind gespannt, schicke mal ein Foto, wenn du was zuende gebaut hast.
    Ich habe ein WeMos genommen, ich binde die Dinger recht sexy.

    LG
    /robin

  34. Jens sagt:

    Hallo Thomas,
    Vielen Dank.
    Ich werde erst am Donnerstag wieder zum testen kommen. Den Led-Streifen habe ich korrekt herum angeschlossen, in Pfeilrichtung.
    Ich habe nur den Data-Pin am esp – die Stromzufuhr hole ich mir von einem abgeschnittenen USB-Kabel (+ und -) –> sollte kein Problem sein, oder?
    Die Idee mit dem standalone-Beispiel werde ich mir zu Herzen nehmen und testen.

    Besten Dank an euch zwei! Ich werde berichten, ob alles klappt.
    Falls nicht werde ich die Bauteile nochmals austauschen und weiter versuchen, habe noch esp 01 rumliegen und auch einen ws2811.

    Grüße, Jens

  35. Thomas Cristo sagt:

    Hallo Jens,
    ich habe den Data-Pin vom LED-Streifen am GPIO2 vom ESP angeschlossen.
    Nach dieser Beschreibung ist D4 GPIO2 (https://pradeepsinghblog.files.wordpress.com/2016/04/nodemcu_pins.png?w=616) beim NodeMCU.
    Der ESP8266-01, den ich verwendet habe, hat nur GPIO 0 und GPIO 2.

    Du kannst auch die PIN-Benamung festlegen: https://github.com/FastLED/FastLED/wiki/ESP8266-notes

    #define FASTLED_ESP8266_NODEMCU_PIN_ORDER
    Dann sollte D2 auch DataPin 2 bei:
    „FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);“ sein

    Vielleicht probierst du zuerst ein Beispiel von FastLED (https://github.com/FastLED/FastLED) ohne MQTT. Damit kannst du die Verkabelung vom LED-Streifen testen.
    Hast du den LED-Streifen richtig herum angeschlossen? Der hat eine Ein-und Ausgangsseite.
    Gruss Thomas

  36. Robin sagt:

    Hallo Jens,
    das sieht doch schon mal super aus! WLAN verbunden und eine Übertragung via MQTT findet auch statt.
    Ich nutze einen WeMos Baustein, bei mir hatte ich im Source-Code die 4 eingetragen, was auch den GPIO Pin D4 entsprach.
    Einfach mal ausprobieren, und immer kurz resetten, wenn du einen anderen Pin zum Testen nimmst.

    LG
    /robin

  37. Jens sagt:

    Hi Robin,
    vielen Dank für deine Geduld!
    Und siehe da – Ergebnis aus dem Arduino IDE Monitor:
    Connecting to Stammheim
    ……..
    WiFi connected
    IP address:
    192.168.178.24
    Attempting MQTT connection…connected
    Message:2,255,255,255
    Set LED 2to r=255 g=255 b=255
    Message:2,255,255,255
    Set LED 2to r=255 g=255 b=255

    Aber: Der LED-Streifen leuchtet weiterhin komplett auf allen LEDs weiß. Ich werde nochmals die Verkabelung prüfen.
    Nochmals eingehend auf meine Frage von einem vorherigen Post: Was ist mit Data Pin 2 gemeint? Muss ich hier auf GPIO2 oder D2 vom NodeMCU gehen?

    Vielen Dank vorerst,
    Grüße Jens

  38. Robin sagt:

    Auf dem Raspberry muss der MQTT-Broker installiert werden, im Beitrag steht auch der Link drin.

    LG
    /robin

  39. Robin sagt:

    Hallo Jens,

    du musst den NodeMCU mit der Arduino Software flashen. Gibts gefühlt 1000 Videos und Dokus zu Flashen von NodeMCU mit der Arduino Software.
    Die Infos oben, kommen nicht, wenn du im Serial Monitor die obige Software zum NodeMCU übertragen hast.

    LG
    /robin

  40. Jens sagt:

    Hallo Robin und Thomas,
    ich habe gestern Abend noch weiter probiert und der NodeMCU baut nun eine Internetverbindung zum Router auf. Folgendes erscheint nun im ESPlorer Terminal:

    NodeMCU custom build by frightanic.com
    branch: master
    commit: b580bfe79e6e73020c2bd7cd92a6afe01a8bc867
    SSL: true
    modules: bme280,bmp085,dht,enduser_setup,file,gpio,http,i2c,mqtt,net,node,ow,tmr,uart,wifi,ws2801,ws2812
    build built on: 2016-07-08 20:16
    powered by Lua 5.1.4 on SDK 1.5.1(e67da894)
    lua: cannot open init.lua
    > Heap size::44008.
    scandone
    state: 0 -> 2 (b0)
    state: 2 -> 3 (0)
    state: 3 -> 5 (10)
    add 0
    aid 6
    cnt

    connected with Stammheim, channel 2
    dhcp client start…

    wifi_event_monitor_handle_event_cb is called
    ip:192.168.178.24,mask:255.255.255.0,gw:192.168.178.1

    wifi_event_monitor_handle_event_cb is called
    pm open,type:2 0

    Die Logeinträge in FHEM sind weiterhin wie unten geschrieben vorhanden – es kommt aber scheinbar im ESP nichts an.
    Ich habe MQTT auf dem Raspberry entsprechend installiert – den DHT22 am ESP8266 konnt ich sauber auslesen (jedoch pusht hier der ESP und nicht wie mit den LEDs der Raspberry).
    Muss man ggf. noch etwas auf dem Raspberry für MQTT zusätzlich installieren?
    Vielen Dank und Grüße,
    Jens

  41. Robin sagt:

    Hallo Jens,
    stelle erst mal die Verbindung zwischen Fhem und dem NodeMcu her.
    Und wie Thomas gesagt hat, die Kommentarzeile testweise wieder einbauen.
    Der NodeMCU meldet sich im Serial Monitor (115200 Baud) mit „connected“ mit der IP des NodeMCUs. Du kannst die Baud-Zahlen im Serial-Monitor auf der rechten Seite ändern.
    Ein Überspielen der Bin-Datei ist meiner Meinung nicht möglich. Ist auch unlogisch, weil man ja die SSID,das Passwort und die Fhem-IP im Quelltext einmal eintragen muss.

    LG
    /robin

  42. Jens sagt:

    Hallo,
    ich habe eben nochmals alles neu geflasht – der Wifi-Connect stammte noch von einem Test-Skript, welches als init.lua ebenfalls auf dem ESP war. Dieses Skript habe ich nun gelöscht.
    Habe somit jetzt eine blanke NodeMCU Firmware und das FastLED_MQTT.ino Skript.
    Jetzt erscheint der ESP nicht mehr in der Fritzbox. Somit liegt der Fehler schon weiter vorn.
    Kann man nicht die ino-Datei ohne weiteres mit dem ESPlorer hochladen und dann sollte alles funktionieren? Muss ich hierbei etwas besonderes berücksichtigen?
    Sorry, bin in dem Thema noch relativ neu, was ino auf ESP angeht.
    Danke und Grüße,
    Jens

  43. Jens sagt:

    Hi Robin,
    danke für die schnelle Antwort.
    Für mich kurz zum Verständnis:
    Bei Data Pin 2 im Skript ist GPIO4 des ESP8266 gemeint, oder genau anders herum und ich muss D2 vom ESP nehmen?
    Ja, habe eben nochmals in meinen Aliexpress Bestellungen nachgeschaut – es handelt sich hierbei um einen WS2812B.
    Im Serial Monitor kommt nichts an – Arduino 1.6.5.
    Was mich beim durchlesen von vielen Anleitungen stutzig macht: ich kann nur mit der Baudrate von 9600 über den Serial Monitor und den ESPlorer zugreifen. Andernfalls bekomme ich nur „Schrott“ angezeigt. Kann es daran irgendwie liegen?

  44. Thomas Cristo sagt:

    Hallo Jens,
    was kommt denn beim NodeMCU an? Kannst du mal seriell loggen? Ich hatte das meiste logging auskommentiert.

  45. Robin sagt:

    Hallo Jens,

    schön, das du es nachgebaut hast. Ich habe mein digitalen Bilderrahmen jetzt auch fertiggestellt. Einen Blogbeitrag schreibe ich in den nächsten Tagen.
    Mit der geschweiften Klammer hast du Recht, habe ich gerade korrigiert im Blog-Beitrag
    Die 1: beschreibt das ende der Datei 99_FhemUtils.pm. Ich habe die obige Prozedur mittendrin platziert. Also die „1“ solltest du schon in der 99_FhemUtils.pm haben.
    Hm, mich wundert das alle Lampen schalten. Bist du sicher, das du auch WS2812b LEDs verwendest? Nimm mal einen anderen GPIO-Port.
    Was sagt denn der Serial Monitor? Da musst du kurz die Remarks bei Serial.print rausnehmen. Kommt da von Fhem was an? Die Inhalte vom Fhem-Log sind bei mir auch so.

    LG
    /robin

  46. Jens sagt:

    Hallo Robin,
    super Anleitung!
    Ich habe dies versucht nachzustellen, leider bisher ohne Erfolg.

    Wie bin ich vorgegangen:
    1. Ich habe auf dem NodeMCU die gleichlautende Firmware geflasht. Mit dem NodeMCU-Flasher.
    2. Danach habe ich das o.g. Skript heruntergeladen, angepasst und via ESPlorer hochgeladen
    Der ESP wird in der Fritzbox angezeigt – somit sollte die WLAN-Verbindung stimmen.
    Was habe ich im Skript noch angepasst:
    #define LED_TYPE WS2812 –> ich nutze einen WS2812b
    #define COLOR_ORDER GRB
    #define NUM_LEDS 8 –> ich habe anstelle 20 nur 8 LEDs

    Im Anschluss habe ich die FhemUtils.pm in FHEM angelegt mit folgendem Inhalt:
    sub myLEDSend($$) {
    my ($dev,$led) = @_;
    my $cmd = „mosquitto_pub -d -t cmnd/FastLedDisplay/rbw -m ‚$led'“;
    system( „$cmd;$cmd;$cmd“ );
    return undef;
    }
    1;

    Bei dir fehlt scheinbar im Quellcode noch die schließende Klammer – die „1;“ sollte meines Wissens nach immer am Ende stehen.

    Ich habe in FHEM dann einen Schalter angelegt – sobald dieser auf on bzw. off steht, soll sich etwas ändern – dieser scheint korrekt angelegt zu sein, da ich im Log folgende Inhalte sehe:
    Client mosqpub/17723-raspberry sending CONNECT
    Client mosqpub/17723-raspberry received CONNACK
    Client mosqpub/17723-raspberry sending PUBLISH (d0, q0, r0, m1, ‚cmnd/FastLedDisplay/rbw‘, … (13 bytes))
    Client mosqpub/17723-raspberry sending DISCONNECT
    Client mosqpub/17724-raspberry sending CONNECT
    Client mosqpub/17724-raspberry received CONNACK
    Client mosqpub/17724-raspberry sending PUBLISH (d0, q0, r0, m1, ‚cmnd/FastLedDisplay/rbw‘, … (13 bytes))
    Client mosqpub/17724-raspberry sending DISCONNECT
    Client mosqpub/17725-raspberry sending CONNECT
    Client mosqpub/17725-raspberry received CONNACK
    Client mosqpub/17725-raspberry sending PUBLISH (d0, q0, r0, m1, ‚cmnd/FastLedDisplay/rbw‘, … (13 bytes))
    Client mosqpub/17725-raspberry sending DISCONNECT

    Das Notify ist wie folgt angelegt (der Schalter heißt Boiler):
    Boiler:.* {if (Value(„Boiler“) eq „on“) {myLEDSend(„Boiler“,“2,125,255,255″);} else {myLEDSend(„Boiler“,“2,255,255,255″);}}

    Leider schalten sich die LEDs nicht – sobald ich diese an 5V anhänge, leuchten alle 8 LEDs weiß.
    Hast Du ggf. eine Idee, wo mein Denkfehler liegt?

    Vielen Dank und Grüße,
    Jens

  47. Robin sagt:

    Hallo Marcello,

    steht doch da:
    Die notwendige Software findet ihr hier: https://github.com/tom71/MQTT/tree/master/FastLED_MQTT

    Beschreibe später auch mal, was du damit gemacht hast.
    LG
    /robin

  48. Marcello sagt:

    Vielen Dank für den tollen Blog und die Anleitung.

    Irgendwie übersehe ich wohl leider das erwähnte Script von Thomas?!

    Würde mich über einen Link oder einen Hinweis wo ich es finden kann sehr freuen.

    Viele Grüße
    Marcello

  49. Pingback: Fhem mit LED Statusanzeige / LED-Stripe WD2812B / MySensors | Robins Blog – Technik und Multimedia

  50. Thomas Cristo sagt:

    Ich hab ja nur deine Idee verwendet und für meine Zwecke angepasst. 😉

    LG
    Thomas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

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