Fhem: Universeller MQTT Infrared Transmitter und Receiver mit ESP 8266

Viele von Euch haben die bunten billig LED-Stripes, sei es für Glasbodenbeleuchtung, Vitrinenbeleuchtung, Kellerbar oder Regalbeleuchtung. Ein kleines Problem sehe ich, das zum Ein- und Ausschalten oder Farbveränderung des Stripes immer die mitgelieferte Infrarot-Fernbedienung verwendet werden muss, welche eine geringe Reichweite hat und punktgenau auf dem Empfänger gehalten werden muss. Mich nervt, das es sich hier um eine Insellösung handelt und wieder eine zusätzliche Fernbedienung auf dem Tisch liegt. Ebenfalls passen sich die Stripes nicht automatisch an, wenn man mehrere Stripes oder bunte Lampen in Verwendung hat.

Wäre es nicht schön, wenn man diese Stripes zentral steuern könnte mit dem Smartphone oder automatisiert mit FHem? Oder schalten mit Alexa?
Genau das bespreche ich in diesem Blog-Beitag.

Hier die Zutaten-Liste:
Software:
Fhem
Tasmota

  • Hardware
    LED-Stripe mit Infrarot-Fernbedienung. Ich verwende hier die BASON LED Glasbodenbeleuchtung (->amazon-affili) für .
  • IR-Sender und IR-Empfänger, wobei der IR-Empfänger nur zum einmaligem Auslesen der IR-Codes verwendet wird. Ich habe dafür diese IR Infrarot-Empfänger-Sensor-Modul für in Verwendung.
    Witty Board, siehe Blogbeitrag. Ein normaler Wemos ist auch möglich. Beim Witty-Board muss aber nicht gelötet werden.
  • Jumper-Cable Female to Female
  • Gehäuse: Thingiverse 2x

Vorgehensweise:
Flashen von Tasmota auf dem Witty-Board. Das zeige ich nicht, gibt es 100 Howtos im Internet.

Konfiguration von Tasmota:

dann mqtt konfigurieren (ip, topic usw.)

Verbinden der Hardware:
Wie im Screenshot gezeigt.

Einlesen der IR – Fernbedienung und Ablesen des jeweiligen Codes (on off rot grün usw.)
Das mache ich auf der Tasmota-Konsole.
Hier den Dezimalwert des Data-Werte für die jeweilige Taste herausschreiben

In Fhem:
Einen Dummy erstellen und notifies bauen. die abgelesenen codes dort eintragen.

defmod IR_Sender dummy
attr IR_Sender readingList brightness power color
attr IR_Sender room 30_Wohnzimmer
attr IR_Sender setList brightness:up,down power:on,off color:red,green,blue,white effects:flash,strobe,fade,smooth

defmod IR_sender_notify_1 notify IR_Sender:.* { \
my $ircode="";;\
if ($EVTPART1 eq "on") {\
$ircode="16761150";;\
}\
elsif ($EVTPART1 eq "off") {\
$ircode="16728510";;\
}\
elsif ($EVTPART1 eq "up") {\
$ircode="16712190";;\
}\
elsif ($EVTPART1 eq "down") {\
$ircode="16744830";;\
}\
elsif ($EVTPART1 eq "red") {\
$ircode="16720350";;\
}\
elsif ($EVTPART1 eq "green") {\
$ircode="16752990";;\
}\
elsif ($EVTPART1 eq "blue") {\
$ircode="16736670";;\
}\
elsif ($EVTPART1 eq "white") {\
$ircode="16769310";;\
}\
elsif ($EVTPART1 eq "flash") {\
system "mosquitto_pub -h 192\.168\.178\.67 -t cmnd/sonoff-irsendrec/IRsend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 16728510\}\' ";;\
}\
elsif ($EVTPART1 eq "strobe") {\
system "mosquitto_pub -h 192\.168\.178\.67 -t cmnd/sonoff-irsendrec/IRsend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 16728510\}\' ";;\
}\
elsif ($EVTPART1 eq "fade") {\
system "mosquitto_pub -h 192\.168\.178\.67 -t cmnd/sonoff-irsendrec/IRsend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 16728510\}\' ";;\
}\
elsif ($EVTPART1 eq "smooth") {\
system "mosquitto_pub -h 192\.168\.178\.67 -t cmnd/sonoff-irsendrec/IRsend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 16728510\}\' ";;\
}\
\
system "mosquitto_pub -h 192\.168\.178\.67 -t cmnd/sonoff-irsendrec/IRsend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": " . $ircode ."\}\' ";;\
\
Log3($NAME, 2, "IR-Signal funktion: " . $EVTPART1 . " code:" . $ircode);;\
\
}

