Schalter und Buttons im Webfront

Blöde Frage; Wie kann ich im Webfront Schalter definieren? Als Elemente kann ich Kategorie, Externe Seite, Wetter… etc. auswählen. Möchte aber über einen Schalter ein Skript aufrufen können.

LG
Hugo

Ein Schalter für Ein und Aus, wäre z.B. ein Boolvariable. Will man mehrere Schalter nebeneinander haben, nimmt man eine Integervariable und erstellt ein eigenes Profil.

Ist alles in der Doku zu finden.

Hmm… Eine Variable habe ich schon definiert (als Switch). Müsste das jetzt nicht im Konfigurator als Option verfügbar sein?

Nein, der Konfigurator, ist dafür da, dein Webfront zu gestalten. Seitenaufteilung usw…

Die Variable oder was auch immer wird dann deiner Kategorie zugeordnet welche Du im WFC angegeben hast. Dann wird diese auch angezeigt.

Tu dir den Gefallen und les dich durch die Doku, dann ist der Frust nicht ganz so groß. :wink:

Jaja, RTFM, ich weiss schon :slight_smile:

Vielen Dank! Du hast mir sehr weitergeholfen.

LG
Hugo

Habe selbst gerade etwa 1h damit verbracht dies herauszufinden.
Für die Nachwelt … so funktionierts:

  1. Boolean Variable hinzufügen. Profil „~Switch“ auswählen.
  2. Ein Skript mit folgendem Inhalt anlagen. Die ID (12345) für die angelegte Boolean Variable entsprechend anpassen:
 if (GetValueBoolean(12345) == 0)
	  {SetValueBoolean(12345, true);
		}
		 else {SetValueBoolean(12345, false);
				 };
  1. Die Boolean Variable mit Doppelklick editieren. „Weiter“ auswählen. Das erstellte Skript für „Eigene Aktion“ mit dem Button „Auswählen“ bestimmen. „Weiter“, „Weiter“, „OK“.
  2. Das Skript bei Bedarf ausblenden. (Objekt bearbeiten, Optionen, „Versteckt“ auswählen)

Fertig!
Jetzt kann im Webfront (HTML oder Android) die Variable geschalten werden.
Entsprechende Schalt-Aktionen können zudem in dem erstellen Skript definiert werden.

Das kann man auch einfacher haben:

Script erstellen mit folgendem Inhalt:

<?
if($IPS_SENDER == „WebFront“)
{
SetValue($IPS_VARIABLE, $IPS_VALUE);
}
?>

Dann noch den Script der Variablen als Aktionsscript eintragen.

Den Script kann man dann für alle Variablen benutzen, die man im Webfront geschaltet haben möchte. Man muss ihn eben nur in der Variable als Aktionsscript eintragen.

Gruß
Dirk

Keine Antwort auf deine Frage, aber so sieht es besser oder leichter lesbar aus (in PHP-Tags):

<?
if($IPS_SENDER == "WebFront")
{
SetValue($IPS_VARIABLE, $IPS_VALUE);
}
?>

Danke für das Skript. Ist um einiges einfacher.

Steht sowas irgendwo in der Doku???
Habe gesucht aber sowas nicht gefunden.

Das dürfte das hier mit Abstand am meisten gepostete Skript sein. :wink:

Natürlich. :slight_smile:

Variablenprofile: IP-Symcon :: Automatisierungssoftware

Ok, ich denke ich sollte mal zum Augenarzt gehen.
Ich war auf der Seite aber hatte die „Brücke“ nicht dazu geschlagen daß dieses Skript für die Funktionsfähigkeit des Schalters im WF benötigt wird. War davon ausgegangen daß dies „Out-of-the-Box“ funktioniert und ich nur das „~Switch“ Profil auswählen muß.

Tja, jetzt weis ich auch wie’s geht. Danke!

P.S.: Da es sich bei dem Skript um das am meisten gepostete Skript handelt gehe ich davon aus, daß auch andere User Tomaten auf den Augen haben. :slight_smile:

Hmm … ich bekomme nur einen Schalter hin der über eine ganze Zeile geht. Kann man irgendwie auch nur einen einzelnen Button machen? Ich würde nämlich gerne ein paar Buttons nebeneinander in eine Zeile setzen.

Hallo ich bin absoluter Anfänger und fange mit php gerade an und bräuchte doch mal konkrete Hilfe.

Ich hab einem passenden Taster mit Hoch Stop Runter im WEBFRONT ein Action Skript zugewiesen mit


if ($_IPS['SENDER'] == "WebFront") 
{
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}

