Ein Relais mit ESP32 oder ESP8266 über Alexa und Google Home steuern (Switch Tutorial Teil 1)

In diesem Abschnitt bauen wir einen Sinric Pro Switch für ESP32, ESP8266 oder Raspberry Pi Zero W und steuern ihn anschließend über Alexa, Google Home oder SmartThings.

Voraussetzungen :

  1. ESP32, ESP8266 oder RaspPi W x 1.
  2. SPDT Relaismodul x 1.
  3. Jumperkabel.

Sinric Pro esp8266 esp32 picow

Kurze Einführung zum Relais

Ein Relais ist ein elektrisch betätigter Schalter, der sich über ein Niederspannungssignal ein- oder ausschalten lässt. Wie ein normaler Schalter lässt es Strom fließen oder unterbricht ihn, kann aber mit einer deutlich geringeren Spannung angesteuert werden. Das macht Relais ideal für MCUs, wenn ein Hochspannungsstromkreis mit einem Niederspannungssignal gesteuert werden muss.

Wie es funktioniert

Die Arbeitsweise eines Relais kann je nach Hersteller, Verdrahtung und Typ des Relaismoduls unterschiedlich sein. Manche Relaismodule benötigen ein High-Signal vom MCU, um das Relais zu aktivieren, andere benötigen ein Low-Signal. Prüfe daher vor der Nutzung die technischen Daten des Relaismoduls, um sicherzustellen, dass es mit deinem MCU kompatibel ist.

High-Signal: Ein High-Signal ist ein Signal oberhalb eines bestimmten Spannungsschwellenwerts. Ein 5V-Relaismodul benötigt zum Beispiel ein Signal oberhalb von 3,3V, um das Relais zu aktivieren.

digitalWrite(pin, HIGH);

Low-Signal: Ein Low-Signal ist ein Signal unterhalb eines bestimmten Spannungsschwellenwerts. Ein 5V-Relaismodul benötigt zum Beispiel ein Signal unterhalb von 0,8V, um das Relais zu aktivieren.

digitalWrite(pin, LOW);

Hochspannungsanschlüsse High Voltage Connectors

Das Relaismodul im Bild oben hat einen einzelnen Anschluss mit drei Kontakten: Common (COM), Normally Closed (NC) und Normally Open (NO).

Common (COM): COM ist der gemeinsame Anschluss für NO und NC. Verbinde das Hochspannungsgerät mit dem COM-Pin.

Normally Closed (NC): Der Stromkreis ist standardmäßig geschlossen.

Normally Open (NO): Der Stromkreis ist standardmäßig offen.

Mit Normally Open (NO) und Normally Closed (NC) kannst du über einen Pin je nach Bedarf zwei separate Stromkreise steuern. Du könntest zum Beispiel einen Pin zur Steuerung einer Glühlampe und einen anderen zur Steuerung eines Motors verwenden. Ist der Pin high/low, schaltet die Glühlampe ein, andernfalls schaltet der Motor ein.

Verdrahtung

Sinric Pro esp8266 relay wiring

Sinric Pro esp8266 relay wiring

MCU Pin
ESP32 16
ESP8266 12 (D6)
RaspPi W 6

Bevor wir die Verbindung zu Sinric Pro herstellen, solltest du prüfen, ob das Relais korrekt verdrahtet ist. Mit dem folgenden Code kannst du prüfen, ob sich das Relais alle 5 Sekunden ein- und ausschaltet.

#if defined(ESP8266)
  #define relay        12
#elif defined(ESP32) 
  #define relay        16
#elif (ARDUINO_ARCH_RP2040)
  #define relay        6
#endif

void setup() {
  Serial.begin(115200);
  pinMode(relay, OUTPUT);
}

void loop() {
  Serial.println("Writing HIGH ..");
  digitalWrite(relay, HIGH);
  delay(5000); 
  
  Serial.println("Writing LOW ..");
  digitalWrite(relay, LOW);
  delay(5000);
}

Diesen Code auf GitHub Gist ansehen

Schritt 1 : Neues Gerät in Sinric Pro anlegen

Sinric Pro create device alexa

Sinric Pro online offline push notifications

Um Push-Benachrichtigungen zu erhalten, wenn dein Gerät online oder offline geht, aktiviere die Option „Connect and Disconnect“ in der Sinric Pro App. Um Push-Benachrichtigungen zu erhalten, wenn dein Gerät ein- oder ausgeschaltet wird, aktiviere die Option „On and Off“.

Sinric Pro copy device id

Schritt 2 : Programmierung

2.1 Sinric Pro Bibliothek installieren

Sinric Pro install SinricPro library

Du kannst den Code generieren über die Funktion Zero Code oder ihn selbst schreiben. Wenn du keine Programmiererfahrung hast, empfehlen wir die Zero Code Funktion im Portal zu nutzen, um den Code zu erzeugen, herunterzuladen und zu flashen.

