E-Privacy-Richtlinie 2009/136/EG
Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
x
ESP8266 WiFi Relay V3.1

Artikelnummer: 3502

ESP8266 WiFi Relay V3.1

16,99 €

inkl. 19% USt., versandfreie Lieferung

ab Stk. Stückpreis
5 15,83 €
10 14,99 €
momentan nicht verfügbar


Beschreibung

Das Modul wird in dieser Ausführung nicht mehr hergestellt. Die Verfügbarkeit des benutzten Relay der Fa. OMRON läßt leider zu wünschen übrig. Wir sind gerade dabei eine neue Version des Moduls zu entwickeln. Ein Datum kann leider noch nicht genannt werden.

Modul V3 discontinued.

ESP8266 WLan / WIFI Relay für Unterputzmontage

Bitte beachten sie das diese Modul für 5Volt vorgesehen ist.Wenn sie das Modul an 230V betreiben so geschieht das auf ihre Verantwortung.

Ab Firmware V3.0.20171001.0033 wird Alexa von Amazon unterstützt. Es wird ein Belkin WeMo Switch emuliert.
Dafür müssen Sie in den Setup Einstellungen einen vernünftigen Namen angeben, zum Beispiel Relay_1. Tun Sie das nicht wird ein Name wie zum Beispiel DVES_00122D8B verwendet. Ich bezweifle das Alexa damit was anfangen kann.
Bevor Sie die Suche über die Alexa App starten müssen Sie im Setup des Moduls auf den Button Pair "Start" klicken. Es werden damit für 40 Sekunden sämtliche Funktionen des Moduls gestoppt und auf eine Anfrage des Alexa Gerätes gewartet.

Wichtig!!!
Die Firmware hat Probleme sich mit Router zu verbinden welche mehr als 64 Zeichen lang ist und Leerzeichen in der SSID Kennung haben.

Lieferinhalt:
1 x Relay
1 x Schaltnetzteil
1 x Stiftleiste (Wenn nicht schon gelötet)
1 x 2 poliger Schraubblock
1 x 3 poliger Schraubblock

Das Modul wird nur wie in dieser Abbildung zu sehen bestückt.

 
 

Eigenschaften

  • Zur Ersteinrichtung ohne die Firmware zu ändern wird zwingend ein WiFi fähiges Gerät benötigt oder ein WPS fähiger Router.
  • Das Wifi Relay Modul wurde speziell für den Einbau in Unterputzdosen entwickelt.
  • Bistabiles Relay welches nach dem Schalten keinen Strom mehr verbraucht.
  • Das ESP8266 Modul wurde mit einer speziellen Firmware bespielt.
  • Simple Basic zur automatisierten Steuerung
  • Eine einfache Cron Steuerung
  • Browser Zugriff
  • Other the Air" update Funktion
  • Temperatur per DHT11/21, DHT22, AM2321 (I2C), SI7021 HTU21 SHT21 GY-21 wird unterstützt
  • Impulssteuerung, Ein oder Aus Funktion nach einer bestimmten Zeit rückgängig machen.
  • Pins können als Eingänge oder Ausgänge konfiguriert werden.
  • Als Signale können Taster, Schalter, Pir usw. genutzt werden.
  • Das Modul kann per Android App, per MQTT oder per Web Browser gesteuert werden.
  • NTP Zeitserver kontaktieren. Damit läuft auf dem Modul die aktuelle Zeit (Europa/Berlin).
  • MQTT Topics

    Topic_Top "/ESP8266/"
    MQTT_TIMEDATE "ESP8266/TIMEDATE"
    MQTT_IP "ESP8266/MEMBER/DVES_XXX/IP"
    MQTT_TEMP "ESP8266/MEMBER/DVES_XXX/TEMP"
    MQTT_HUMID "ESP8266/MEMBER/DVES_XXX/HUMID"
    MQTT_RELAY "ESP8266/MEMBER/DVES_XXX/RELAY"
    MQTT_RESET "ESP8266/MEMBER/DVES_XXX/RESET"
    (XXX hier steht die Modul Adresse welche fest vergeben ist)
    MQTT_TIMEDATE dient zum setzen der Uhrzeit. Die Zeit muss im Linux format angegeben werden.
    Eine Bash Datei könnte so aussehen:

    #!/bin/bash
    NOW=$(date +"%s")
    echo "$NOW"
    mosquitto_pub -h 192.168.178.5 -p 1883 -t ESP8266/TIMEDATE -m "DATETIME:$NOW"

    MQTT_IP hier steht die aktuelle IP Adresse des Moduls
    MQTT_TEMP hier steht der ausgelesene Temperaturwert in Celsius.
    MQTT_HUMID hier steht der ausgelesene Feuchtegrad in Prozent.
    MQTT_RELAY hier steht eine 1 für ein oder 0 für aus. Jenachdem ob das Modul mit Wechselrelay oder einfachem Relay bestückt ist.

  • Alle Befehle werden per UDP Protokoll vom Smartphone übermittelt oder aber per MQTT vom Zentralserver z.Bsp. ein Raspberry Pi.
  • Unterstützte Software zum Beispiel OpenHab über MQTT, IP-Symcon per UDP

 

  • Die Firmware ist kein Open Source. Die Android App ist Open Source und kann beliebig geändert werden.
  • GitHub: Source Code Android App
  • Das Modul ist auf 115200 Baud eingestellt.
  • Das Modul muss mit 5V versorgt werden
  • Die Ein-Ausgänge sind bis 230V ausgelegt und mit 3A belastbar (Öffnen 3A Schließen 10A).
  • Das Modul wird mit Spannungswandler geliefert welcher aber nicht eingebaut ist.
  • Ebenso ist eine 3A flinke Sicherung dabei welche Sie ebenfalls selber einlöten müssen.
  • Wenn Sie das Modul am 230V Netz verwenden wollen müssen Sie den Spannungswandler und die Sicherung selber einlöten. Hier liegt die Gefahr bei Ihnen.
  • Arbeiten am 230V Netz sind Lebensgefährlich und sollten nur vom Fachmann ausgeführt werden!

