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 Lua Amica Module V2 ESP8266 ESP-12E WIFI Wifi Development Board mit CP2102 und gratis eBook!


Preis: EUR 7,99

Bewertung: 4.7 von 5 Sternen
von 22 Kunden

1 gebraucht & neu verfügbar
ab EUR 7,99



Jetzt bei Amazon kaufen

 

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

AZDelivery NodeMCU Lua Lolin V3 Module ESP8266 ESP-12E WIFI Wifi Development Board mit CH340 und gratis eBook!


Preis: EUR 7,49

Bewertung: 4.6 von 5 Sternen
von 18 Kunden

1 gebraucht & neu verfügbar
ab EUR 7,49



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:

tinxi® 8 Kanal Relais Modul 5V DC 230V Optokoppler passend für Arduino Raspberry Pi


Preis: EUR 7,89

Bewertung: 4.2 von 5 Sternen
von 24 Kunden

3 gebraucht & neu verfügbar
ab EUR 7,89



Jetzt bei Amazon kaufen

 

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 "Azubi 3"
#define WIFI_PASS "balda7s3"
// -----------------------------------------------------------------------------
// 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:

 

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:

  • alexa skills

Tags

Ähnliche Artikel

2 thoughts on “NodeMCU ESP8266 mit Alexa (Amazon Echo) steuern”

  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.

Kommentar verfassen

Close

Adblock Entdeckt

Bitte unterstütze uns in dem Du AdBlock deaktivierst.

Send this to a friend