Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

TV per Alexa steuern: Arduino & ESP8266 (NodeMCU) Setup

Komponenten und Zubehör

Arduino UNO × 1
NodeMCU ESP8266 Breakout Board × 1
IR-Sendediode (IR-LED) + 100 Ω Vorwiderstand × 1

Benötigtes Werkzeug

Apps und Onlinedienste

Projektbeschreibung

Alexa als TV-Fernbedienung nutzen

Idee: Die IR-Codes der Original-Fernbedienung werden ausgelesen und per Sprachbefehl über Alexa wieder ausgesendet. Alles, was die Fernbedienung kann, kann dann per Sprache gesteuert werden.

Schritt 1: Vorab-Bibliotheken installieren

In der Arduino IDE (Bibliotheksverwalter oder manuell als ZIP):

Schritt 2: NodeMCU (ESP8266) programmieren

Sketch ESP8266-Alexa.ino öffnen und auf den NodeMCU hochladen (Boardverwalter: ESP8266 hinzufügen).

Anpassen:

TV per Alexa steuern: Arduino & ESP8266 (NodeMCU) Setup
Gerätenamen im ESP8266-Code definieren

Schritt 3: IR-Codes der TV-Fernbedienung auslesen

Sketch IR_REMOTE_read.ino auf den Arduino UNO laden. IR-Empfänger (z. B. TSOP4838) an Pin 10 anschließen. Seriellen Monitor öffnen (9600 Baud) und Tasten der Fernbedienung drücken – die HEX-Codes werden angezeigt und notiert.

Schritt 4: Arduino für IR-Senden via Alexa programmieren

Sketch IR-Alexa-Send.ino auf den Arduino UNO laden (Board: „Arduino Uno“ wählen).

Verdrahtung:

TV per Alexa steuern: Arduino & ESP8266 (NodeMCU) Setup
Endgültige Verdrahtung

Schritt 5: Mit Alexa testen

  1. Alexa-App → Smart Home → „Gerät hinzufügen“.
  2. Die im ESP8266-Code definierten Gerätenamen (TV, GregsNetflix, Sleep, Office) werden als „WeMo“-Geräte gefunden.
  3. Sprachbefehle testen:
    • „Alexa, schalte TV an“
    • „Alexa, schalte GregsNetflix an“
    • „Alexa, schalte Sleep an“
    • „Alexa, schalte Office an“
TV per Alexa steuern: Arduino & ESP8266 (NodeMCU) Setup
Erkannte Geräte in der Alexa-App

Code (drei Sketches)

1. ESP8266-Alexa.ino (NodeMCU – emuliert WeMo-Geräte)

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "fauxmoESP.h"

#define WIFI_SSID "IHR_WLAN_SSID"
#define WIFI_PASS "IHR_WLAN_PASSWORT"
#define SERIAL_BAUDRATE 115200

fauxmoESP fauxmo;

void wifiSetup() {
  WiFi.mode(WIFI_STA);
  Serial.printf("[WIFI] Verbinde mit %s ", WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print("."); delay(100);
  }
  Serial.println();
  Serial.printf("[WIFI] Verbunden! IP: %s\n", WiFi.localIP().toString().c_str());
}

#define RELAY_PIN1 13 // D7
#define RELAY_PIN2 2  // D4
#define RELAY_PIN3 14 // D5
#define RELAY_PIN4 15 // D8

void setup() {
  pinMode(RELAY_PIN1, OUTPUT); digitalWrite(RELAY_PIN1, LOW);
  pinMode(RELAY_PIN2, OUTPUT); digitalWrite(RELAY_PIN2, LOW);
  pinMode(RELAY_PIN3, OUTPUT); digitalWrite(RELAY_PIN3, LOW);
  pinMode(RELAY_PIN4, OUTPUT); digitalWrite(RELAY_PIN4, LOW);

  Serial.begin(SERIAL_BAUDRATE);
  Serial.println("FauxMo Demo - Alexa steuert TV via IR");

  wifiSetup();

  // Alexa-Gerätenamen (frei wählbar)
  fauxmo.addDevice("TV");
  fauxmo.addDevice("GregsNetflix");
  fauxmo.addDevice("Sleep");
  fauxmo.addDevice("Office");
  fauxmo.onMessage(callback);
}

void callback(uint8_t device_id, const char * device_name, bool state) {
  Serial.printf("[MAIN] %s: %s\n", device_name, state ? "ON" : "OFF");
  // Puls an Arduino senden (HIGH für ~500ms)
  if (strcmp(device_name, "TV") == 0) {
    digitalWrite(RELAY_PIN1, state ? HIGH : LOW);
  }
  if (strcmp(device_name, "GregsNetflix") == 0) {
    digitalWrite(RELAY_PIN2, state ? HIGH : LOW);
  }
  if (strcmp(device_name, "Sleep") == 0) {
    digitalWrite(RELAY_PIN3, state ? HIGH : LOW);
  }
  if (strcmp(device_name, "Office") == 0) {
    digitalWrite(RELAY_PIN4, state ? HIGH : LOW);
  }
}

