Variablenänderung durch Skript nur, wenn das Skript die Variable zuletzt geändert hat

Hallo,

für den Aussperrschutz, der über einen Homematic-Drehgriff-Sensor läuft, habe ich folgendes Skript gebastelt:

<?

$Zustand = GetValueInteger(58186 /*[Geräte\Fenster-Türen\Drehgriff Dachterrasse\STATE]*/);

if (GetValue(44732 /*[Beschattung\Automatikschaltung\Automatik DT]*/))
{
	if (($IPS_SENDER == "TimerEvent") && ($Zustand == "2")) // nach 2 sec prüfen
	{
	  setValue(44732 /*[Beschattung\Automatikschaltung\Automatik DT]*/, false);
	  HM_WriteValueFloat(59019 /*[Geräte\Jalousien\Jalousie DT]*/, "LEVEL", 1.0);
	  IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	  return; // Script verlassen
	}

	if ($Zustand == "2") 
	{
	   IPS_SetScriptTimer($IPS_SELF, 2); // Timer für 2 sec setzen
	}

	else
	{
	  IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	  return; // Script verlassen
	}
}

else
{
	if (($IPS_SENDER == "TimerEvent") && ($Zustand == "2")) // nach 2 sec prüfen
	{
	  HM_WriteValueFloat(59019 /*[Geräte\Jalousien\Jalousie DT]*/, "LEVEL", 1.0);
	  IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	  return; // Script verlassen
	}

	if ($Zustand == "2") 
	{
	   IPS_SetScriptTimer($IPS_SELF, 2); // Timer für 2 sec setzen
	}

	else
	{
		setValue(44732 /*[Beschattung\Automatikschaltung\Automatik DT]*/, true);
		IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	   	return; // Script verlassen
	}
}

?>

Dadurch soll die Beschattungsautomatik an der betreffenden Tür ausgeschaltet und die Jalosie heraufgefahren werden, wenn der Drehgriff mind. 2 Sekunden auf „offen“ steht. Wenn der Griff nicht mehr auf offen steht, soll die Automatik wieder eingeschaltet werden. Das klappt auch soweit.

Allerdings wird die Automatik mit dem Skript auch eingeschaltet, wenn sie vorher bereits ausgeschaltet war und dies nicht durch das Skript erfolgt ist. Ich möchte die Automatik durch das Skript aber nur wieder einschalten, wenn sie zuletzt durch das Skript selbst ausgeschaltet worden ist (wenn sie bereits vorher aus war, soll sie auch aus bleiben).

Hat jemand eine Idee, was ich ergänzen muss, um das zu realisieren?

Danke und vG…!

Ich habe es inzwischen selbst hinbekommen:

<?

$Zustand = GetValueInteger(58186 /*[Geräte\Fenster-Türen\Drehgriff Dachterrasse\STATE]*/);

if (GetValue(44732 /*[Beschattung\Automatikschaltung\Raumautomatik\Automatik DT]*/))
{
	if (($IPS_SENDER == "TimerEvent") && ($Zustand == "2")) // nach 2 sec prüfen
	{
	  setValue(44732 /*[Beschattung\Automatikschaltung\Raumautomatik\Automatik DT]*/, false);
	  	$VarA = IPS_GetVariable(44732 /*[Beschattung\Automatikschaltung\Raumautomatik\Automatik DT]*/);
		$ChMemo = $VarA['VariableChanged'];
	  setValue(52858 /*[Test\AutoTest]*/, $ChMemo);
	  HM_WriteValueFloat(59019 /*[Geräte\Jalousien\Jalousie DT]*/, "LEVEL", 1.0);
	  IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	  return; // Script verlassen
	}

	if ($Zustand == "2") 
	{
	   IPS_SetScriptTimer($IPS_SELF, 2); // Timer für 2 sec setzen
	}

	else
	{
	  IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	  return; // Script verlassen
	}
}

else
{
	if (($IPS_SENDER == "TimerEvent") && ($Zustand == "2")) // nach 2 sec prüfen
	{
	  HM_WriteValueFloat(59019 /*[Geräte\Jalousien\Jalousie DT]*/, "LEVEL", 1.0);
	  IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	  return; // Script verlassen
	}

	if ($Zustand == "2") 
	{
	   IPS_SetScriptTimer($IPS_SELF, 2); // Timer für 2 sec setzen
	}

	else
	{
		$ChMRC = GetValue(52858 /*[Test\AutoTest]*/);
		$VarA = IPS_GetVariable(44732 /*[Beschattung\Automatikschaltung\Raumautomatik\Automatik DT]*/);
		$ChMemo = $VarA['VariableChanged'];
		if ($ChMemo == $ChMRC)
		{
		setValue(44732 /*[Beschattung\Automatikschaltung\Raumautomatik\Automatik DT]*/, true);
		IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	   	return; // Script verlassen
		}
		
		else
		{
		IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
	   	return; // Script verlassen
		}
	}
}

?>