Das erste Mal

Wird das Modul das erste mal betrieben sucht es nach einem Zugangspunkt (WiFi Router).

  1. wird eine Verbindung über den bekannten Zugangspunkt versucht.
  2. wird versucht per WPS eine Verbindung aufzubauen, (WPS am Router muss aktiviert sein und eventuell die "Verbindungstaste" gedrückt werden)
  3. es wird für 1 Minute der AP Modus gestartet. Die Blaue LED blinkt hektisch. Damit wird signalisert das das Modul als AP Zugangspunkt aktiviert ist. Erfolgt kein Zugriff resetet das Modul.

    Nun ist folgendes zu tun.
  • Öffnen Sie auf Ihrem Smartphone oder Tablet die WIFi Einstellung und wählen Sie das Modul als Zugangspunkt.
  • Der Name des Moduls beginnt immer mit den Buchstaben ESP_
  • Öffnen Sie den Browser und geben in der URL Leiste die IP 192.168.4.1 ein.
  • Sie sehen nun die Hauptseite des Moduls
  • Gehen Sie in das Menü Stations
  • Das Modul scannt nun die Umgebung nach Netzwerken
  • Wählen sie ihr  Netzwerk aus und geben ihr Netzwerkkennwort ein.
  • Drücken Sie nun den Button "Benutzen"
  • Sie müssen das Modul nun per Button "Reset" neu starten.
  • Nach ein paar Sekunden ist das Modul im Netzwerk erreichbar.

UDP Befehle

Der Empfangs Port am Modul ist 18566. Das Modul sendet über den Port 18666. Alle an das Modul gesendete Befehle müssen über den Port 18666 gesendet werden. Das Modul fragt den Sende Port ab. Ist der Sende Port nicht 18666 ignoriert das Modul den Befehl.

Befehl Format   Value
Relay An String   3;1
Relay Aus String   3;0
Reset String   2
Update String   6
Version String   8
Impuls String   9; Zeit in Millisekunden zum Beispiel  9,2000 für 2 Sekunden

Nach erfolgreichem Empfang des Befehls sendet das Modul den Befehl in Form von:
ID Numer, Befehl, IP Adresse des Moduls, Funktion des Moduls, Value
Zum Beispiel
37411;3;192.168.178.61;3;1

an den Befehlssender zurück.

Gleichzeitig wird eine Broadcast Nachricht (255.255.255.255) abgesetzt.
ID Numer; Befehl; IP Adresse des Moduls; Funktion des Moduls; Relay Status; Temperatur; Feuchtigkeit; Modulname
Beispiel
52670;1;192.168.178.11;3;0;25.0;32.0;DVES_00FAFCE2

Startseite