2.2 Vollständiger Code

#include <Arduino.h>
#if defined(ESP8266)
  #include <ESP8266WiFi.h>
#elif defined(ESP32) || defined(ARDUINO_ARCH_RP2040)
  #include <WiFi.h>
#endif

#include "SinricPro.h"
#include "SinricProSwitch.h"

#define WIFI_SSID         ""  // Change WIFI_SSID to your WiFi Name.
#define WIFI_PASS         ""  // Change WIFI_PASS to your WiFi password.
#define APP_KEY           ""  // Paste App Key from above 
#define APP_SECRET        ""  // Paste App Secret from above 
#define SWITCH_ID_1       ""  // Paste Device Id from  above

#if defined(ESP8266)
  #define RELAYPIN_1        12
#elif defined(ESP32) 
  #define RELAYPIN_1        16
#elif (ARDUINO_ARCH_RP2040)
  #define RELAYPIN_1        6
#endif

#define BAUD_RATE         115200                // Change baudrate to your need

bool onPowerState1(const String &deviceId, bool &state) {
 Serial.printf("Device 1 turned %s", state?"on":"off");
 digitalWrite(RELAYPIN_1, state ? HIGH:LOW);
 
 /* If your relay is activated with low signal, change the above to below code
  digitalWrite(RELAYPIN_1, state ? LOW : HIGH); */

 return true; // request handled properly
}

// setup function for WiFi connection
void setupWiFi() {
  Serial.printf("\r\n[Wifi]: Connecting");

  #if defined(ESP8266)
    WiFi.setSleepMode(WIFI_NONE_SLEEP); 
    WiFi.setAutoReconnect(true);
  #elif defined(ESP32)
    WiFi.setSleep(false); 
    WiFi.setAutoReconnect(true);
  #endif

  WiFi.begin(WIFI_SSID, WIFI_PASS);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.printf(".");
    delay(250);
  }

  Serial.printf("connected!\r\n[WiFi]: IP-Address is %s\r\n", WiFi.localIP().toString().c_str());
}

// setup function for SinricPro
void setupSinricPro() {
  // add devices and callbacks to SinricPro
  pinMode(RELAYPIN_1, OUTPUT);
    
  SinricProSwitch& mySwitch1 = SinricPro[SWITCH_ID_1];
  mySwitch1.onPowerState(onPowerState1);
    
  // setup SinricPro
  SinricPro.onConnected([](){ Serial.printf("Connected to SinricPro\r\n"); }); 
  SinricPro.onDisconnected([](){ Serial.printf("Disconnected from SinricPro\r\n"); });
   
  SinricPro.begin(APP_KEY, APP_SECRET);
}

// main setup function
void setup() {
  Serial.begin(BAUD_RATE); Serial.printf("\r\n\r\n");
  setupWiFi();
  setupSinricPro();
}

void loop() {
  SinricPro.handle();
}

Diesen Code auf GitHub Gist ansehen

Jetzt solltest du das Relais wie im folgenden Video über das Portal steuern können.

Schritt 3 : Verknüpfe den Sinric Pro Alexa Skill mit deinem Konto.

• Öffne deine Amazon Alexa App.

• Gehe zu Skills & Spiele.

• Suche nach Sinric Pro.

• Klicke auf ENABLE TO USE.

• Gib deine Sinric Pro Zugangsdaten auf der Verknüpfungsseite ein.

• Bitte Alexa, neue Geräte zu suchen.

• Bitte Alexa, den Switch einzuschalten

Schritt 4 : Verknüpfe die Sinric Pro Google Home Action mit deinem Konto.

• Öffne Google Home und klicke auf Hinzufügen.

• Wähle Gerät einrichten

• Wähle Mit Google Home kompatibel

• Suche nach Sinric Pro.

• Verknüpfe dein Konto.

• Neue Geräte suchen

• Bitte Google Home, den Switch einzuschalten

Schritt 5 : Verknüpfe Sinric Pro SmartThings mit deinem Konto.

• Öffne die SmartThings App und tippe auf das + Symbol

• Wähle Gerät

• Wähle Sinric Pro unter By Brand

• Verknüpfe dein Konto.

• Jetzt kannst du Switch über das Dashboard ein- oder ausschalten

Weiter geht es in Teil 2 dieser Artikelserie, in dem du lernst, wie du einen Taster hinzufügst, um das Relais umzuschalten.

Fehlerbehebung

Weitere mögliche Lösungen für dein Problem findest du auf unserer Seite Fehlerbehebung.

Verwandte Tutorials

Dieses Dokument ist Open Source. Hast du einen Tippfehler gefunden? Erstelle bitte ein Issue