Hallo,
ich benutze das IPS_RunScriptWait auch an anderen Stellen, da funktionierts auch, nur in dem speziellen Fall nicht.
Das ist mein Edip_Auslesen-Script, getriggert von einer Registervariable:
<?
include('28364.ips.php');
if ($IPS_SENDER != "RegisterVariable") { // Raus wenn nicht von RegVar aufgerufen
print "Edip_Auslesen nicht von RegVar aufgerufen, sondern von " . $IPS_SENDER;
exit;
}
$buf = RegVar_GetBuffer($IPS_INSTANCE); // das sind Daten die bereits im Puffer sind
$buf .= $IPS_VALUE; // neu empfangene Daten anhängen
if (GetValueBoolean(@IPS_GetVariableID(".Debug_Flag"))) print "Buffer: " . $buf;
$id = ord(substr($buf,0,1)); //ersten wert auslesen
if ($id == "27") { //27 = 1B
switch (ord(substr($buf,1,1))) {
case "65": //A befehle auslesen
if ((strlen($buf))>3) { //Schauen ob alles empfangen wurde
$id = ord(substr($buf,3,1)); // 4.te zahl ist die Info die wir brauchen
if (GetValueBoolean(@IPS_GetVariableID(".Debug_Flag"))) print "erfolgreich ".$id . "
";
break;
}
}
}
// diese Nummer darf im EA-Kit Editor nicht definiert sein, sonst wird sie nicht gesendet
// 1 Hauptmenu
// 100 Display aktivieren
// 101 Zirkulationspumpe ein
// 102 Zirkulationspumpe aus
// 103 Teich an
// 104 Teich aus
// 105 System-Makro an
// 106 System-Makro aus
if (GetValueBoolean(@IPS_GetVariableID(".Debug_Flag"))) print $id. " empfangen
";
switch ($id) {
case "1": // Hauptmenu Touch gedrückt
include('21092.ips.php'); //IPS Startup-Script, als include sonst gehts nicht
break;
case "100";
SetValueBoolean(44883 /*[Heizung\DisplaySteuerung\Edip_Aktiv]*/,true); //Merker setzen Display an
IPS_RunScriptWait(52751 /* Display-Steuerung */);
// include('21092.ips.php'); //IPS Startup-Script, als include
// Show_Temp(); // Temperaturen anzeigen
break;
Bei case „100“ steht das RunScript, der Befehl davor wird noch ausgeführt und dann kommt das Script DisplaySteuerung
<?
// Display initialisieren
if (GetValueBoolean(@IPS_GetVariableID(".Debug_Flag"))) echo "DisplaySteuerung Script läuft
";
include('28364.ips.php');
edip("AL,100,1"); // Touch Dunkelschaltung löschen
edip("MN,0"); // Makro 0: Power-On ausführen
edip("DE"); // Display hell schalten
edip("YL,1"); // Beleuchtung an
edip("YH,5"); // Beleuchtung Helligkeit in %
$edip_str = "";
edip("AI,0");
edip("AE,0");
edip("AT,9,33,30,56,101,102,$edip_str"); // Touch Zirkulationspumpe
edip("AT,5,103,31,124,103,104,$edip_str"); // Touch Teich
edip("AT,35,0,60,8,110,111,$edip_str"); // Touch Aussentemperatur Min
edip("AT,75,0,90,8,112,113,$edip_str"); // Touch Aussentemperatur Max
IPS_RunScriptWait(16636 /*[Heizung\Aktuelle_Zeit]*/); // Aktuelle Zeit anzeigen
Show_Temp(); // Temperaturen anzeigen
?>
Der erste Befehl (print) wird schon nicht ausgeführt. Das Script wenns alleine läuft funktioniert.
Liegt da vielleicht an dem Aufruf durch die RegVar?
Gibt es irgendwo noch Fehlermeldungen die ich vielleicht nicht sehe?