Startscreen

Hier können die Pins welche auf Ausgang konfiguriert sind gesteuert werden. Für Pins welche als Eingang konfiguriert sind wird der aktuelle Status gezeigt (High oder LOW). Änderungen werden abhängig der Latenz in Ihrem Netzwerk sofort angezeigt. Achtung es wird JavaScript verwendet.

Setup

Setup

Stations

scan

Prog

Progscreen

Der Cron Task

Die Eingabe hat folgende Bedeutung

Sekunde . Minute . Stunde . Tag . Monat . Jahr . Befehl

Beispiel 1

0.0.*.*.*.*.NTP

Jede Stunde in der Minute 0 wird der Zeitserver kontaktiert und die aktuelle Uhrzeit gespeichert.
Wenn Sie bei Sekunde ein * setzen wird jede volle Stunde zu jeder Sekunde der Zeitserver kontaktiert also 60 mal ;)

Beispiel 2

/30.*.*.*.*.*.STAT

Alle 30 Sekunden wird der Status per Broadcast gesendet. Lassen Sie diesen Befehl weg wird automatisch alle 10 Sekunden eine Statusmeldung gesendet.


Befehle sind zur Zeit folgende mit der aktuellen Firmware möglich:

DHT - Abfrage des DHT Sensors
NTP - Abfrage des Zeitservers
ON - Relay An
OFF - Relay Aus
IMP - Relay umschalten mit der eingestellten Impulslänge
RES - Reset des Moduls
Ab Version V2.0.20160905.0342 gültig
TOG - Relay toggeln (Wenn das Relay an ist wird es ausgeschaltet bzw. umgekehrt)

Nach Klick auf Speichern wird der Cron als gültig gestellt. Jeder Task muss in einer eigenen Zeile stehen.

Startup Code

Hier werden im normalfall alle Konfigurationen eingestellt. Es können aber auch sämtliche nutzbaren simpleBasic Befehle benutzt werden um zum Beispiel ein Pin beim Start in einen defninierten Zustand zu versetzen.
Der Startup Code wird nur ein einziges mal beim starten/reset des Moduls ausgeführt.

Beispiel

pinmode(0,1);
setpin(0,0);
pinmode(2,1);
setpin(2,0);
pinmode(4,1);
setpin(4,0);
pinmode(5,1);
setpin(5,0);
pinmode(14,1);
setpin(14,0);
pinmode(16,1);
setpin(16,0);
seti2c(4,5,24);
setdht(0,11);

 

User Code

Es handelt sich um eine Simple Basic Sprache. Dieser Code läuft in einer Endlosschleife.

Nutzbare Befehle sind: (ab Firmware V1.0.20160327.1949)

if if a=b (gleich)
if x%2 (mod)
if a=b | b=c (oder)
if a=b & c=d (und)
Vergleich
else }else{ Bedingung
for for i = 0 to 50 {}; Zählschleife
to    
delay delay(500) warte 500 Millikunden 
while while c=255 {}; Bedingung Solange c=255 ist 
setdht setdht(pin,typ)  DHT Einstellung
Bei I2C Pin16 nicht verwenden!
typ kann sein
11=DHT11
21=DHT21
gettemp x=gettemp; speicher die Temperatur in der Variable x
gethumi x=gethumi; speicher die Luftfeuchte in der Variable x
getrelay x=getrelay; speicher den Relayzustand in der Variable x
setrelay setrelay(x) Setzen des Relays 1 = AN 0 = AUS
setpin setpin(pin,value); setze den Pin auf den Zustand von value
getpin x=getpin(pin); speicher den Zustand von Pin in die Variable x
pinmode pinmode(pin,mode) setze den Pin auf mode. Mode kann sein
1 für Ausgang
0 für Eingang oder
2 für Eingang mit PullUp (Schalten gegen GND)
3 für Eingang mit PullUp und Interrupt, schaltet das Relay (Schalten gegen GND)
seti2c seti2c(sda,scl,typ)  Ab Version V2.0.20160905.0342 gültig vorher seti2c(4,5) und Typ setzten über setdht
seti2c(4,5,24) konfiguriert pin 14 zu sda, pin 5 zu scl und setzt den Typ auf HTU21
verwendbare Typen
23=AM2321
24=SHT21/SI7021/GY-21/HTU21

Jeder Befehl muss mit einem ; abgeschlossen werden! Es sollten keine Leerzeilen vorhanden sein.
Bedinget Anweisungen haben immer folgendes Format

if Bedingung { Anweisung oder neue Bedingung }; if a=b { setpin(2,1); }else{ setpin4,1); }; Beachten Sie die Semikolon setzungen.