jetzt möchte ich mit diesem Taster 2 Rollos gleichzeitig ansprechen.

Die einszelen IDs mit den Variablen der Rollos sind in 42736 und 58289.
ID des Action Scripts 39419

Wie müsste ich jetzt noch die Variablen in das Action Script oder ein Neues Script einfügen damit die 2 Rollos auf die gewünschten WEB Buttons reagieren.

Über eine Hilfe wäre ich sehr dankbar und bitte schon mal meine riesengroßen Wissenslücken zu entschuldigen

Der Wert des Schalters soll einfach weitergereicht werden? Dafür musst du gar nicht das Skript anfassen. Du kannst an den beiden Zielen je ein ausgelöstes Ereignis erstellen, dass bei Änderung des Schalters das Rollo auf den auslösenden Wert schaltet.

Danke Nils.
das hab ich hinbekommen. In der Doku wird aber unter Aktionskripte von so einem vorgehen abgeraten wenn ich das richtig verstehe.
Wie müsste ich das Skript aber anpassen damit ich damit die IDs anspreche.
Zur Verständnis und damit ich darauf aufbauen kann.

Sehr gut! Du hast die Doku vorbildlich gelesen. Das freut mich :slight_smile: Die von mir vorgeschlagene Variante funktioniert ohne Skript und ist sozusagen die „einfache“ Variante. Du hast aber vollkommen recht, ein Einbinden ins Aktionsskript ist besser, da du keine Fehler verdeckst. Ist beispielsweise einer deiner Rollladen gerade offline, wird dir dies beim Schalten per Ereignis nicht angezeigt und du bekommst erst viel später mit, dass etwas nicht funktioniert. Bindest du die Schaltoperationen direkt ins Aktionsskript mit ein, bekommst du direkt eine Fehlermeldung, wenn etwas nicht funktioniert. Dann verpasst du es auch nicht, dass beim Rollladen irgend etwas schief gegangen ist.

Die Anpassung am Skript ist auch nicht kompliziert. So könnte das Ergebnis aussehen:


if ($_IPS['SENDER'] == "WebFront") 
{
    RequestAction(12345 /* ID der zu schaltenden Variable von Rollo 1 */, $_IPS['VALUE']);
    RequestAction(23456 /* ID der zu schaltenden Variable von Rollo 2 */, $_IPS['VALUE']);
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}

Wichtig ist an der Stelle auch, dass du die RequestAction-Befehle vor das SetValue setzt. Geht dann beim Schalten etwas schief, bekommst du eine Fehlermeldung ins WebFront und der Wert der Variablen wird nicht gesetzt.

Vielen Dank Dr. Niels.
Funktioniert Tadellos und somit wieder was gelernt.

Aber das hier gepostete Skript setzt die Schalter Variable doch nur um, wenn diese über das Webfront gesetzt wurde.
Wird zB der Status (State Variable) des Aktor über eine Automatik geschaltet oder aber manuell auf anderem Wege, so wird diese im Webfront nicht gesetzt (?)
Dafür müsste man dann das Ursprungsskript nehmen, welches der TE am Anfang genannt hat oder?

Ich komme aber auch nicht so recht weiter mit der Konfiguration eines 3-fach Buttons.

Habe ein einen Wochenplan, der von 06:55 - 21:55 Uhr die Zirkulationspumpe für 5min einschaltet, also um 06:55-07:00, 07:55-08:00 Uhr usw…

Zusätzlich gibt es ein Timer-Skript, welches 300 Sekunden läuft und manuell per Tastendruck ausgelöst werden kann und ebenfalls die Zirkulationspumpe ansteuert.

Jetzt hätte ich gerne einen 3-fach Button im Webfront „Aus/Ein/Timer“ der mir den aktuellen Zustand der ZK-Pumpe anzeigt (Aus, Dauer-Ein, Timer-Ein) und über den ich diese 3 Zustände auch manuell wählen kann.

Über „Aus“ müsste der Status (State) der ZK-Pumpe auf false gesetzt werden bzw ein evtl. laufendes Timer-Skript abgebrochen werden, über „Ein“ müsste der Status (State) der ZK-Pumpe auf true gesetzt werden, über „Timer“ müsste das Timer-Skript gestartet werden.

Da sich aber mit dem Starten des Timer-Skript auch gleichzeitig der Status (State) des ZK-Aktors ändert, sehe ich hier das Problem bzw finde keine Lösung einer Differenzierung, ob nun die Pumpe auf Dauer-Ein oder Timer-Ein steht.