Hallo Gemeinde,
Nach 4 Stunden probieren und lesen brauche ich jetzt doch mal Schützenhilfe ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
Was will ich machen:
ESP Easy und damit 8 Relais steuern und Rückmeldung an IPS bekommen.
Was geht schon:
Die 8 Relais kann ich mittels IPS wunderbar ein und ausschalten.
Was geht noch nicht:
Die Rückmeldung
Was habe ich bereits eingerichtet:
In Easy ESP den Controller (IPS) mit port 1024
In IPS ein Server Socket und eine Register Variable.
Ein Script in der Registervariable zugewiesen (mit einem Beispielcode aus einem der ersten Posts)
Das Script ist noch nicht angepaßt, und es würde mich auch interessieren, wie das für Relais aussehen würde ?
Allerdings denke ich doch, die Register variable sollte ihren Zeitstempel aktualisieren, wenn ich ein Relais aus IPS schalte. Das tut sie leider nicht…
Was ich denke, woran es liegt:
An mir ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
An einer fehlenden „rule“, wobei hier ein Beispiel sehr nett wäre.
Auswertung wäre super für die Relais und eventuell noch uptime (uptime habe ich mit 60 sec Intervall auch eingerichtet)
Vielen lieben Dank für eure Hilfe ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
Sascha
EDIT:
Ich habe es nun hinbekommen, dass die Uptime alle 60 Sekunden and den Controller IPS geschickt wird ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
Hierbei wird die RegisterVariable auch ausgeführt, und ich habe schön den Wert in IPS…die halbe Miete ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
Leider die unwichtigere Hälfte ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
Was noch nicht geht, ist den Status der 8 Relais zu bekommen…
Das wäre noch super, aber ich weiß gerade nicht, wo ich da ansetzen soll…Rules ? Aber was muss da drinstehen ?
Wann werden die ausgeführt ? Immer, wenn ich ein Relais von IPS heraus schalte ?
Und wie werte ich das in der Registervariable aus ?
Gibts hier im Forum eigentlich Punkte für die meisten Fragen ??? ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
EDITEDIT:
So, hier wäre mal ein „quick&dirty“ Weg, bei dem allerdings die Betonung ganz klar auf „dirty“ liegt !
Ich habe das so gelöst, wie auf den Fotos zu sehen ist, da ich als Rückmeldung von ESP Easy einen String bekomme…eine Boolean hätte es eigentlich getan für mich…
Nachteil ist, das ganze braucht sehr lange…manchmal bis zu 5 Sekunden (Relais schalten aber sofort)
Also nicht die beste Lösung einer Rückmeldung von den Relais…
Hier mal die gesammelten Werke, wäre sehr für Lösungsvorschläge offen ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
![r1.jpg](https://community.symcon.de/uploads/default/original/3X/3/0/30b9aad4552a05a25c43044c141aac8824f1f048.jpeg)
![r2.jpg](https://community.symcon.de/uploads/default/original/3X/8/1/81eac2c0bb341ff8b1952d24ac4d25295fed04e6.jpeg)
Und hier die Registervariable:
<?
//IPS_LogMessage("Sender ", $_IPS['SENDER']);
if ($_IPS['SENDER'] == 'RegisterVariable'){
$data = $_IPS['VALUE'];
$Prefix1 = "&idx="; // damit fängt der Datensatz an
$Suffix1 = "&";
$Prefix2 = "&svalue="; // damit fängt der Datensatz an
$Suffix2 = "HTTP/1.1";
$Prefix3 = "&switchcmd="; // damit fängt der Datensatz an
$Suffix3 = "HTTP/1.1";
//$Ende1nachZeichen = 2; // und ist xx Zeichen lang
$AnfangID = strlen($Prefix1)+(strpos($_IPS['VALUE'], $Prefix1));
$EndeID = strpos($_IPS['VALUE'], $Suffix1, $AnfangID+1);
$ID = substr($_IPS['VALUE'], $AnfangID, $EndeID-$AnfangID);
$AnfangValue = strlen($Prefix2)+(strpos($_IPS['VALUE'], $Prefix2));
$EndeValue = strpos($_IPS['VALUE'], $Suffix2, $AnfangValue);
$Value = substr($_IPS['VALUE'], $AnfangValue, $EndeValue-$AnfangValue-1);
$AnfangSw = strlen($Prefix3)+(strpos($_IPS['VALUE'], $Prefix3));
$EndeSw = strpos($_IPS['VALUE'], $Suffix3, $AnfangSw);
$Switch = substr($_IPS['VALUE'], $AnfangSw, $EndeSw-$AnfangSw-1);
//IPS_LogMessage("Switch roh: ", $Switch);
if($Switch == "On"){
$Switch = true;
}
else{
$Switch = false;
}
//IPS_LogMessage("Data rin: ", $data);
//IPS_LogMessage("AnfangID: ", $AnfangID);
//IPS_LogMessage("EndeID: ", $EndeID);
//IPS_LogMessage("EndeValue: ", $EndeValue);
//IPS_LogMessage("IDx: ", $ID);
//IPS_LogMessage("Value: ", $Value);
//IPS_LogMessage("Switch: ", $Switch);
switch ($ID) {
case "1": // Status Relais 01
if ($Value == "n.htm?type=command¶m=switchlight&idx=1&switchcmd=On&rssi=6") {
SetValueBoolean(42939 /*[Entwicklungsbereich Sascha\HTTP Commands Relais\Programm/Scripte\ESP Easy Garten\Status Relais\Relais 01]*/,1);
}
if ($Value == "n.htm?type=command¶m=switchlight&idx=1&switchcmd=Off&rssi=6") {
SetValueBoolean(42939 /*[Entwicklungsbereich Sascha\HTTP Commands Relais\Programm/Scripte\ESP Easy Garten\Status Relais\Relais 01]*/,0);
}
break;
case "2": // Status Relais 02
if ($Value == "n.htm?type=command¶m=switchlight&idx=2&switchcmd=On&rssi=6") {
SetValueBoolean(12309 /*[Entwicklungsbereich Sascha\HTTP Commands Relais\Programm/Scripte\ESP Easy Garten\Status Relais\Relais 02]*/,1);
}
if ($Value == "n.htm?type=command¶m=switchlight&idx=2&switchcmd=Off&rssi=6") {
SetValueBoolean(12309 /*[Entwicklungsbereich Sascha\HTTP Commands Relais\Programm/Scripte\ESP Easy Garten\Status Relais\Relais 02]*/,0);
}
break;
case "101": // Uptime
SetValueInteger(42387 /*[Entwicklungsbereich Sascha\HTTP Commands Relais\Programm/Scripte\ESP Easy Garten\Uptime in Minuten]*/, $Value);
break;
}
}
?>