Über ~Window Variable schalten?

Hallo,

ich befasse mich jetzt seit heute mit der Programmierung und es ist schon recht komplex. Ich bin da auf mein erstes kleines Problem gestoßen, dass ich auch durch die Suche nicht lösen konnte:

Ich hab einen Neigungssensor der Homematic der im Web „An“ und „Aus“ anzeigt für ein Garagentor. Da ich das nicht so toll finde hab ich eine Variable vom Typ Fenster angelegt und steuere die über ein Ereignis des Neigungssensors an und im Frontend wird schön „offen“ bzw. „geschlossen“ angezeigt.

Jetzt würde ich aber gerne durch einen Klick im WebFront auf die Variable eine Aktion auslösen so dass das der Toraktor für 1 Sekunde anzieht und das Tor in die neue Position fährt.

Ist sowas möglich?

Ich hab es auch schon mal mit einem Switch probiert, den ich unter die Garagentoranzeige gelegt habe aber auch da passiert nichts wenn ich drauf klicke. Ich hab wohl irgendwo gelesen, dass ich prüfen muss ob da eine Änderung durch das Webfront kam aber richtig funktionieren tut das Ganze leider noch nicht.

Vielleicht hat jemand einen Tipp für mich.

mws

Das Profil ist schonmal super. In dem selben Dialog hast du unten die Möglichkeit ein Aktionsskript zu erstellen, welches dann deinen Schaltbefehl annimmt.

paresy

Meinst Du bei der ~Window Variable ein Ereignis anlegen?
Und dann wie weiter?

Kannst Du mir vielleicht was näher erläutern, was Du genau meinst?

Danke

mws

in der Variable unter „eigene Aktion“ das Script eintragen, welches den Befehl ausführt

Ah super, damit bekomme ich auf jeden Fall schon mal die beiden Schaltflächen „Geschlossen“ und "Geöffnet.

Wenn ich aber zum Test erst mal versuche nur die Variable umzuschalten geht das leiser nicht.

	if($IPS_SENDER == "WebFront")
	{
		SetValueBoolean(45679 /*[Erdgeschoss\Garage\Garagentor\STATE]*/, !(45679 /*[Erdgeschoss\Garage\Garagentor\STATE]*/));
	}

Was mache ich noch falsch? Ich vermute mal, es ist nur eine Kleinigkeit aber ich komme nichtdrauf.

mws

OK, ich hab das ganze jetzt mal umgebaut in folgenden Code:

	if($IPS_SENDER == "WebFront")
	{
	   if (GetValueBoolean(45679 /*[Erdgeschoss\Garage\Garagentor\STATE]*/) == true)
		{
			SetValueBoolean(45679 /*[Erdgeschoss\Garage\Garagentor\STATE]*/, false);
		}
		else
		{
		   SetValueBoolean(45679 /*[Erdgeschoss\Garage\Garagentor\STATE]*/, true);
  		}
	}

aber das ist doch mega umständlich. Geht das nicht eleganter wie in meiner Idee ein Post vorher also den Wert der Variable mit dem negierten Wert der gleichen Variable zu beschreiben?

mws

du kannst folgendes Universal-Script benutzen:

 if ($IPS_SENDER == "WebFront")
    SetValue($IPS_VARIABLE, $IPS_VALUE);

Gruß, Peter

hallo…
bei deinem ersten Code-Schnippsel hast du was vergessen… sollte wohl so lauten:

 if($IPS_SENDER == "WebFront") 
    { 
        SetValueBoolean(45679 /*[Erdgeschoss\Garage\Garagentor\STATE]*/, !GetValueBoolean(45679 /*[Erdgeschoss\Garage\Garagentor\STATE]*/)); 
    }  

@ChristianS
Ja cool, das wars danke!!! :loveips:

@all
den Code

if ($IPS_SENDER == "WebFront") 
    SetValue($IPS_VARIABLE, $IPS_VALUE);  


Hab ich jetzt schon öfter gesehen, was genau macht der?

Edit:

OK, habs grade raus gefunden, es macht genau das was mein Skript auchmacht nur direkt für die Variable für die das Skript erzeugt wurde

:slight_smile:

mws

Das ist das Universal-Minimal-Skript um die Betätigung einer Variable im Webfront/iMobil zu visualisieren und den Wert der Variable zuzuweisen.