ESP8266 Sprachsteuerung einrichten


11.05.2018  |  Tutorial, ESP8266 Projekte

Mit einem NodeMCU ESP8266 lassen sich die verschiedensten Geräte ziemlich günstig smart machen. So können zum Beispiel mit einem Relais ganz einfach Lichter per Internet gesteuert werden. In dieser NodeMCU Anleitung zeige ich dir, wie du die Sprachsteuerung deines ESP8266 mit der App AIVC einrichten kannst. Du brauchst dazu nur einen ESP8266 und ein Gerät dass du steuern möchtest. Ich mache das in diesem Beispiel mit einem 2-Kanal Relais. Es kann jedoch auch ein Relais mit 1, 4 oder 8 Kanälen verwendet werden.

2-Kanal Relais

Ohne viel Aufwand lassen sich diese smarten Geräte aber auch per Sprache steuern. Dazu wird lediglich die kostenlose App AIVC benötigt. Die PRO-Version der App enthält keine Werbung und wird mittlerweile sogar kostenlos auf der Website der Entwickler zum Download angeboten. Wenn du in AIVC mehr als 10 eigene Befehle definieren, die Spracherkennung per Hotword (so wie "Alexa" oder "Ok Google") nutzen oder Termine und Notizen verwalten möchtest, musst du zur mittlerweile kostenlosen Premium-Version von AIVC greifen, da diese Funktionen in der Free-Version fehlen.  Im Play Store herunterladen

Den ESP8266 programmieren

Bevor die Sprachsteuerung eingerichtet werden kann, muss der ESP8266 programmiert werden. Das kannst du mit der Arduino IDE machen. Wie genau das funktioniert, habe ich bereits im NodeMCU ESP8266 Einführungstutorial erklärt. In diesem Beispiel kann dann ein Relais mit 2 Kanälen gesteuert werden. Füge einfach den folgenden Code in die Arduino IDE ein, setze in den Zeilen 3 und 4 den Namen und das Passwort deines WLAN-Netzwerks ein und flashe das Programm auf deinen ESP8266.

#include <ESP8266WiFi.h>

const char* SSID = "Netzwerkname";
const char* PSK = "Netzwerkschlüssel";

WiFiServer server(80);

const int RELAIS1_PIN = 5;
const int RELAIS2_PIN = 4;

void setup() {  
  WiFi.mode(WIFI_STA);

  Serial.begin (9600);
  pinMode(RELAIS1_PIN, OUTPUT);
  digitalWrite(RELAIS1_PIN, 1);
  pinMode(RELAIS2_PIN, OUTPUT);
  digitalWrite(RELAIS2_PIN, 1);

  initWiFi();
}

void loop() {
  WiFiClient client = server.available();
  if(!client){
    return;
  }

  if(WiFi.status() != WL_CONNECTED){
    initWiFi();
  }

  String request = client.readStringUntil('\r');
  client.flush();

  String arrayString;

  if(request.indexOf("relais1-an")>=0){
    digitalWrite(RELAIS1_PIN, 0);
    Serial.println("1 an");
    arrayString = "on";
  }
  else if(request.indexOf("relais1-aus")>=0){
    digitalWrite(RELAIS1_PIN, 1);
    Serial.println("1 aus");
    arrayString = "off";
  }
  else if(request.indexOf("relais2-an")>=0){
    digitalWrite(RELAIS2_PIN, 0);
    Serial.println("2 an");
    arrayString = "on";
  }
  else if(request.indexOf("relais2-aus")>=0){
    digitalWrite(RELAIS2_PIN, 1);
    Serial.println("2 aus");
    arrayString = "off";
  }

  client.println(arrayString);
  client.stop();

  Serial.println(request);
  Serial.println("HTTP/1.1 200 OK");
  Serial.println("Content-type: text/html");
  Serial.print("Content-Length: ");
  Serial.println(arrayString.length());
  Serial.println();
  Serial.println(arrayString);
}

void initWiFi(){
  WiFi.begin(SSID, PSK);

  while(WiFi.status() != WL_CONNECTED){
    delay(500);
  }

  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  server.begin();
}

Dieser Code verbindet den ESP8266 mit deinem WLAN-Netzwerk und startet einen Webserver, der auf HTTP-Anfragen reagiert. Die möglichen Parameter sind dabei "relais1-an", "relais1-aus", "relais2-an" und "relais2-aus" zum Steuern des jeweiligen Kanals. Außerdem werden alle Befehle auf dem seriellen Monitor ausgegeben.

Die Schaltung des ESP8266

