ESP8266 Sprachsteuerung einrichten

Tutorial
Teile diesen Beitrag

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.

Amazon Prime6,79 €
Stand: 24. Mai 2019 16:58 Uhr
Auf Amazon ansehen
Amazon Prime6,99 €
Stand: 24. Mai 2019 17:41 Uhr
Auf Amazon ansehen

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.

AIVC (Alice)
Preis: Kostenlos

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.

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“

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.

Teile diesen Beitrag
Vorheriger Beitrag
Alexa Z-Wave Steuerung einrichten
Nächster Beitrag
MQTT Raspberry Pi Einführung

Ähnliche Beiträge

Menü

Wir nutzen Cookies, um dir passende Inhalte zu präsentieren und dein Surfvergnügen zu optimieren, aktivieren Cookies aber erst, wenn du auf akzeptieren klickst. Weitere Informationen

Wir benutzen Google Analytics, um zu ermitteln, welche Inhalte unsere Besucher sehen wollen und welche nicht. Eingebettete YouTube-Videos helfen dir mittels Cookies nur die Videos zu sehen, die du sehen willst.

Schließen