NodeMCU Dev Kit mit Amazon Alexa steuern

In diesem Beitrag möchte ich dir zeigen wie einfach es ist das NodeMCU Dev Kit mit einem Amazon Alexa Echot Dot per Sprachbefehl zu steuern.

Natürlich kannst du auch jeden anderen Microcontroller mit einem ESP8266 / ESP32 Chip verwenden. Ich verwende das NodeMCU Dev Kit da dieses bereits einige LEDs verbaut hat und somit eine zusätzliche Schaltung entfällt.

benötigte Resourcen

Für den nachbau dieses Projektes benötigst du:

Den Amazon Echo Dot findest du natürlich auf amazon.de, es gibt zu gewissen Tagen besonderes niedrige Preise oder du schaust einfach bei ebay.de nach einem gebrauchten Gerät. Für dieses Projekt verwende ich einen Amazon Echo Dot in der 3. Generation und in der 1. Generation bei beiden hat dieses Beispiel funktioniert.

Bibliotheken

Wie du einen Microcontroller mit ESPx Chip in ein bestehendes WiFi Netzwerk einbindest habe ich bereits in diversen Beiträgen auf diesem Blog gezeigt (zbsp. im Beitrag xyz zum NodeMCU Dev Kit).

Du benötigst die Bibliotheken:

Ich habe dir jeweils die *.zip Dateien in der Liste hinterlegt. Diese musst du zunächst herunterladen und danach in die Arduino IDE hinzufügen.

Programmieren

Der Bibliothek „fauxmoESP“ liegt ein lauffähiges Beispiel bei, welches verschiedenen farbige LEDs / Lampen steuern soll. Dieses schreiben wir im weiteren verlauf um so das wir die BUILDIN_LED des ESP8266 aktivieren bzw. deaktiveren. 
Zum aktivieren der LED wird der Befehl „Alexa, aktiviere blaue Lampe“ und zum deaktivieren „Alexa, deaktiviere blaue Lampe“ gesagt. ABER bevor du das machen kannst musst du deinen Microcontroller entsprechend programmieren und deinen Echo Dot einrichten. Wie du dieses machst erfährst du in diesem Kapitel.

laden eines Beispieles aus der „faumoESP“ Bibliothek

Laden wir zunächst das Beispiel Sketch aus „Datei“ > „Beispiele“ > „fauxmoESP“ > „fauxmoESP_Basic“.

Beispiel "faumoESP_Basic" für den Amazon Echo Dot
Beispiel „faumoESP_Basic“ für den Amazon Echo Doto

Bevor wir das Sketch auf den ESP speichern müssen wir die Datei „credentials.sample.h“ in „credentials.h“ umbenennen, dazu speichern wir zunächst das Beispiel in einen beliebigen Ordner und betätigen danach die Tastenkombination Strg+K. Es sollte sich nun der Ordner öffnen in welchem wir das Sketch gespeichert haben. Nachdem dieses erledigt ist geben wir in der *.h Datei die  SSID sowie das Passwort für das WLAN Netzwerk ein.

In dem nachfolgenden Video zeige ich dir nun wie du dieses in der Arduino IDE machst.

Quellcode

Wie erwähnt, verwenden wir ein Beispiel aus der mitgelieferten Bibliothek somit müssen wir nur ein paar kleine Änderungen durchführen.

Anpassungen an dem Beispiel „fauxmoESP_Basic“

//definieren der BUILDIN_LED
#define BLUE_LED 2
#define ID_BLUE_LED "blaue lampe"

//hinzufügen des Gerätes "blaue lampe"
void setup(){
  ...
  fauxmo.addDevice(ID_BLUE_LED);
  ...
  //Wenn der Sprachbefehl zum aktivieren / deaktiviern gegeben wird dann... 
  if (strcmp(device_name, ID_BLUE_LED)==0) {
    digitalWrite(BLUE_LED, state ? LOW : HIGH);
  }
}

gesamter Quellcode / das fertige Sketch

Hier nun der Quellcode um die BUILD_IN LED des ESP8266 über den Sprachbefehl „Alexa, schalte die blaue Lampe ein“ zu aktivieren bzw. über „Alexa, schalte die blaue Lampe aus“ zu deaktivieren.

#include <Arduino.h>
#ifdef ESP32
    #include <WiFi.h>
#else
    #include <ESP8266WiFi.h>
#endif
#include "fauxmoESP.h"

#include "credentials.h"

//#define WIFI_SSID "..."
//#define WIFI_PASS "..."
fauxmoESP fauxmo;

#define SERIAL_BAUDRATE     115200

#define BLUE_LED          2

#define ID_BLUE_LED           "blaue lampe"

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

void setup() {
    Serial.begin(SERIAL_BAUDRATE);
    Serial.println();
    Serial.println();

    pinMode(BLUE_LED, OUTPUT);

    wifiSetup();
    fauxmo.createServer(true); // not needed, this is the default value
    fauxmo.setPort(80); // This is required for gen3 devices
    fauxmo.enable(true);
    fauxmo.addDevice(ID_BLUE_LED);
    
    fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) {       
        Serial.printf("[MAIN] Device #%d (%s) state: %s value: %d\n", device_id, device_name, state ? "ON" : "OFF", value);
        if (strcmp(device_name, ID_BLUE_LED)==0) {
            digitalWrite(BLUE_LED, state ? LOW : HIGH);
        } 
    });
}

void loop() {
    fauxmo.handle();
    static unsigned long last = millis();
    if (millis() - last > 5000) {
        last = millis();
        Serial.printf("[MAIN] Free heap: %d bytes\n", ESP.getFreeHeap());
    }
}

Download

Hier nun der Quellcode zum bequemen download.

 

Einrichten des Amazon Echo Dot

Die Einrichtung des Echo Dot ist sehr einfach, in meinem Fall musste ich nur „Alexa, suche neue Geräte“ sagen und es wurde der Microcontroller gefunden und automatisch unter der Bezeichnung „blaue lampe“ eingerichtet.

Alexa App - Gerät "blaue lampe"
Alexa App – Gerät „blaue lampe“

Alternativ kann man auch über die Alexa App aus dem Google PlayStore nach Geräte suchen.

Upload des Sketches und Einrichten des Echo Dots

Im nachfolgenden Video zeige ich dir wie das Sketch auf den ESP8266 (in diesem Fall das NodeMCU Dev Kit) gespeichert und der Echo Dot eingerichtet wird.

Amazon Echo Dot zum steuern eines ESP8266
Dieses Video ansehen auf YouTube.

 

Video

In diesem Video zeige ich dir nun die einfache Funktion zum steuern der BUILD_IN LED am ESP8266 welche am GPIO 2 angeschlossen ist. Da das NodeMCU Dev Kit über zusätzliche SMD LEDs verfügt wird noch die SMD LED 1 aktiviert bzw. deaktiviert.

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.