Project:ESPHome IR-Fernbedienung
ProjectInfoBox ESPHome Infrared Controller | |
---|---|
Status: | planned |
Initiator: | Johannes |
Software Used: | ESPHome, HomeAssistant |
In dem Projekt zeige ich wie man lästige Fernbedienungen durch einen ESP ersetzen kann.
1. Signale der Fernbedienung auslesen
Arduino Programm zum empfangen der Befehle der Fernbedienung
/*
TSOP 4838
█████████
███ ███
███ ███
█████████
║ ║ ║
║ ║ ║
║ ║ ║
OUT GND VSS
D11 D10 D9
*/
#include <IRremote.hpp> // github.com/Arduino-IRremote/Arduino-IRremote V3.9.0
void setup()
{
Serial.begin(115200);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
Serial.println("Start");
IrReceiver.begin(11, ENABLE_LED_FEEDBACK); // Start the receiver
}
void loop() {
if (IrReceiver.decode()) {
IrReceiver.printIRResultShort(&Serial); // optional use new print version
IrReceiver.resume(); // Enable receiving of the next value
}
}
So kann die Ausgabe im Serial Monitor aussehen, wenn eine Taste auf der Fernbedienung gedrückt wird:
Protocol=NEC Address=0x32 Command=0x2 Raw-Data=0xFD02CD32 32 bits LSB first
Protocol=NEC Address=0x32 Command=0x2 Repeat gap=38900us
Aufbau des NEC-Protokolls:
"Row-Data=0xFD02CD32" => 0xFD02 ist der Command und 0xCD32 ist die Adresse, die wir später brauchen.
0xCD32 (0xCD ist der invertierte wert von 0x32 z.B. 0xCD = 0xFF - 0x32)
0xFD02 (0xFD ist der invertierte wert von 0x02 z.B. 0xFD = 0xFF - 0x02)
2. Signale selber Senden
Die vorhin ausgelesen Adresse und Commands eintragen und ausprobieren.
Wenn es beim Kompilieren zu Problemen kommt, kann es sein, dass der Pi nicht genügend Arbeitsspeicher hat. Lösung: Alle Add-ons ausschalten und das ESPHome Add-on neustarten und noch mal versuchen.
ESP HOME yaml
esphome:
name: ir
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "api_key"
ota:
password: "ota_pass"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Ir Fallback Hotspot"
password: "ap_pass"
captive_portal:
remote_transmitter:
pin: GPIO15 #pin D8
carrier_duty_percent: 50%
button:
- platform: template
name: "Beamer An"
on_press:
- remote_transmitter.transmit_nec:
address: 0xCD32
command: 0xFD02
- platform: template
name: "Beamer Aus"
on_press:
- remote_transmitter.transmit_nec:
address: 0xCD32
command: 0xD12E
#....