[sgmb id=“1″]
„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.
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.
Auto Amazon Links: Keine Produkte gefunden. http_request_failed: Es wurde keine gültige URL übermittelt. URL: https://ws-eu.amazon-adsystem.com/widgets/q?SearchIndex=All&multipageStart=0&multipageCount=20&Operation=GetResults&Keywords=B0744C1ZMG|B01N9RXGHY|B07TZK8JTQ&InstanceId=0&TemplateId=MobileSearchResults&ServiceVersion=20070822&MarketPlace=DE Cache: AAL_73d478a48108f13f7a333e245c5a8481
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.
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
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
Blog-Leser Jens hat mir ein Bild geschickt von einem LED-Stripe mit Acryl-Stab-Verlängerung
Update 06.08.2016: Blogleser Peter hat mir ein Foto vom LED-Bilderrahmen geschickt!
Update 06.08.2016: Blog-Leser Dennis hat mir ein Foto von seinem LED-Bilderrahmen geschickt!
Hallo Robin,
kann man die Statusanzeige auch mit dem Fhem MQTT_Server nutzen?
Habe es versucht aber nicht hinbekommen! Kannst du wenn es möglich ist, die Zeile aus der 99_myutils hier posten?
Vielen Dank und Gruß
Dirk
Pingback: Hausautomatisierung mit Fhem | tom71blog
Hallo Peter,
ich bin schon lange wieder zurück, seitdem erkältet ohne Ende.
Blinken habe ich auch nicht hinbekommen. Ich vermute auch, das das mit der Zeit im Bilderrahmen ziemlich nervt.
Ich würde an Deiner Stelle einfach nur die Farbe verändern.
Im Allgemeinen: Bei meinen Anzeigen sind die LEDs meistens aus, also nicht z. B. grün.
LG
/robin
Hallo Robin,
schön, dass Du wieder aus den Canaren zurück bist.
Habe von Dir mal mein Bildchen mit einigen LED’s bekommen und ist seitdem toll in Betrieb. Nun versuche ich eine LED bei folgendem Zustand zum blinken zu bringen – wie kann man das hinbekommen (FHEM)
([PV_WR1]) ([PV_WR1:device_status] eq „Ok“) ({myLEDSend(„“,“2,0,0,0″)}) DOELSE ({myLEDSend(„“,“2,20,0,0″)})
Soll also bei PV-Wechselrichterfehler nicht nur leuchten sondern blinken!
LG Peter aus Calw
Hallo,
wie kann ich das händisch testen, ob meine eine LED vom Wemos Shield funktioniert?
Sprich was müsste ich in der Console eingeben? mosquitto_pub -d -t cmnd/FastLedDisplay/rbw -m „xxyyzz“ Ich versetehe die Sub leider nicht so ganz. Das device wird nur übergeben aber nichts mit gemacht? Wird dann dreimal $cmd aufgerufen? Wo wird das entprechende LED übergeben? Und die RBW-Werte?
sub myLEDSend($$) {
my ($dev,$led) = @_;
my $cmd = „mosquitto_pub -d -t cmnd/FastLedDisplay/rbw -m ‚$led'“;
system( „$cmd;$cmd;$cmd“ );
return undef;
}
Unter FHEM 5.7 konnte ich die nur so abspeichern:
sub myLEDSend($$)
{
my ($dev,$led) = @_;
my $cmd = ’sudo mosquitto_pub -t cmnd/FastLedDisplay/rbw -m ‚$led‘;
system( „$cmd;$cmd;$cmd“ );
return undef;
}
–> Ist das so noch korrekt?
Viele Fragen von einem Anfänger
Hi,
kann mir einer sagen wozu im Perl-code für Fastled das „Dachfenster_1“ steht?
ist weder in der MyUtils noch im Sketch mit drin.
Ich bekomme keine Fehlermeldung wenn ich den Befehl absetze, würde es aber dennoch gerne verstehen wozu das drin ist.
Grüße
Frank
{myLEDSend(„Dachfenster_1″,“6,255,255,255“);;} else
{myLEDSend(„Dachfenster_1″,“6,0,0,0“);;}}
@Hans-Ulrich,
über Arduino installiert gab es keine Webseite.
Hab jetzt ESP-Easy drauf. damit konnte ich es umbenennen.
ist mein erster WeMos und mein erster Kontakt zu MQTT…..
Alles noch etwas undurchsichtig…
@ Frank: Wenn Du Dich per Browser mit dem Wemos verbindest, kannst Du im Reiter „Config“ den gewünschten Namen vergeben.
Hi,
Ich versuche mich hiermit gerade an meinem ersten WeMos. 🙂
läuft soweit, ist im WLAN eingebucht.
Hier kommt schoneine Frage: Wie kann ich denn einen Hostnamen setzen?
Im Netzwerk ist er jetzt els ESP_CF22E5. hier hätte ich gerne einen vernünftigen Host gesetzt. geht das isrgendwie?
Grüße
Frank
Hallo Marcel,
hast Recht, da hat wohl jemand diesen Beitrag abonniert und die eMail adresse war falsch.
Ok, zu Deinem Thema:
Also ohne EasyESP fällt mir nur NodeMCU ein, vielleicht da mal googlen. Aber es muss ja auch mit Fhem harmonieren …
LG
/robin
Hallo Robin, was soll an meiner Mail Adresse falsch sein? Deine Antwort kam zumindest dort an. Oder hast du sie korrigiert?
DLCD war mir bereits bekannt, aber mir geht es anfangs erstmal um einen Sketch für den ESP8266 welcher ankommende Daten verarbeitet und auf das dort angeschlossene LCD ausgibt. Wenn das läuft geht es weiter zu DLCD.
Hallo Marcel,
ich habe DLCD für ein „rolling“ Display für Börsenkurse genommen.
Infos findest du in der Fhem-Wiki.
PS: Deine eMail Adresse ist falsch.
LG
/robin
Hallo Robin,
hast du vieleicht eine Idee wie ich die Statusanzeige mit einem 2004er Display kombinieren kann?
https://blog.moneybag.de/fhem-lcd-2004-display-mit-espeasy-als-statusanzeige/
Konkret suche ich nach einem Beispiel, wie ich aus Fhem herraus das display ansprechen kann ohne ESPEASY zu nutzen. Die Programmierung muss in der Arduino IDE erfolgen, da schon 2 weitere Tasks auf dem ESP laufen.
Gruß
Marcel
Hallo Benjamin,
siehe hier:
Angebot: Ich habe noch ein 8 – LED-Stripe mit einem Witty Board hier. Falls ihr Interesse habt, für 19,95 Euro inkl. Versand gehört dieses Set Euch. Das Witty-Board könnt ihr natürlich auch für etwas anderes verwenden.
Tip: Nicht mehr als 8 RGB-LEDs maximal 16, dürfen aber nicht alle zusammen leuchten. Sonst kann es Probleme mit der Stromversorgung kommen.
Das Ding bekommst du bei mir fertig gelötet, geflashed (wenn du mir die SSID /PW gibst).
PS: Deine eMail-Adresse stimmt nicht.
LG
/robin
Hallo Robin,
ich möchte mir einen solchen Bilderrahmen bauen. Habe viel mitgelesen und wollte eigentlich die 433mhz Version bauen, da ich die benötigten Teile noch rumfliegen habe.
Außer die LED Strippe.
Was benötigte ich alles für die WLAN Version? Ein Raspi FHEM Server ist vorhanden, klar 🙂
Ich benötige ca. 20 LEDs, welche ich ansteuern möchte…
Danke + Gruß
Benjamin
PS: Die Anleitungen sind echt klasse. Ich würde alles nach diesen Anleitungen bauen, nur sehe ich vor lauter Bäumen den Wald nicht mehr 🙁
Hallo Martin,
kurz eine Suchmaschine gefragt, und das hier gefunden: http://popoklopsi.github.io/RaspberryPi-LedStrip/#!/
aber ohne Fhem
LG
/robin
Gibt es auf eine Möglichkeit den LED-Strip direkt an die GPIOs des Pi anzuschließen? Auf eine Funkverbindung kann ich bei mir verzichten.
>>Leider wird bei jedem Befehl das LOG von FHEM mit
>>
>>2016.11.04 16:48:30 3: sduino IT: IT_F00F0FFF0F on->off
>> Warning: Unable to locate configuration directory, default config not loaded.
Das ist eine Fehlermeldung aus der client_shared.c . Leider habe ich den Fehler bisher noch nicht gefunden, scheint aber an dem neuen MQTT zu liegen, vorher gab es die Meldung nicht.
fprintf(stderr, „Warning: Unable to locate configuration directory, default config not loaded.\n“);
Man kann als Lösung erstmal den stderr in das log file umleiten 2>> log_file, damit hat man es zumindest schon mal nicht mehr im FHEM log.
my $cmd = „mosquitto_pub –quiet -t cmnd/FastLedDisplay/rbw -m $led 2>> log_file „;
Hallo,
ich habe die Version:
mosquitto version 1.4.10 (build date Thu, 25 Aug 2016 10:12:09 +0100)
mosquitto is an MQTT v3.1 broker.
installiert und musste die Zeile wie folgt abändern:
ALT:
my $cmd = „sudo mosquitto_pub –quiet -t cmnd/FastLedDisplay/rbw -m ‚$led’“;
NEU:
my $cmd = „mosquitto_pub –quiet -t cmnd/FastLedDisplay/rbw -m $led“;
jetzt funktioniert alles. Super 🙂
Hallo Dirk,
danke für die Info! Ich habe mein LED-Stripe derzeitig eingemottet, ich bastel gerade ein Skill für die Alexa. Also quasi ganz andere Baustelle.
Aber die Blog-Leser hier lesen die Kommentare ja auch durch (hoffe ich zumindest).
LG
/robin
Hallo Robin ,
hätte da noch was !
in dem Sketch noch die Zeile nach
void setup_wifi() {
>>>>>>> WiFi.mode(WIFI_STA); // Mode AP or Normal<<<<<<<<<
einfügen sonst hat man da immer einen offenen AP im Netz ! Bei mir waren es glatt 4 offene AP´s bei 4 Anzeigen ! !!
Mfg Dirk
Hallo
für die Fehlermeldungen im LOG hat bei mir folgendes geholfen ! In der 99_myUtils.pm
sub myLEDSend($$) {
my ($dev,$led) = @_;
>>>ALT>>> my $cmd = „mosquitto_pub -d -t cmnd/FastLedDisplay/rbw -m ‚$led'“;<<<ALT<<>>NEU>>>> my $cmd = „sudo mosquitto_pub –quiet -t cmnd/FastLedDisplay/rbw -m ‚$led'“;<<<NEU<<<
system( "$cmd;$cmd;$cmd" );
return undef;
}
^^^ ^^^^^^
ändern !!
Gruß Dirk
Noch ein TIP für Leute die mehrere Anzeigen gleichzeitig betreiben wollen ! In der FastLED_MQTT.ino folgende Zeile ändern und neu flashen !
// Loop until we’re reconnected
while (!client.connected()) {
Serial.print(„Attempting MQTT connection…“);
// Attempt to connect
„““““““““““““““““““““““““““““““““““““““““
if (client.connect(„ESP8266Client“)) <<<<=====
""""""""""""""""""""""""""""""""""""""""
Den Namen auf ESP8266Client1 ,ESP8266Client2 oder wie auch immer ändern .Muß nur unterschiedlich sein dann klappts auch mit mehreren Anzeigen parallel.
Bei mir hat der MQTT Server(Client) sonst Probleme mit dem connect !
Gruß Dirk
Hallo !
Ich habe die Anzeige nachgebaut und es funktioniert alles Prima ! Leider wird bei jedem Befehl das LOG von FHEM mit
2016.11.04 16:48:30 3: sduino IT: IT_F00F0FFF0F on->off
Warning: Unable to locate configuration directory, default config not loaded.
zugemüllt ! Was Ich soweit herausgefunden habe funktioniert der MQTT, da Kommandos in der SSH Konsole ohne Fehlermeldung funktionieren !
Ach ja – d für Debug hab Ich ausgeschaltet da es sonst auch das LOG zumüllt !
Hast du eine Idee ?
Gruß Dirk
Ok zumindest der DS18b20 schickt schon mal die Temperatur. Den DHT22 bekomm ich auch noch dazu. Vielen Dank. Wer lesen kann ist klar im Vorteil 😉
Im Thread steht es auf Seite 1 :-), sag Bescheid wenn es klappt.
LG
/robin
10^3 dank, so weit war ich durch den ESPEasy Threat im Forum noch nicht durch. Un google hatte es mir auch nicht ausgespukt.
Ich teste das mal
Hallo Klaus,
du brauchst die ArduinoJson Library 5.6.4+ !
LG
/robin
Hmm, das benutze ich ja, die Sensoren werden auch erkannt, aber es kommt nur Tem:true an statt Temp:24,5 wie bei dir in dem Video.
Ich finde nur leider nicht was ich falsch eingestellt habe oder ändern kann
Hallo Klaus,
es gibt für FHem mittlerweile das ESP-Easy Modul (habe ich im blog schon mal verlinkt), https://forum.fhem.de/index.php/topic,55728.0.html
Einmal installiert, werden automatisch in Fhem alle Sensoren erzeugt.
Ich habe mal ein youtube video gemacht mit DS18b20 https://www.youtube.com/watch?v=zHLPN5arrsw
Ist wohl mit DTH 22 genause.
LG
/robin
Meinte damit im FHEM value:true. Im ESP Easy Web interface kommt die Temperatur richtig an
Ok danke, dann warte ich damit nochmal. So ganz erschließt sich mir das ESPEasy Modul nämlich auch noch nicht. Ich bekomme statt den Temperaturen des DHT22 oder DS18b20 nur den wert: true ?
Braucht man immer MQTT oder weißt du veilleicht wodran das liegt?
Hallo Klaus,
leider nein. Kannst ja mal im Forum schauen vielleicht tut sich da mal was in der Richtung: http://www.letscontrolit.com/forum/
LG
/robin
Hi Robin,
sag mal geht das ganze auch mit ESPEasy und ohne MQTT?
so meine led tafel ist auch fertig , foto kommt noch , nun mal ne frage, ist es möglich eine LED blinken zu lassen ? z.b. termin im kalender = led blinken , oder ein farbwechsel aller xx sec.