Timer und Übergabewerte?

Hallo zusammen, ich möchte wenn ein Gerät einen Gerätefehelr hat, denn befehl (z.b. Rollo Position -> 100%) nochmal senden. Er soll dafür aber 3-5 Minuten warten und die Position sich dabei merken. Normalerweise würde ich das über nen TimerEvent lösen, so das sich das Skript selbst aufruft. Aber kann es auch sich selbt Werte übergeben?

Ausschnit aus der setShutterPosition Methode:


if ($retry) {
         IPS_RunScriptEx(44207 /*[Schnittstellen\HomePilot\HomePilot Retry]*/, Array("deviceId" => $device, "pos" => $pos, "type" => "shutterPos", "deviceBug" => false)));
}

HomePilot Retry Skript:


<?
ini_set('max_execution_time', 120); //max. Scriptlaufzeit definieren
if ($_IPS['SENDER'] === "RunScript") {
	echo "ERROR: Nur Sender = \"RunScript\" möglich.";
	return;
}

if ($_IPS['deviceBug'] === true) {
	IPS_Sleep(100*1000);
} else {
	IPS_Sleep(30*1000);
}

if ($_IPS['type'] === "shutterPos") {
   HP_setShutterPos($_IPS['deviceId'], $_IPS['pos'], false, false);
} else if ($_IPS['type'] === "shutterAuto") {
 	HP_setShutterAuto($_IPS['deviceId'], $_IPS['state'], false, false);
} else if ($_IPS['type'] === "switchingSocketState") {
   HP_setSwitchingSocketState($_IPS['deviceId'], $_IPS['state'], false, false);
}

?>

Danke!

Gruß Basti

Moin!

So ganz verstehe ich nicht was du vor hast, aber Werte übergeben klappt immer nur während Skript-Laufzeiten. Ist dazwischen quasi eine Pause, dann musst du die Daten in einer String-Hilfsvariable zwischenspeichern.
> Array zu String und zurück geht mit > implode/explode

Grüße,
Chris

Hey Chris,

danke, ich glaub du hast es schon verstanden. Die Idee ist auch ganz gut, aber das Skript kann ja auch mehrfach ausgfeführt werden und somit würde die Variable jedesmal überschrieben werden.

Gruß Basti

Moin!

Dann bau es doch nach diesem Schema auf:
GerätA => WertXY
GerätB => WertVW
GerätC => WertHA

Das geht auch mit mehrere Werten pro Gerät… Und dann ebenfalls in String speichern und dann wieder aus String auslesen. So kannst du im Array nach GerätXY suchen und wenn vorhanden dann dies und wenn nicht vorhanden dann das…

Wie das funktioniert wurde hier grad beantwortet :slight_smile:
Array als Variable abspeichern

Grüße,
Chris