2-Fach Schalter im WebFront

Hallo,

endlich komme ich mal wieder dazu meine Steuerung zu erweitern. Da mit jedoch noch viel zu lernen hab, frage ich einfach mal nach einer aktuellen Lösung:

ich habe einen Skript, der durch ein Ereignis ausgelöst wird. Nun möchte ich per Ein/Aus Schalter im webfront bestimmen, ob der Skript auf das Ereignis reagieren soll. Bisher kein Problem mit IPS_SetEventActive schalte ich die Ereignisüberwachung aus oder ein. Was mir fehlt, ist der 2-fach Schalter im Webfront - der soll bei „an“ auch optisch leuchtender sein und bei „aus“ soll diese Schaltfläche leuchten. Toogle würde auch gehen, scheint mir aber noch komplizierter. Hab mich erfolglos an IPS_SetVariableProfileAssociation versucht, weil ich da bisher überhaupt keinen Plan, trotz Recherche und Doku wälzen, habe.
Vielleicht hat jemand genau sowas im Einsatz.

Grüße oekomat

ich habe es mal für mich einfacher versucht:

$Schalter = 1;

if ($Schalter == 0)

{
IPS_SetVariableProfileAssociation("Abzug", 0, "aktiv", "", 0xff0001);
IPS_SetVariableProfileAssociation("Abzug", 1, "", "", -1);
echo "an";
}

else
{

IPS_SetVariableProfileAssociation("Abzug", 1, "inaktiv", "", 0xFFA943);
IPS_SetVariableProfileAssociation("Abzug", 0, "", "", -1);
echo "aus";

}

beim ersten Durchlauf funktioniert alles, allerdings kommt ein Fehler-Hinweis, wenn sich der Wert des Schalters nicht ändert und der Skript nochmal läuft:

Warning:  Cannot find association for deletion with value 0.000000 in /var/lib/symcon/scripts/17313.ips.php on line 22
aus 

Warum das denn?

Grüße oekomat

Die Warnung kommt durch die Zeile IPS_SetVariableProfileAssociation(„Abzug“, 0, „“, „“, -1); (und würde analog auch für IPS_SetVariableProfileAssociation(„Abzug“, 1, „“, „“, -1); kommen), also jeweils der zweite Aufruf von IPS_SetVariableProfileAssociation. Hier möchtest du für das Profil „Abzug“ die Assoziation für 0 bzw. 1 löschen, da du weder einen Namen noch ein Icon angibst (das ist der dritte und vierte Parameter, die bei dir jeweils „“ sind). Da für diesen Wert aber bei deiner Skriptausführung noch gar kein Wert gesetzt ist, kommt die Fehlermeldung.

Wenn ich dein Problem richtig verstehe, dann brauchst du IPS_SetVariableProfileAssociation hier auch gar nicht. Du möchtest, so wie ich das verstehe, einen Ein/Aus-Schalter für das Event, der über das Webfront gut sichtbar und schaltbar ist. Hier würde ich dir eine Boolean Variable mit Aktionsskript empfehlen. Im Aktionsskript aktivierst oder deaktivierst du das Ereignis und setzt den neuen Wert der Variablen. Dann kannst du das Ereignis gemütlich aus dem Webfront aktivieren oder deaktivieren und kannst durch die aktuelle Variablenbelegung auch sehen, ob das Skript aktiv ist oder nicht.

Zusätzlich könntest du natürlich auch noch ein Profil für die Variable erstellen, welches den Zustand noch anschaulicher beschreibt, aber hierfür musst du keine Skripte benutzen, hierfür reicht der Profileditor.

Danke für deine Antwort Niels,

ich nutze hier IPS_SetVariableProfileAssociation um den Schalter als Toogle-Schalter im Webfront darzustellen. Ein Switch-Schalter würde von meiner Frau nicht gewünscht. :slight_smile:
Ich glaube hier müsste der Titel angepasst werden.
Ich hab jetzt einen Skript gebaut, in der ich die Variable und den Schalter tooglen kann - funktioniert in der Konsole ohne Fehler. Was jedoch komisch ist: Beim Drücken des Taste kommt ein Fehler im Webfront. Wieso das denn???


 <?
$ProfileName = 'Abzug';
$dunstskript = GetValueInteger(20918);


If ($dunstskript == 1)

{

IPS_SetVariableProfileAssociation("Abzug", 0, "inaktiv", "", 0xFF0000);
IPS_SetVariableProfileAssociation("Abzug", 1, "", "", -1);
IPS_SetEventActive(48780 /*[Dunstabzug\Bei Variablenaktualisierung der Variable "Räume\Küche\Status Küchenfenster\SHUTTER_CONTACT\STATE"]*/, false);
HM_WriteValueBoolean(24063 /*[Räume\Küche\Dunstabzug\SWITCH_VIRTUAL_RECEIVER]*/,'STATE',true);  
SetValueinteger(20918 /*[WebFront Visualisierung\home\Test\xxx]*/, 0);
//echo "aus";
return;
}

//echo "aaa";
If ($dunstskript == 0)

{
IPS_SetVariableProfileAssociation("Abzug", 0, "", "", -1);
IPS_SetVariableProfileAssociation("Abzug", 1, "aktiv", "", 0x00FF00);
IPS_SetEventActive(48780 /*[Dunstabzug\Bei Variablenaktualisierung der Variable "Räume\Küche\Status Küchenfenster\SHUTTER_CONTACT\STATE"]*/, true);
SetValueinteger(20918 /*[WebFront Visualisierung\home\Test\xxx]*/, 1); 
//echo "an";
}

?> 

Fehler.JPG

Grüße oekomat

Hier lesen:
Ausgabe von „Fehler“ im Webfront ohne ersichtlichen Grund (seit Version 3.1)
Michael

Hay Michael,

danke, dass du mir die Tomaten von den Augen entfernt hast. Das sind wohl so Fehler, die nur einmal passieren.:banghead:

Dann kann ich mich jetzt den nächsten Projekt widmen: Fritzbox :wink:

Gruß oekomat