Beispiele:

h=gethumi;
r=getpin(2);
if r=0 {
  setpin(2,1);
  delay(500);
}else{
  setpin(2,0);
  delay(500);
};
if t<10 | h>20{
  setrelay(1);
}else{
  setrelay(0);
};

 

MQTT Setup

mqtt

 

Firmware Upload

firmware

Anschluß Pins

Betrieb ohne Netzteil

Safety Mode

Falls das Modul durch eine falsche Konfiguration sich nicht mehr ansprechen lässt, können Sie Pin14 mit GND verbinden.
Das Modul startet dann in einem Abgesicherten Modus und führt weder den Startup Code noch den User Code aus.

Einbindung OpenHab

openhab.cfg

mqtt:mysensor.url=tcp://192.168.178.5:1883
mqtt:mysensor.clientId=OpenhabMQTT
mqtt:mysensor.retain=true

mqtt.items

Group All
Group HauptgruppeMqtt (All)
Group HauptgruppeLicht (HauptgruppeMqtt)
//**************************************************************************************
// Licht
String mqttsw1_ip "IP:[%s]" (HauptgruppeLicht) {mqtt="<[mysensor:ESP8266/MEMBER/Modulname/IP:state:default]"}
Switch mqttsw1 "Garten" (HauptgruppeLicht) {mqtt=">[mysensor:ESP8266/MEMBER/Modulname/RELAY:command:*:MAP(mqttToOnOf.map)],<[mysensor:ESP8266/MEMBER/Modulname/RELAY:state:MAP(mqttToOnOf.map)]"}

String mqttsw2_ip "IP:[%s]" (HauptgruppeLicht) {mqtt="<[mysensor:ESP8266/MEMBER/Modulname/IP:state:default]"}
Switch mqttsw2 "Indoor" (HauptgruppeLicht) {mqtt=">[mysensor:ESP8266/MEMBER/Modulname/RELAY:command:MAP(mqttToOnOf.map):1],<[mysensor:ESP8266/MEMBER/Modulname/RELAY:state:MAP(mqttToOnOf.map)]"}

String mqttsw3_ip "IP:[%s]" (HauptgruppeLicht) {mqtt="<[mysensor:ESP8266/MEMBER/Modulname/IP:state:default]"}
Switch mqttsw3 "Relay" (HauptgruppeLicht) {mqtt=">[mysensor:ESP8266/MEMBER/Modulname/RELAY:command:MAP(mqttToOnOf.map):1],<[mysensor:ESP8266/MEMBER/Modulname/RELAY:state:MAP(mqttToOnOf.map)]"}
// Licht Ende
//**************************************************************************************
// NTP binding demo item
DateTime    Date      "Date [%1$tA, %1$td.%1$tm.%1$tY]"   { ntp="Europe/Berlin" }
//**************************************************************************************
DateTime LastUpdate "Update [%1$td.%1$tm.%1$tY  %1$tk:%1$tM:%1$tS]" (All)

"Modulname" muss mit dem Namen vom Modul ersetzt werden.
Zum Beispiel: DVES_00A0422C

mqtt.sitemap

sitemap mqtt label="Main Menu"
{
 //***************************************************************************************************
 Frame {
   Text item=HauptgruppeMqtt icon="terrasse"{
   
   Frame {
     
     Text item=HauptgruppeLicht icon="light-on"{
     
     Frame {
      Switch item=mqttsw1
      Text item=mqttsw1_ip
     }//Frame
     
     Frame {
      Switch item=mqttsw2
      Text item=mqttsw2_ip
     }//Frame

     Frame {
      Switch item=mqttsw3
      Text item=mqttsw3_ip
     }//Frame

    }//Text
    
   }//Frame
      
   Frame {
    Text item=LastUpdate
   }
   
  }//Text
  
 }//Frame
 //************************************************************************************************
 
 Frame label="" {
  Text item=Date
 }

}

mqttToOnOf.map ins Verzeichniss transform

OFF=0
0=OFF
ON=1
1=ON

Perl Script zum Empfangen von UDP Nachrichten

