Farbe/Text Toggle Button

Hallo,

ich würde gerne bei einem Toggle-Button, der normal auf „Schalten“ steht, bei drücken kurz „Ein“ bzw. „Aus“ in einer anderen Farbe darstellen. Dazu habe ich folgendes Skript:

if($_IPS['SENDER'] == "Execute")
{
    $value = IPS_GetVariableProfile("Schalten");
    switch($value['Associations'][0]['Value'])
    {
         case 0:
        Ein();
        break;
        case 1:
        Aus();
        break;
    }
}


if($_IPS['SENDER'] == "WebFront")
{
   switch($_IPS['VALUE'])
    {
         case 0:
        Ein();
        break;
        case 1:
          Aus();
        break;
    }
}

function Ein()
{
        IPS_SetVariableProfileAssociation("Schalten", 0, "", "", -1);
        IPS_SetVariableProfileAssociation("Schalten", 1, "        Ein       ", "", 0x00FF00);
	setValue(30142 /*[Beschattung\Automatikschaltung\Raumautomatik\Automatik kl. Wo. Küche]*/, true);
	IPS_Sleep(300); 
	IPS_SetVariableProfileAssociation("Schalten", 1, "", "", -1);
	IPS_SetVariableProfileAssociation("Schalten", 1, "        Schalten       ", "", 0x2EFEF7);
}

function Aus()
{
   	IPS_SetVariableProfileAssociation("Schalten", 1, "", "", -1);
        IPS_SetVariableProfileAssociation("Schalten", 0, "        Aus       ", "", 0xFF0000);
	setValue(30142 /*[Beschattung\Automatikschaltung\Raumautomatik\Automatik kl. Wo. Küche]*/, false);
	IPS_Sleep(300); 
	IPS_SetVariableProfileAssociation("Schalten", 0, "", "", -1);
	IPS_SetVariableProfileAssociation("Schalten", 0, "        Schalten       ", "", 0x2EFEF7);
}  

Leider funktioniert das nur sporadisch, meist aber bleibt es bei „Schalten“ in der entsprechenden Farbe.

Hat jemand eine Idee warum?

Danke und Grüße…!

Hat wirklich keiner der php-Profis eine Idee, wo der Fehler liegt???

Viele Grüße…

Hallo
Ich denke mal die 300 Millisekunden sind zu schnell. NImm mal 3000 Millisekunden.
Das funktioniert. Und das Loeschen gleich nach der Pause kannst du dir auch sparen,
da du gleich wieder was hineinschreibst.

Sind das nicht 300 Sekunden?
Zumindest die normale Sleep-Funktion.
Wie es jetzt mit "IPS_Sleep(300); "aussieht ?

Alles zurück. In der IPS Doku ist es doch in ms angegeben

Hallo
IPS_Sleep in Millisekunden
https://www.symcon.de/service/dokumentation/befehlsreferenz/ablaufsteuerung/ips-sleep/
das Sleep in PHP in Sekunden
http://php.net/manual/de/function.sleep.php

Danke 1007.

Das Löschen hatte ich nur, um einen Fehler insoweit auszuschließen.

3000 ms sind mir zu lang. Ich hatte es ursprünglich mal mit 750 ms versucht, das war aber offenbar auch zu kurz. Ich bin jetzt mal „mutiger“ geworden (von einem „längeren“ sleep wird ja immer abgeraten) und habe es auf 900 ms festgelegt. Damit scheint es zu funktionieren.

Wenn jemand noch eine Alternative zur sleep-Variante kennt, gerne immer her damlt…

Viele Grüße!

Hallo
Mir erschliesst sich im Moment der Sinn nicht warum man es so macht.
Wenn es auf ˋSchalteń steht seh ich ja nicht den aktuellen Zustand. Beim Schalten nur für < 1Sekunde.
Aber wie auch immer ein Sleep von 3 Sekunden seh ich jetzt nicht als Problem an in diesem Fall.

Gesendet von iPad mit Tapatalk

Hallo 1007,

ich habe darauf gewartet, bin aber froh, dass Du erst einen Lösungsvorschlag gemacht und dann die Sinnfrage gestellt hast (andere machen es ja leider umgekehrt…) :smirk:

Aber wie immer hat natürlich alles seinen Sinn:

Ich steuere damit Automatikschaltungen in mehreren Räumen bzw. schalte diese damit gesamt an/aus (der Einfachheit halber war in dem geposteten Skript nur ein Raum ausgewiesen). Für die einzelnen Räume kann die jeweilige Automatik auch einzeln/separat geschaltet werden, so dass der Zustand „ein“ oder „aus“ beim „Generalschalter“ immer nur im Augenblick des Schaltens sicher ist (er stimmt halt nur solange, bis ein Einzelraum anders geschaltet wird…).

Viele Grüße und ein schönes Wochenende …

Hi,

Magst du mal ein Screeshot vom Webfront einstellen. Würde mich mal interessieren, wie das aussieht. Ohne das ich das Skript installiere.

Die Schaltzeiten vom drücken des Tasters, sind die entscheidend und wertest du die aus?
Evtl brauchst du ja kein Skript dafür anlegen und kannst es in dem Profimanager verwalten.
Im Boolean den Schalter kopieren und anpassen.