Wissen

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

AZDelivery NodeMCU Amica Modul V2 ESP8266 ESP-12F WiFi - Node MCU ESP 8266 WiFi Development Board mit CP2102 kompatibel mit Arduino - inklusive Installationsanleitung als E-Book

Preis: 7,49 €

Bewertung: blank
von 0 Kunden

3 gebraucht & neu verfügbar
ab 7,49 €


Jetzt bei Amazon kaufen

 

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

AZDelivery NodeMCU Lolin V3 Module ESP8266 ESP-12F WiFi WiFi Development Board mit CH340 kompatibel mit Arduino inklusive E-Book!

blank

Preis: 7,99 €

Bewertung: blank
von 0 Kunden

2 gebraucht & neu verfügbar
ab 7,99 €


Jetzt bei Amazon kaufen

 

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.

blank

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!

blank

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

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

blank

 

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

blank

 

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

blank

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

blank

 

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

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

blank

 

 

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.

blank

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“

blank

Hier ein kleines Video zur Umsetzung:

YouTube

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

Ähnliche Artikel

19 Kommentare

  1. Super funktioniert einwandfrei. Hatte vorher den SONOFF 4 CH Wlan gehabt. Aber der baut ja eine Verbindung zur CLOAD auf. Und mit dem Nodemcu bleibt alles im Haus. Arbeitet sehr zuverlässig. Ist es auch möglich, die Kanäle per Handy zu schalten. Weiss leider nicht wie man das im Code einbinden muss.

  2. Ich hab die Idee noch ein bisschen verfeinert. Meine Lösung muss man nicht mehr selbst kompilieren. Man flasht einfach ein Binary, den AP kann man per Webinterface konfigurieren. Ausserdem werden damit Funksteckdosen gesteuert, die man im Baumarkt für kleines Geld kaufen kann. Ein passendes RF-Modul gibt bei Amazon, zum Beispiel https://www.amazon.de/Aukru-Superregeneration-433M-receiver-module/dp/B00R2U8OEU

    Über das Webinterface gibt man in meiner Lösung die House- und Gerätecodes ein (wahlweise (optional) die Tristate-codes, die mit einem Empfängermodul einlesen kann). Diese Codes werden im EEPROM des ESP8266 gespeichert. Genauso wird übrigens auch mit dem WLAN verbunden. Beim ersten Start geht mein Programm in einen Errichter-modus: Man verbindet sich zum ESP8266 per WLAN. Der AP nennt sich „EasyAlexa“. Wenn man sich damit verbunden hat, macht man im Browser auf. Dort kanm man die ESSID und das Passwort des WLANs eingeben.

    Falls sich jemand für sowas interessiert, das Projekt liegt auf Github:
    https://github.com/Monarch73/RFBridge/releases

  3. Das Skript ist klasse. Gibt es die Möglichkeit die Relais zeitgesteuert, also nur kurz anzusteuern. ?
    Haber es mit Delay zwischen High und Low versucht, leider ohne Erfolg.

  4. nett gemacht – funktioniert aber nicht (mehr) mit der Alexa Echo 2 mit integriertem Hue Hub. Dieser führt keine Suche im (W)LAN mehr via UDP durch.
    Also entweder einen „alten“ Echo benutzen oder es läuft nicht.

  5. Noch ein Nachtrag:
    Wenn Du Dein Coding einfach in das „WiFiManager“ Sketch reinkopierst, dann kannst Du bei Änderung der SSID oder des Passworts die Einstellungen über das ESP eigene WLAN einstellen.
    Verliert der ESP die Verbindung zum WLAN, dann bootet er mit WiFiManager neu und agiert als Access Point. Du musst Dich dann nur anmelden, die neuen Verbindungsdaten eingeben und schwups ist er wieder im WLAN – ganz ohne ihn ausbauen zu müssen. Hier ist die jeweils aktuelle Version des WiFiManager: https://github.com/tzapu/WiFiManager

    Erleichtert die Handhabe enorm – zur Info!

  6. Ich finde keinen Hinweis, daß der 2nd Gen Echo die Wemo-Switches noch unterstützt. Von daher ist es nicht weiter wunderlich, das das ganze mit den neuen Echos nicht mehr funktioniert.

    2nd Gen Echo Dots scheinen nicht betroffen zu sein…

  7. Hallo Zusammen,

    hat schon jemand eine Alternative gefunden die mit einem Echo der 2 Generation läuft?

  8. Hallo zusammen,
    Ich habe versucht wie oben den Sketch hochzuladen aber meine Alexa Echo erkennt den esp8266 nicht. Ist es richtig das ich bei dem Sketch nur die SSID und Wlan Passwort ändern muss. Oder fehlt hier noch etwas, was ich übersehen haben. Über eine Antwort würde ich mich sehr freuen.
    Gruß
    Patrick

  9. @Fritz
    leider habe ich probleme mit einer fehlerfreien Zuweisung aller PINs.
    Hast du hier für mich ein paar Anhaltspunkte?
    Gruß
    Andi

  10. Es gibt eine Seite, die nennt sich sinric.com
    Damit müsste es mit Alexa der 2. Generation funktionieren.
    Hier ist ein Video, wo er es am Anfang genau das gleiche gemacht hat, wie hier beschrieben wurde.
    Da Fauxmo nicht mehr kompatibel mit der 2. Generation ist, hat er dann auf Sinric umprogrammiert.

  11. @Volker: Dasselbe Problem hatte ich auch – das liegt daran, dass sich die fauxmoESP Bibliothek mit Version 3.0.0 grundlegend geändert hat (basiert seitdem auf Philips Hue).

    Unter folgendem Link können ältere Versionen der fauxmoEXP Bibliothek heruntergeladen werden: https://bitbucket.org/xoseperez/fauxmoesp/downloads/?tab=tags

    Oder du gehst über Sketch -> Bibliothek einbinden -> Bibliotheken verwalten und suchst nach fausmo. Hier kann dann auf eine ältere Version (in diesem Fall auf 2.3.0) gewechselt werden und es hat alles schön sauber kompiliert und funktioniert =)

    Hoffe ich konnte weiterhelfen.

  12. Kann man auch mehr als 3 gpio ansteuern bei mir findet alexa die gpios nur wenn maximal 3 drauf geladen sind bei 4 oder mehr geht es nicht mehr und alexa findet keinen

  13. Hallo zusammen,
    ich bekomme die nachfolgende Fehlermeldung obwohl ich es genau nach der Anleitung gemacht habe. Kann mir einer weiterhelfen ?
    Gruß Nico

    ‚class fauxmoESP‘ has no member named ‚onMessage‘

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"