ergebis

mqtt-device

defmod IR_Receiver MQTT_DEVICE
attr IR_Receiver IODev MyBroker
attr IR_Receiver room MQTT
attr IR_Receiver stateFormat received: IrReceived_Data
attr IR_Receiver subscribeReading_INFO1 tele/sonoff-irsendrec/INFO1
attr IR_Receiver subscribeReading_INFO2 tele/sonoff-irsendrec/INFO2
attr IR_Receiver subscribeReading_INFO3 tele/sonoff-irsendrec/INFO3
attr IR_Receiver subscribeReading_RESULT tele/sonoff-irsendrec/RESULT
attr IR_Receiver subscribeReading_SENSOR tele/sonoff-irsendrec/SENSOR
attr IR_Receiver subscribeReading_STATE tele/sonoff-irsendrec/STATE

defmod ejIR_Receiver expandJSON IR_Receiver.*:.*:.{.*}

Und wie gehts weiter?
Seid Kreativ! Der Witty hat einen LDR an Board, so könnte man bei einbrechender Dunkelheit das Stripe einschalten.
Oder:
Wenn ihr mehrere bunte Lampen habt, wie z.B die Hue, könnt ihr via Notify die Farbe passend zur Hue-Lampe anpassen.
Oder:
Wenn die Schrankbeleuchtung eingeschaltet wird, wird der Stripe auch direkt ein- bzw ausgeschaltet.
defmod VitrineBunt_DOIF DOIF ( ([VitrineWeisslicht] eq "ON") and ([?rgr_Residents] eq "zuhause") ) \
(set IR_Sender power on)\
DOELSEIF ([VitrineWeisslicht] eq "OFF")\
(set IR_Sender power off)\

Das wäre es eigentlich. Bei Fragen, ab in die Kommentare.
Wenn ich Euch Tasmota flashen soll, für 11 Euro inkl. Versand seit ihr dabei.

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

7 Antworten zu Fhem: Universeller MQTT Infrared Transmitter und Receiver mit ESP 8266

  1. Robin sagt:

    typo … korrigiert.
    danke

    robin

  2. Stefan sagt:

    Hallo

    Auf dem Witty Bord ist doch ein 8266 oder? 8286 Hab ich noch nicht gehört

  3. Marcus sagt:

    Danke, das macht natürlich Sinn.

  4. Robin sagt:

    Ich glaube jetzt verstehe ich die Frage!

    Das untere Board wird nur zum Flashen benutzt. Danach das Board abziehen und das obere Board mit 5V versehen und verkabeln.

  5. Marcus sagt:

    Aber wie kommst du an die PINs ran wenn diese im unteren Board in den Pfosten stecken?

  6. Robin sagt:

    Hallo Marcus,

    Die Namen der GPIOs stehen auf dem Wittyboard drauf, GPIO5 zum receeiver, GPIO14 zum emitter, gnd nach masse und vcc zum vcc.

    lg
    /robin

  7. Marcus sagt:

    Kannst du ein Bild von der Verkabelung zwischen dem Modul umd dem Witty Board machen? Ich habs nicht ganz begriffen wie du an die GPIOs kommst, wenn diese bereits auf der unteren Platine in den Buchsen stecken. Danke.

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.