DisableAction/EnableAction zur "Laufzeit

Hallo Leute,

vielleicht liegt es ja an der Wärme…:slight_smile:

Folgende Konstellation:
Im Create (Auszug):

$this->RegisterVariableBoolean("Automatic", "Automatik", "~Switch", 10);
		$this->EnableAction("Automatic");
            	$this->RegisterVariableBoolean("State", "Status", "~Switch", 20);
		$this->EnableAction("State");

Im ApplyChanges (Auszug):

If (GetValueBoolean($this->GetIDForIdent("Automatic")) == true) {
			$this->DisableAction("State");
		}
		else {
			$this->EnableAction("State");
		}

Im RequestAction (Auszug):

public function RequestAction($Ident, $Value) 
	{
  		switch($Ident) {
			case "Automatic":
			    If ($this->ReadPropertyBoolean("Open") == true) {
				   SetValueBoolean($this->GetIDForIdent("Automatic"),  $Value);
				   If ($Value == true) {
				   	   $this->SendDebug("RequestAction", "State wird Disabled", 0);
					   $this->DisableAction("State");
				   }
				   else {
					   $this->SendDebug("RequestAction", "State wird Enabled", 0);
					   $this->EnableAction("State");
				   }
			    }
			    break;
				
			case "State":

Erwartungshaltung: Wird „Automatic“ gesetzt, wird „State“ „DisableAction“ gesetzt und umgekehrt…

Das funktioniert aber offenbar nur, wenn „Automatic“ beim Start des Moduls „false“ war…:confused:
Bei den Instanzen, bei denen „Automatic“ zum Start der Instanz „true“ war, durchläuft er zwar korrekt die Funktion (sehe ich an der Debug-Ausgabe), aber „State“ wird nicht „EnableAction“, sondern bleibt in seinem (DisableAction-)Zustand…

Ich verstehe das nicht…

Joachim

Schau dir die Variable in der Konsole an.
Eventuell ist ja die Standardaktion deaktiviert worden.
Da kannst du dann ewig EnableAction aufrufen, die User Einstellung hat Vorrang.
Michael
PS: Du solltest lieber SetValue und GetValue aus dem SDK benutzen, gibt es schon seit IPS 5.0.

Hallo Michael,

das ist ja nun ganz „gediegen“…tatsächlich waren bei den meisten Instanzen die „Benutze Standardaktion“ nicht aktiviert…:confused:

Warum auch immer, jetzt funktioniert es offenbar erwartungsgemäß. Hab zum Test mal eine weitere Instanz installiert, dort sah alles gleich von Anfang an „passend“ aus.

Wenigstens ein Problem erfolgreich gelöst und wieder etwas gelernt (SetValue/GetValue).

Vielen Dank!

Joachim