Project:ESPHome IR-Fernbedienung: Difference between revisions

From CoMakingSpace Wiki

(Created page with "In dem Projekt zeige ich wie man lästige Fernbedienungen durch einen ESP ersetzen kann. == 1. Signale der Fernbedienung auslesen == thumb Arduino Programm zum empfangen der Befehle der Fernbedienung<syntaxhighlight lang="arduino" line="1"> /* TSOP 4838 █████████ ███ ███ ███ ███ █████████ ║ ║ ║ ║ ║ ║ ║ ║ ║ OUT GND VSS D11...")
 
m (Add Infobox)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{ProjectInfoBox|project title=ESPHome Infrared Controller|image=ESPmitIR LED.jpg|initiator=[[Johannes]]|software=ESPHome, HomeAssistant}}
In dem Projekt zeige ich wie man lästige Fernbedienungen durch einen ESP ersetzen kann.
In dem Projekt zeige ich wie man lästige Fernbedienungen durch einen ESP ersetzen kann.



Latest revision as of 21:59, 8 January 2023

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