Mehrere Variablen als Auslöser für Ereignis

Hallo zusammen und noch ein frohes neues Jahr gewünscht!

Ich bin seit Kurzem stolzer Besitzer von IP Symcon und wusle mich derzeit durch die ganzen Funktionen und Möglichkeiten.
Grundsätzlich habe ich das System wohl kapiert, ich konnte auch schon die ersten funktionalen Bedienseiten (KNX, HUE, Zehnder, Viessmann,…) erstellen.

Jetzt stehe ich aber vor einem Problem:
Ich möchte auf einer Übersichtsseite anzeigen lassen, ob alle Fenster im Haus geschlossen sind oder, falls nicht, welches Fenster offen ist. Dazu habe ich drei Dummy-Instanzen (OG, EG, KG) erstellt und darunter die jeweiligen Fensterwert-Variablen verlinkt.
Für die jeweilige Variable könnte ich ja mit zwei Ereignissen (Wert false: nicht anzeigen, Wert true: anzeigen) die Sichtbarkeit steuern.
Darüber hinaus würde ich aber gerne auch die Dummy-Instanzen in Abhängigkeit der Fenster nur dann anzeigen, wenn im jeweiligen Stockwerk ein Fenster offen ist. Falls kein Fenster offen ist soll irgendwie „alles zu“ (oder so) ausgegeben werden.

Quick&Easy über die Konsole ist das ja nicht möglich, da ich als Auslöser für ein Ereignis nicht mehrere Variablen per „oder“ verknüpfen kann - wenn ich das soweit richtig verstanden habe.
D.h. ich muss wohl oder übel über ein Skript gehen.

Muss ich dann dieses Skript per Ereignis bei jeder Variable (sind 22) einbinden? Oder gibt es eine Möglichkeit das Skript einmalig irgendwo zu hinterlegen und bei Änderung einer Variable zu starten?

Du kannst aber mehrere Ereignisse anlegen, welche das gleiche Ziel haben.
Und dort dann die anderen auslösenden Variablen als erweiterte Bedingungen eintragen um z.b. nur wenn alle Fenster zu sind das Objekt unsichtbar zu machen.
Auch bei einem Script brauchst du immer ein Ereignis pro Variable welche auf Veränderung überwacht werden soll.
Als Idee für ein Script kannst du z.b. das Etagenlicht Script versuchen zu verstehen und anzupassen.
Dann hast du eine Variable welche sagt mindestens ein Fenster auf oder alle sind zu.

Es ist etwas kompliziert, da es auch eine Aktion zum ausschalten enthält.
Sonst gibt es im Modul Store z.B.

Dynamic Visu Control
Enthält verschiedene Module für die dynamische Visualisierung von Objekten im WebFront von IP-Symcon.
Objekte können, in Abhängigkeit von Variablen in Symcon, deaktiviert oder versteckt werden

Michael

Servus Michael,

stimmt, das geht tatsächlich, da hatte ich nen Denkfehler.

Dann brauche ich aber für mein Vorhaben vier Ereignisse pro Fenster:

  1. Mache Geschoss-Instanz sichtbar, wenn Ereignis „Fenster A auf“
  2. Verberge Geschoss-Instanz, wenn Ereignis „Fenster A zu“ UND „alle anderen Fenster zu“
  3. Mache Variable Fenster A sichtbar, wenn Ereignis „Fenster A auf“
  4. Verberge Variable Fenster A, wenn Ereignis „Fenster A zu“

Macht bei meinen 17 Fenstern insgesamt 68 Ereignisse, die zu erstellen sind…

Das klappt zwar, aber mein Instinkt sagt mir, dass das nicht der Weisheit letzter Schluss ist. Allein das Wissen fehlt, um das vernünftig zu lösen…

17 Fenster = 17 Ereignisse.
Und dann kannst du den Vergleich der Fenster untereinander im Script machen.
Alternativen sind Modul aus dem Modulstore.
Gibt dort auch die Aktivliste als Modul.
Michael

Hahaha, danke für den Denkanstoß.
Ich wusste doch, dass mein Ansatz ein wenig dämlich war.

<?php
$EtagenVariableID=48227;
$NewValue=true; 
foreach (IPS_GetChildrenIDs($EtagenVariableID) as $ObjectID)
{

    if (IPS_LinkExists($ObjectID))
    {
        if (GetValueBoolean(IPS_GetLink($ObjectID)['TargetID']) == true)  //
	    {
            $NewValue = false;
            IPS_SetHidden(IPS_GetLink($ObjectID)['LinkID'], false);
	    }
        else
        {
            IPS_SetHidden(IPS_GetLink($ObjectID)['LinkID'], true);
        }
    }
}
IPS_SetHidden($EtagenVariableID, $NewValue);

Tut das, was ich wollte.

Man sieht: ein kleiner Schubser in die richtige Richtung und schon schaut das alles gleich viel besser aus :wink:

Merci!

Hallo.
Ich suche nach einer ähnlichen Lösung.
Im Moment habe ich 3 zu überwachende Fenster.
Wenn alle zu sind soll an meiner HM-OU-LED16 z.B die LED 12 den Wert 1 bekommen.
Wenn eines der 3 Fenster offen ist den Wert 3 .
„Fenster geschlossen“ per Ablaufplan kann ich erstellen.


Aber die Abfrage ob eines offen ist klappt nicht. Ich finde keine „oder“ Verkrüpfung.

Alles für jedes Fenster zu erstellen erscheint mir nicht sinnvoll. Wenn es mehr Fenster werden, gute Nacht… ;-(

Gibt hier nicht eine einfachere Lösung. Ich befürchte ich geh das Problem falsch an.
LG JensV

Ich würde das auf die Schnelle mit zwei Ablaufplänen machen.

  1. Ablaufplan: Wenn irgend ein Fenster geöffnet wird die LED auf 3 geschaltet.

2.Ablaufplan: Wenn irgend ein Fenster geschlossen wird LED auf 0 geschaltet. Dazu bei allen drei Ereignissen noch als Bedingung dass die jeweils anderen zwei Fenster geschlossen sein müssen.
Das sollte so eigentlich funktionieren…

Wenn ich das richtig verstehe, möchtest du nur prüfen, ob ein oder mehr Fenster offen sind, ohne abzufragen, welches offen und welches geschlossen ist?

Das wäre ja ein ganz kurzes Skript:

If Fenster1 = zu AND Fenster2 = zu AND Fenster3 = zu
LED12 = 1
Else
LED12 = 3

Als Auslöser für das Skript dann noch die Statusvariablen der drei Fenster „bei Änderung“.

Hallo cybergnom.

Super. Vielen Dank. :+1:

LG JensV