Project:ESPHome IR-Fernbedienung

From CoMakingSpace Wiki

ProjectInfoBox

ESPHome Infrared Controller

ESPmitIR LED.jpg
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

ArduinoUNO IrReceiver.jpeg

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.

ESPmitIR LED.jpg

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
#....

Nützliche Links

ESPHome_Remote Transmitter

NEC Infrared Transmission Protocol PDF

Arduino-IRremote