NodeMCU ESP8266 mit Alexa (Amazon Echo) steuern

In dieser kleinen Anleitung zeige ich Euch, wie man ziemlich kostengünstig die Alexa für Steuerungsaufgaben benutzen kann – ohne einen eigenen Skill programmieren zu müssen. Hier tricksen wir etwas und gaukeln der Alexa einfach ein paar schaltbare Steckdosen vor, für die es schon einen fertigen Skill des Herstellers gibt. Dies hat gleich zwei große Vorteile – zum einen müssen wir uns nicht um die Anbindung an das Amazon Echo System kümmern und der zweite große Vorteil ist – man benötigt keinen „Aufrufnamen“! Stattdessen kann man einfach sagen – Alexa schalte Test 1 an oder eben aus! ;)

Doch bevor wir ans die Programmierung gehen hier eine kleine Übersicht, was man an Hardware benötigt.

 

NodeMCU ESP8266

 

Mit dieser Hardware habe ich es getestet!
Es sollte aber auch mit der Version 3 funktionieren.

 

Dies ist sozusagen das Herz unseres Aufbaus.
Hier steuern wir die GPIOs an, welche dann die Ausgänge schalten.
An den Ausgang können wir dann ein Relais hängen und damit auch größere Lasten schalten.
Das richtig geniale an dieser kleinen Platine ist – es ist alles mit on Board, was man so benötigt!

Um Last schalten zu können, besorgt man sich am besten folgende Relais:

 

Diese gibt es auch in einer Einzelvariante – mit zwei Relais und mit einer Bestückung zu 4 Relay.

Die Komponenten, welche ich Euch hier heraus gesucht habe – sind alles Prime Artikel von Händlern, mit denen ich gute Erfahrungen gesammelt habe. Möchte man weniger Geld ausgeben und ist gewillt etwas länger zu warten, gibts bei Amazon auch noch günstigere Angebote und man kann sich einen ESP8266 für unter 5 Euro holen. Bei den 8er Relais liegt man in etwa in der gleichen Preislage.

Alexa kann übrigens bis zu 16 Endgeräte dieser Art bedienen. Ich würde Euch jedoch empfehlen, bei diesem kleinen Chip nicht über die 8 Geräte Grenze zu gehen. Habe gehört, es würde dann Probleme bei der Einbindung geben.

Als nächste Benötigen wir etwas Software! 

Software für die Programmierung:
Arduino IDE

Erweiterungen für diese Software:
ESPAsyncTCP

ESPAsyncWebServer

fauxmoESP
(ganz links unten Download)

Schritt 1: Anpassung der Arduino IDE

Um einen ESP programmieren zu können, muss das Board in dieser Software hinterlegt werden.
Um diesen zu hinterlegen, benötigen wir einen Boardmanager und genau diese Einstellung für die Integration des Boardverwalters, tragen wir nun in die Software ein.

Diese Boardveralter-URL wird benötigt um einen ESP8266 zu programmieren:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Jetzt öffnet ihr die Arduino IDE und geht dort auf
–> Datei
–> Voreinstellungen

Relativ weit unten findet man nun ein Feld für zusätzliche Boardverwalter-URLs!

Jetzt hinterlegen wir die Unterstützung für das Board:

–> Werkzeuge
–> Board:XXX
–> ganz oben –> Boardverwalter

 

Nach „esp“ suchen und esp8266 in der neusten Version installieren.
Momentan –> 2.3.0

 

Nun schließen wir das Board an und hinterlegen in den Einstellungen das richtige Board:
Board: NodeMCU 1.0 (ESP-12E Module)

und setzen danach den richtigen „COM“ Port.
Dieser kann im Gerätemanager eingesehen werden.

 

Jetzt importieren wir die benötigen Bibliotheken:
–> Sketch
–> Bibliothek einbinden
–> .ZIP Bibliothek hinzufügen

Die drei ZIP Files auswählen und „installieren“.

 

 

Script öffnen:

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "fauxmoESP.h"
#define SERIAL_BAUDRATE                 115200
fauxmoESP fauxmo;
 