#!/usr/bin/perl -w
#  udpqotd - UDP message server
use strict;
use IO::Socket;
    my($sock, $oldmsg, $newmsg, $hisaddr, $hishost, $MAXLEN, $PORTNO);
    $MAXLEN = 1024;
    $PORTNO = 18666;
    $sock = IO::Socket::INET->new(LocalPort => $PORTNO, Proto => 'udp') or die "socket: $@";
    print "Awaiting UDP messages on port $PORTNO\n";
    $oldmsg = "This is the starting message.";

    while ($sock->recv($newmsg, $MAXLEN)) {
        my($port, $ipaddr) = sockaddr_in($sock->peername);
        $hishost = gethostbyaddr($ipaddr, AF_INET);
        print "Client $hishost said '$newmsg'\n";
        $sock->send($oldmsg);
        $oldmsg = "[$hishost] $newmsg";
    }
    die "recv: $!"

Bash command zum Senden von UDP Nachrichten mit Netcat

echo -n -e "3;1" | nc -u -w1 -p 18666 192.168.178.26 18566
oder
echo -n -e "3;0" | nc -u -w1 -p 18666 192.168.178.26 18566

Anschluss des Bodenfeuchtesensor

Am Bodenfeuchtesensor muss zwischen VCC und DO ein Wiederstand (10K) gelötet werden.
VCC vom Sensor geht an Pin 1 vom WiFi-Relay Modul

(VCC 3.3V siehe Bild)

GND vom Sensor geht an Pin 6 vom WiFi-Relay Modul
D0  vom Sensor geht an Pin 9 (IO4) vom WiFi-Relay Modul

Startup Code
pinmode(4,0);

User Code
r=getpin(4);
if r=1 {
  setrelay(0);
  setpin(2,1);
}else{
  setrelay(1);
  setpin(2,0);
  delay(10000);
};

Anschluss des PIR Sensors HC-SR501

VCC an 5V. Da das Modul mit min. 4.5V versorgt werden muss können sie nicht den VCC 3.3V Ausgang des Moduls verwenden. Sie können aber an den 5Volt Anschluss der Versorgungsspannung ein Kabel löten.

(VCC 5V siehe Bild)

GND vom Sensor geht an Pin 6 vom WiFi-Relay Modul
Out vom Sensor geht an Pin 5 (IO14) vom WiFi-Relay Modul

Startup Code
pinmode(14,0);

User Code
r=getpin(14);
if r=1 {
  setrelay(0);
  setpin(2,1);
}else{
  setrelay(1);
  setpin(2,0);
};


 

Anschluss eines Tasters um das Relay zu schalten

zwischen GND und IO2 den Taster setzen. Im Startup Code pinmode(2,3); schreiben und speichern. Bei jedem Tasterdruck wird jetzt das Relay geschaltet.

Sie können auch den Taster zwischen IO0 und IO2, falls GND nicht mehr frei ist, setzen. Im Startup Code

pinmode(0,1);
setpin(0,0);
pinmode(2,3);

schreiben und speichern.

Flashen eigener Firmware zum Beispiel  EasyESP

Es kann natürlich auch eigen Firmware verwendet werden. Da das Relay ist impulsgesteuert ist muss dieses auch anders gesteuert werden.

Zum Schalten muss für <10ms
GPIO12 = LOW und GPIO13 = High
oder
GPIO13 = LOW und GPIO12 = High
gesetzt werden.

Codebeispiel

// Sicher ist sicher
digitalWrite(RELAYPIN1, LOW);
digitalWrite(RELAYPIN2, LOW);
// schalten
digitalWrite(RELAYPIN1, HIGH);
delay(10);
digitalWrite(RELAYPIN1, LOW);
oder
// Sicher ist sicher
digitalWrite(RELAYPIN1, LOW);
digitalWrite(RELAYPIN2, LOW);
// schalten
digitalWrite(RELAYPIN2, HIGH);
delay(10);
digitalWrite(RELAYPIN2, LOW);

Alles andere zerstört unter Umständen das Relay!


Bitte verwenden Sie immer die neueste Firmware.

Datenblätter:

>>Relay<<
>>Sicherung<<
>>Netzteil<<

Firmware: https://firmware.ex-store.de
GitHub: Source Code Android App
Android App: ESP8266_IOT


Versandgewicht: 0,02 Kg
Artikelgewicht: 0,02 Kg
Inhalt: 1,00 Einheit

Benachrichtigen, wenn verfügbar

Kontaktdaten

Produkt Tags