Ich möchte euch ein super Modul mit dem ESP8266 vorstellen.
Links sind hier ja verboten, ESP8266 Wlan / WiFi Relay in eine Suchmaschine oder in der Bucht
eingeben hilft.
Hier ein Bild des Modul
und noch eins
Wie das Modul in ein WLAN-Netzwerk eingebunden bzw. installiert wird, steht in der Info des Shops.
Was kann es:
über WLAN, UDP, einer Android App, und MQTT nutzbar
ein Relais Ein- oder Ausschalten auch zeitgesteuert z.B. für eine Tasterfunktion
einen Temperatur/Feuchtesensor der DHT-Serie auslesen und zyklisch diese Werte senden.
Hat einen Anschluß-Pin für einen externen Taster (IO15 nach GND) zum Schalten vor Ort ohne WLAN
Was ist besonderes an diesem ESP8266 Modul:
runde kleine Bauform, kann in einer Schalterdose hinter einem Taster sitzen,
ideal für Mietwohnungen, weil es vollständig rückrüstbar ist
könnte in einer Art Busverdrahtung mit 5Volt oder auch per Schaltregler mit 230V~ arbeiten
Das bistabile Relais bekommt nur Strom, wenn es schalten soll.
Also nur eine kleine Standbyleistung.
Mit einer Abdeckung zB von (BuschJäger Art.Nr. 02.659900195) kann es auch als Sensor und Aktor arbeiten
Wie nutzt man es in IP-Symcon:
Man braucht eine Booleanvariable für den Zustand des Relais,
zwei Floatvariablen für Temperatur und Feuchte,
eine IO-UDP Instanz,
einen Cutter und Registervariable für den Zustand des Relais,
einen Cutter und Registervariable für die Temperatur und Feuchte
und ein paar Auswerte- und SchaltScripte, los geht’s
Booleanvariable Typ: ~Switch, Aktionscript ist das ToogleScript, 2 Floatvariablen erstellen
Eine IO-Instanz UDP Socket erstellen,
Empfangshost der IPS-Server, Empfangsport 18666
Sendehost ist das ESP-UP-Modul, Sendeport 18566
Wenn man mit dieser Instanz auf Debug geht, dann sieht man folgenden String:
29321,1,192.168.0.22,3,0,E,E,DVES_009BB321
die erste Zahl gehört zu dem ESP-Modul
die 2. Zahl ist iM unwichtig
die 3. Zahl ist die IP-Adresse im WLAN-Netz
die 4. Zahl ist iM unwichtig, gibt die Art der Meldung an, hier 3 für Relais
die 5. Zahl ist für die Zustand-Erkennung des Relais in IPS wichtig
die 6. Zahl ist der Temperaturwert des DHT-Fühlers, ist keiner da steht ein „E“ dort
die 7. Zahl ist der Feuchtewert des DHT-Fühlers, ist keiner da steht ein „E“ dort
Diese Daten werden nun mit einem Cutter bearbeitet um den Zustand des Relais zu erkennen
Dazu erstellt man einen Cutter
linkes Trennzeichen alles was vor der 5.Zahl steht
rechtes Trennzeichen ein Komma
Im Debugfenster des Cutters sollte dann so etwas stehen:
CURRENTBUFER E,E,DVES_009BB32129321,1,192.168.0.22,3,1,E,E,DVES_009BB321
SENDCHUNK 1 oder 0
Mit diesem Cutter füttert man eine Registervariable, also Registervariable erstellen, ausführendes Script wird nach folgendes Script, übergeordnete Instanz ist der eben erstellte Cutter
Lesescript der Registervariable mit folgendem Inhalt:
<?
//Wird vom WiFi Schalt-Cutter getriggert
if ($_IPS['SENDER'] == "RegisterVariable")
{
$data = $_IPS['VALUE'];
if (substr($data,-1) == "1")
// print(substr($data,-1));
{
SetValueBoolean(17919 /*[uP_WiFi_relais\WiFi uP Modul 19]*/,true);
}
if (substr($data,-1) == "0")
{
SetValueBoolean(17919 /*[uP_WiFi_relais\WiFi uP Modul 19]*/,false);
}
}
?>
Dieses Script erkennt den Zustand des Relais aufgrund einer Schaltung oder einer zyklischen Meldung.
Die in dem Script benutzte Variable ist die Booleanvariable.
Nun will man das Relais ja auch mal aus der Webfront schalten, dazu erstellt man ein neues Script, ein Aktionsscript, mit nach folgendem Inhalt, dieses Script in die Booleanvariable als Aktionsscript eintragen:
<?
// Dieses Script ist ein Aktionsscript zB Webfront
$Zustand=GetValueBoolean(17919 /*[uP_WiFi_relais\WiFi uP Modul 19]*/);
if ($Zustand == true)
{
USCK_SendText(37504 /*[WiFi_UP_Modul_UDP Socket]*/,"3,0");
//SetValueBoolean(17919 /*[uP_WiFi_relais\WiFi uP Modul 19]*/,false);
}
if ($Zustand == false)
{
USCK_SendText(37504 /*[WiFi_UP_Modul_UDP Socket]*/,"3,1");
//SetValueBoolean(17919 /*[uP_WiFi_relais\WiFi uP Modul 19]*/,true);
}
?>
Falls man einen Taster mit diesem uP-Wifi-Relais ansteuern will genügt dieser Scriptinhalt:
<? USCK_SendText(37504 /*[WiFi_UP_Modul_UDP Socket]*/,"9,500"); ?>Die „9“ steht für Impuls, die nachfolgende Zahl ist die Einschaltzeit in Millisekunden
Wenn man die Temperatur und Feuchte auslesen will, nutzt man einen neuen Cutter und eine neue Registervariable sowie ein Auslesescript.
Cutter: linkes Trennzeichen 29321,1,192.168.0.22,3,
rechtes Trennzeichen ein Komma, übergeordnete Instanz ist die IO-UDP Socket Instanz
Registervariable:
Zielscript ist ein neues Temp Feuchte Auslesescript.
Die übergeordnete Instanz ist der Temp Feuchte Cutter
Inhalt könnte so aussehen, das man die Werte über substring-PHP-Befehl anwendet.
Kann ich iM nicht testen, mir fehlt ein DHT-Fühler, ungefähr nach diesem Muster:
<?
//Wird vom WiFi Temp Feuchte-Cutter getriggert
if ($_IPS['SENDER'] == "RegisterVariable")
{
$data = $_IPS['VALUE'];
echo substr($data,2,-2);
//setvaluefloat(22988 /*[uP_WiFi_relais\Feuchte uP WiFi Modul ADR22]*/,substr($data,2,-2));
echo substr($data,4,-4);
//setvaluefloat(22988 /*[uP_WiFi_relais\Feuchte uP WiFi Modul ADR22]*/,substr($data,4,-4));
}
?>
Ist im Script geremmt, weil das „E“ , das ich bekomme, weil ich keinen Sensor habe, keine Floatzahl ist
Hier mal ein Bild: Modul unterm Taster
Sollten Fragen auftauchen, ruhig mal die Mail-Funktion nutzen.
Gruß Helmut