// -----------------------------------------------------------------------------
// Wifi definieren
// -----------------------------------------------------------------------------

#define WIFI_SSID "Testnetz"
#define WIFI_PASS "testpasswort"

// -----------------------------------------------------------------------------
// PINs definieren
// -----------------------------------------------------------------------------

#define RELAY_PIN1 13
#define RELAY_PIN2 15

 
 
void wifiSetup() {
  // Set WIFI module to STA mode
  WiFi.mode(WIFI_STA);
 
  // Verbinden
  Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
 
  // Warten
  while (WiFi.status() != WL_CONNECTED) {
      Serial.print(".");
      delay(100);
  }
  Serial.println();
 
  // Verbunden!
  Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}
 
 
void callback(uint8_t device_id, const char * device_name, bool state) {
  Serial.printf("[MAIN] %s state: %s\n", device_name, state ? "ON" : "OFF");
  
// -----------------------------------------------------------------------------
// Abfragen definieren
// -----------------------------------------------------------------------------
 
  if ( (strcmp(device_name, "TEST1") == 0) ) {
    // adjust the relay immediately!
    if (state) {
      digitalWrite(RELAY_PIN1, HIGH);
    } else {
      digitalWrite(RELAY_PIN1, LOW);
    }
  }


  if ( (strcmp(device_name, "TEST2") == 0) ) {
    // adjust the relay immediately!
    if (state) {
      digitalWrite(RELAY_PIN2, HIGH);
    } else {
      digitalWrite(RELAY_PIN2, LOW);
    }
  }
}
 
void setup() {

// -----------------------------------------------------------------------------
// PINs setzen
// -----------------------------------------------------------------------------
  
  pinMode(RELAY_PIN1, OUTPUT);
  digitalWrite(RELAY_PIN1, LOW);

  pinMode(RELAY_PIN2, OUTPUT);
  digitalWrite(RELAY_PIN2, LOW);
  
    // Init serial port and clean garbage
    Serial.begin(SERIAL_BAUDRATE);
    Serial.println();
    Serial.println();
    Serial.println("FauxMo Relay Setup");
    Serial.println("Nach der Verbindung sage: Alexa schalte test / test2 an / aus .");
 
  // Wifi
  wifiSetup();
  
// -----------------------------------------------------------------------------
// Endgeraete Namen definieren
// -----------------------------------------------------------------------------

  // Fauxmo
  fauxmo.addDevice("TEST1");
  fauxmo.addDevice("TEST2");
  fauxmo.onMessage(callback);

}
 
uint8 _tj = 0; 
void loop() {
  fauxmo.handle();
}

Daten im Script anpassen. Ich habe hier nur zwei Testgeräte als Schalte definiert.

GPIO PINs des NodeMCU ESP8266 könnt ihr hier einsehen!

Schritt 2: Kompilieren und hoch laden!
Jetzt kann man den Sketch kompellieren und hoch laden.

Schritt 3: Alexa App starten und nach neuen Geräten suchen.
Alexa App –> Smart Home –> Geräte –> Suche
oder
einfach sagen: „Alexa suche neue Geräte“

Hier ein kleines Video zur Umsetzung:

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

 

Wie ihr seht, ist die Reaktionszeit auch wahnsinnig hoch!

Fazit:
Eine sehr schnelle und sehr billige Methode, wenn man über die Alexa per Sprache Dinge steuern möchte. Der einzig kleine Nachteil an dieser Methode ist – die Einstellungen sind fest am NodeMCU hinterlegt. D.h. ändert sich zum Beispiel die WLAN ID, muss der Chip nochmals mit dem PC verbunden und die Daten neu übertragen werden.

Tipp:
Wer keinen Platz zur Verfügung hat, der kann sich auch nur einen ESP8266 kaufen und diesen mittels eines Programmierboards betanken. Dann ist die Elektronik, welche unter gebraucht werden muss, nur noch 1/4 so groß.


Tags:

  • esp alexa relay
  • esp8266 mit alexa steuern
  • alexa nodemcu
  • espressif wemos d1 mini alexa
  • mcu node esp32 Temperatur über alexa
Die mobile Version verlassen