EINE Variable von mehreren anderen Variablen "triggern" - Logikbaustein nachbilden

Hallo,
mir fehlt ein bisschen die Idee deshalb beschreibe ich was ich machen möchte.
Es gibt mehrere Stockwerke in welchen mittels KNX-Aktor das Licht eingeschaltet wird. Eine dazugehörige Instanz mit Variable habe ich.

Nun möchte ich eine „Sammelvariable“ welche solange auf TRUE ist als in einem beliebigen Stockwerk das Licht eingeschalten ist.
Erst wenn nirgendwo mehr Licht leuchtet - also alle KNX-Aktoren bzw. deren Variablen auf FALSE sind soll auch diese Sammelvarialbe (alle Stockwerke) auf FALSE gehen.

Normalerweise realisiert man so was mit einem Logikbaustein.

Muss ich das in einem Script „hardcoded“ ausprogrammieren oder gibts da Schnipsel welche ich übernehmen könnte ?

Ich nutze folgendes Script, das über ein jeweiliges Ereignis der gewünschten Leuchten getriggert wird und die „Sammelvariable“ (29692) setzt.

<?

$debug = false;
$Events = IPS_GetScriptEventList($_IPS['SELF']);
if ($debug)
  print_r($Events);

for ($number= 0;$number < count($Events);$number++) {
  foreach(IPS_GetEvent($Events[$number]) as $key => $element) {
    if ($key == 'TriggerVariableID') {
      $type = IPS_GetVariable($element)['VariableType'];
      switch ($type) {
        case "0": $result = GetValueBoolean($element);        break; // Boolean
        case "1": $result = GetValueInteger($element);        break; // Integer
      }
      if ($debug)
		  echo "Event: ".$key." -> ".$element ." : " . $result . "
";
      if ($result) {
        SetValueBoolean(29692 , True);
        return;
      }
    }
  }
}
SetValueBoolean(29692 , False);

Und hier fast plug’n’play. Und kann sogar global ausschalten :slight_smile:
Etagenlicht
Michael

Die beiden Beispiele waren genau was ich gesucht habe.
Ein großes Dankeschön an beide Helferlein. Was wäre die Welt nur ohne euch :slight_smile:
Ohne besondere Hintergedanken habe ich mich dann doch für die „Etagenlicht“ Lösung entschieden.
Es funktioniert einwandfrei.

Auch wenn Du schon eine Lösung hast, hier noch eine weitere Möglichkeit:

Ich suche mit IPS_GetInstanceListByModuleID("{F3058AB2-AFDC-4479-A053-5F4599DF6F5B}") alle entsprechenden Instanzen und werte entsprechend aus.