So ich glaube ich hab was hinbekommen.
Ist sicherlicht nicht der einfachste Weg bin für verbesserungen jederzeit offen.
Anbei mal die Scripte:
Eingabe verarbeiten:
// Eingabe Auswerten
$Command = GetValueString("COM_RX_eDip_SZ");
$wert = substr($Command, -1); // gibt den Letzten Buchstaben zurück
if (($wert == "È") or ($wert == "É") or ($wert == "Ê") or ($wert == "Ë"))
{
$code1 = GetValueString("Display.SZ_Code1");
$code2 = GetValueString("Display.SZ_Code2");
$code3 = GetValueString("Display.SZ_Code3");
$code4 = GetValueString("Display.SZ_Code4");
if ($code1 == "0")
{
SetValueString("Display.SZ_Code1", $wert);
return;
}
if ($code2 == "0")
{
SetValueString("Display.SZ_Code2", $wert);
return;
}
if ($code3 == "0")
{
SetValueString("Display.SZ_Code3", $wert);
return;
}
if ($code4 == "0")
{
SetValueString("Display.SZ_Code4", $wert);
return;
}
}
switch ($wert)
{
// Enterbutton
case "Ò" :
IPS_RunScript("Display.SZ_Code_auswerten");
break;
}
Code überprüfen:
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Display.SZ_Code_auswerten.ips.php
Trigger :
Interval :
*/
// Common eDip defines
include_once("eDip_Global.ips.php");
// Variablen definieren
include_once("Display.SZ_Global.ips.php");
// Code einlesen
$code1 = GetValueString("Display.SZ_Code1");
$code2 = GetValueString("Display.SZ_Code2");
$code3 = GetValueString("Display.SZ_Code3");
$code4 = GetValueString("Display.SZ_Code4");
if (($code1 == "È") && ($code2 == "È") && ($code3 == "È") && ($code4 == "È"))
{
// Codeeingabe war richtig
// Display löschen und Hauptmenu-Button anzeigen
SetValueString(TX_SZ, ESC.A.I.chr(0));
SetValueString(TX_SZ, ESC.A.S.chr(1));
SetValueString(TX_SZ, ESC.D.L);
SetValueString(TX_SZ, ESC.A.L.chr(0).chr(0));
SetValueString(TX_SZ, ESC.U.V.chr(4));
SetValueString(TX_SZ, ESC.Z.F."CHICAGO14");
SetValueString(TX_SZ, ESC.Z.V.chr(1));
SetValueString(TX_SZ, ESC.Z.L.chr(8).chr(2).$Datum.CR);
SetValueString(TX_SZ, ESC.Z.R.chr(230).chr(2).$Zeit.CR);
SetValueString(TX_SZ, ESC.R.R.chr(00).chr(00).chr(240).chr(128).chr(13).CR);
SetValueString(TX_SZ, ESC.G.D.chr(50).chr(00).chr(50).chr(15).CR);
SetValueString(TX_SZ, ESC.Z.C.chr(120).chr(02)."Codeeingabe OK".CR);
SetValueString(TX_SZ, ESC.G.D.chr(00).chr(15).chr(240).chr(15).CR);
SetValueString(TX_SZ, ESC.G.D.chr(190).chr(00).chr(190).chr(15).CR);
// Displayausgabe
SetValueString(TX_SZ, ESC.Z.L.chr(100).chr(50)."Code wurde angenommen".CR);
// Befehl ausführen
// Codevariablen auf 0 setzen
SetValueString("Display.SZ_Code1", "0");
SetValueString("Display.SZ_Code2", "0");
SetValueString("Display.SZ_Code3", "0");
SetValueString("Display.SZ_Code4", "0");
// Zeit abwarten und Hauptmenü anzeigen
IPS_Sleep(3000);
// Hauptmenü
IPS_RunScript("Display.SZ_MainMenu");
Return;
}
// Codeeingabe war falsch
// Display löschen und Hauptmenu-Button anzeigen
SetValueString(TX_SZ, ESC.A.I.chr(0));
SetValueString(TX_SZ, ESC.A.S.chr(1));
SetValueString(TX_SZ, ESC.D.L);
SetValueString(TX_SZ, ESC.A.L.chr(0).chr(0));
SetValueString(TX_SZ, ESC.U.V.chr(4));
SetValueString(TX_SZ, ESC.Z.F."CHICAGO14");
SetValueString(TX_SZ, ESC.Z.V.chr(1));
SetValueString(TX_SZ, ESC.Z.L.chr(8).chr(2).$Datum.CR);
SetValueString(TX_SZ, ESC.Z.R.chr(230).chr(2).$Zeit.CR);
SetValueString(TX_SZ, ESC.R.R.chr(00).chr(00).chr(240).chr(128).chr(13).CR);
SetValueString(TX_SZ, ESC.G.D.chr(50).chr(00).chr(50).chr(15).CR);
SetValueString(TX_SZ, ESC.Z.C.chr(120).chr(02)."Codeeingabe falsch".CR);
SetValueString(TX_SZ, ESC.G.D.chr(00).chr(15).chr(240).chr(15).CR);
SetValueString(TX_SZ, ESC.G.D.chr(190).chr(00).chr(190).chr(15).CR);
// Displayausgabe
SetValueString(TX_SZ, ESC.Z.L.chr(100).chr(50)."Code war falsch".CR);
// Befehl ausführen bei falscher Codeeingabe
IPS_LogMessage("Display.SZ","Es wurde ein falscher Code am LCD-Display im Schlafzimmer eingegeben.");
// Codevariablen auf 0 setzen
SetValueString("Display.SZ_Code1", "0");
SetValueString("Display.SZ_Code2", "0");
SetValueString("Display.SZ_Code3", "0");
SetValueString("Display.SZ_Code4", "0");
// Zeit abwarten zu erneuten Codeeingabe
IPS_Sleep(3000);
// Codeeingabe erneut anzeigen
IPS_RunScript("Display.SZ_Code");
?>