Die Schaltung des ESP8266 ist ziemlich simpel gehalten. IN1 und IN2 am Relais-Board wird mit D1 bzw. D2 des ESP8266 verbunden. Zur Stromversorgung wird das Relais bei VCC an einen 3,3 Volt Pin des ESP8266 angeschlossen. GND wird mit GND verbunden.

Das Relais wird einfach an die Pins 4 und 5 angeschlossen.
Die Geräte, die du mit dem Relais schalten möchtest, schließt du ganz normal an den NO1 und COM1 bzw. NO2 und COM2 Anschluss an.

ESP8266 Sprachsteuerung einrichten

Um die Sprachsteuerung verwenden zu können, muss als letzte nur noch AIVC konfiguriert werden. Dazu öffnest du die App, klickst unten rechts auf das Zahnrad und auf Manager. Dort wählst du nun den Punkt Befehle verwalten. Hier muss ein neues Profil erstellt werden. Ich habe die Profile nach den Räumen benannt, in denen die Befehle ausgeführt werden sollen. In meinem Fall heißt das Profil also "Schlafzimmer". Zuerst wird aber noch eine Variable erstellt, die die Werte "an" und "aus" annehmen kann. So müssen für jeden Befehl nicht zwei Varianten mit "an" bzw. "aus" erstellt werden. Klicke dazu auf den Tab "Variablen" und erstelle eine neue Variable, wie im Screenshot zu sehen. Gib ihr den Namen "ZUSTAND", wähle "Alphanumerischer Wert" und füge die Werte "an" und "aus" hinzu. Speichere die Variable und wechsle wieder zum Tab "Profile" v Klicke nun auf das vorher erstellte Profil, damit du die Befehle erstellen kannst. Dort klickst du auf "Befehl hinzufügen" und gibst hier "Relais 1 %ZUSTAND%" ein. Statt "Relais 1" kannst den Namen des Gerätes eingeben, das mit dem Relais gesteuert werden soll. Wenn dein Relais also bespielsweise dein Nachtlicht ein- und ausschaltet, könnte der Befehl "Nachtlicht %ZUSTAND%" lauten. Das, was du hier eingibst, ist anschließend auch der Befehl, der gesagt werden muss. Statt "%ZUSTAND%" können jedoch alle Werte der Variable "Zustand" eingesetzt werden. Im Dropdown ganz oben wählst du "HTTP ausführen" aus, da der ESP8266 mit einem HTTP-Aufruf angesprochen werden soll, wenn du den Befehl aussprichst. Als Antwort kannst du einen beliebigen Satz eintragen, der gesagt werden soll, nachdem dein Befehl ausgeführt wurde. Ich habe hier "Ok, Relais 1 ist jetzt %ZUSTAND%" eingetragen, damit auch geantwortet wird, ob das Relais jetzt an oder aus ist. Als URL trägst du "http://[IP DES ESP8266]/?relais1-%ZUSTAND%" ein, wie im Screenshot zu sehen. Anschließend kannst du den Befehl speichern und für den zweiten Kanal deines Relais' wiederholen. Du kannst auch mehrere verschiedene Befehle erstellen, die die gleiche URL aufrufen, damit mehrere Ausprachen verstanden werden. Wenn du deine Befehle eingetragen hast, kannst du wieder zurück zum Startbildschirm der App gehen. Stelle sicher, dass du der App in den Android Einstellungen die Berechtigung zur Verwendung des Mikrofons erteilt hast, da die Spracherkennung sonst nicht funktioniert. Klicke nun auf das Mikrofon unten in der Mitte und erteile AIVC einen Befehl. Dieser Befehl wird kurz darauf ausgeführt und du hörst den Antwortsatz, den du eingegeben hast. Jetzt kannst du deine selbst gebauten Geräte ganz einfach mit deiner Stimme steuern. Wenn du Fragen oder Ideen hast, kannst du mit gerne einen Kommentar hinterlassen.

Über den Autor


Sascha Huber

Hallo, ich bin Sascha, der Gründer von Smarthome Blogger.

Mit einer Leidenschaft für Technologie und einem Hintergrund als Software Engineer habe ich 2016 Smarthome Blogger gegründet. Mein Ziel war es schon immer, innovative Lösungen zu entdecken, die unser Leben einfacher und intelligenter gestalten können. In meinem beruflichen Leben arbeite ich täglich mit Software und Technik, aber auch in meiner Freizeit bin ich stets auf der Suche nach neuen technischen Spielereien und Möglichkeiten, mein Zuhause zu automatisieren und zu verbessern.

Auf Smarthome Blogger teile ich mein Wissen, meine Erfahrungen und meine Begeisterung für alles rund um das Thema Smarthome.



Dieser Beitrag hat dir gefallen?

Dann abonniere doch unseren Newsletter!