void loop() {
  fauxmo.handle();
  delay(500);
  // Pins nach kurzer Zeit wieder LOW (Puls)
  digitalWrite(RELAY_PIN1, LOW);
  digitalWrite(RELAY_PIN2, LOW);
  digitalWrite(RELAY_PIN3, LOW);
  digitalWrite(RELAY_PIN4, LOW);
}

2. IR-Alexa-Send.ino (Arduino UNO – sendet IR-Codes)

#include <IRremote.h>

IRsend irsend;
#define PIN_TV       4 // NodeMCU -> Arduino Pin 4
#define PIN_NETFLIX  5 // NodeMCU -> Arduino Pin 5
#define PIN_SLEEP    6 // NodeMCU -> Arduino Pin 6
#define PIN_OFFICE   7 // NodeMCU -> Arduino Pin 7

void setup() {
  Serial.begin(9600);
  pinMode(PIN_TV, INPUT);
  pinMode(PIN_NETFLIX, INPUT);
  pinMode(PIN_SLEEP, INPUT);
  pinMode(PIN_OFFICE, INPUT);
}

void loop() {
  // TV Power
  if (digitalRead(PIN_TV) == HIGH) {
    irsend.sendNEC(0x57E3E817, 32); // Power-Code (Beispiel!)
    Serial.println("TV Power");
    delay(500);
  }

  // Gregs Netflix: komplexe Sequenz
  if (digitalRead(PIN_NETFLIX) == HIGH) {
    irsend.sendNEC(0x57E354AB, 32); delay(2000); // Enter
    irsend.sendNEC(0x57E39867, 32); delay(1000); // Up
    irsend.sendNEC(0x57E39867, 32); delay(1000); // Up
    irsend.sendNEC(0x57E39867, 32); delay(1000); // Up
    irsend.sendNEC(0x57E3B44B, 32); delay(1000); // Right
    irsend.sendNEC(0x57E354AB, 32); delay(2000); // Enter
    irsend.sendNEC(0x57E354AB, 32);               // Enter
    Serial.println("Gregs Netflix");
    delay(500);
  }

  // Sleep Timer
  if (digitalRead(PIN_SLEEP) == HIGH) {
    irsend.sendNEC(0x57E38679, 32); delay(1500); // Options
    irsend.sendNEC(0x57E3CC33, 32); delay(700);  // Down x4
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3B44B, 32); delay(700);  // Right x2
    irsend.sendNEC(0x57E3B44B, 32); delay(900);
    irsend.sendNEC(0x57E38679, 32);               // Options
    Serial.println("Sleep Timer");
    delay(500);
  }

  // Office (Beispiel: Netflix Direktzugriff)
  if (digitalRead(PIN_OFFICE) == HIGH) {
    irsend.sendNEC(0x57E34AB5, 32); // Netflix-Taste
    Serial.println("Office/Netflix");
    delay(500);
  }
}

WICHTIG: Die HEX-Codes (0x57E3E817 etc.) sind beispielhaft und müssen durch die in Schritt 3 ausgelesenen Codes Ihrer Fernbedienung ersetzt werden!

3. IR_REMOTE_read.ino (Arduino – IR-Codes auslesen)

#include <IRremote.h>
#include <LiquidCrystal.h>

// LCD-Verdrahtung (Beispiel)
LiquidCrystal lcd(12, 11, 5, 4, 9, 2);
int receiverPin = 10;
IRrecv irrecv(receiverPin);
decode_results results;

void setup() {
  lcd.begin(16, 2);
  pinMode(receiverPin, INPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    lcd.clear();
    lcd.print(results.value, HEX);
    delay(150);
    irrecv.resume();
  }
}

Schaltplan

TV per Alexa steuern: Arduino & ESP8266 (NodeMCU) Setup
Komplette Verdrahtung: NodeMCU (WeMo-Emulation) → Arduino (IR-Sender)

Herstellungsprozess

  1. Antibabypille: Geschichte, Nutzen, Risiken und Produktion
  2. Übergang industrieller Steuerungssysteme auf drahtlose Netze
  3. Warum Duroplast-Composites die ideale Wahl für moderne Fertigung sind
  4. Industriellen Touchscreen reparieren oder austauschen? Experten-Entscheidungshilfe
  5. Deckenventilator per Alexa steuern – Schritt-für-Schritt-Anleitung
  6. Autoreparaturen meistern: DIY-Tipps für Zuverlässigkeit und Ersparnis
  7. Industrielle Steuerungssysteme schützen: Bewährte Strategien & Best Practices
  8. Profi-Leitfaden: Metallbohren mit Ihrer Maschine – Expertentipps
  9. Acht bewährte Schritte zur Diagnose und Behebung Ihres Prozessleitsystems
  10. PC per Wake-on-LAN mit PLCnext fernwecken