Anzeigen / Verstecken von Objekten anhand des Triggerobjekt Wertes

Hallo zusammen,

eventuell hat ja jemand die gleiche Anforderung wie ich und kann das kleine Snippet brauchen.

Ziel:
Ein Zielobjekt anhand einesTriggerobjektes dynamisch ein/ausblenden.
Es macht meiner Meinung nach nur für String und Boolean Variablentypen Sinn, deshalb sind nur diese Varianten implementiert. Kann aber einfach erweitert werden, je nach Anforderung.

Vorgehen:
Man erstellt ein Ereignis unter dem Objekt welches man gerne ein/ausblenden möchte, und wählt ein Triggerobjekt aus (das Objekt auf dessen Wertänderung man gerne reagieren möchte). Wählt als Triggerzeitpunkt „Bei Variablenänderung“ aus und hinterlegt im Code Bereich das folgende Skript:


 // Trigger ist eine Variable
    if(IPS_GetObject($_IPS['VARIABLE'])['ObjectType'] == 2) {
        $variable = IPS_GetVariable($_IPS['VARIABLE']);
        $inverse = false;

      if($variable['VariableValue']['ValueType'] == 3) { // Trigger ist vom Typ string
            if(strlen(GetValue($_IPS['VARIABLE'])) > 0)
                $state = FALSE;
            else
                $state = TRUE;
        } else if($variable['VariableValue']['ValueType'] == 0) { // Trigger ist vom Typ boolean
            if (GetValueBoolean($_IPS['VARIABLE']))
                $state = FALSE;
            else
                $state = TRUE;
        }

        if($inverse)
            $state = !$state;

        IPS_SetHidden($_IPS['TARGET'], $state);
    }

Tip:
Man kann das ganze auch in eine Funktion schachteln, $inverse = false fix als Parameter vorgeben ($inverse deklaration löschen nicht vergessen) und es dann global durch das autoinclude in jedem Skript bereitstellen. So habe ich es, neben einer Menge anderer Hilfsfunktionen, auch gemacht.

Gruß
Daniel

Edit:
Habe es noch etwas einfacher gemacht und eleganter umformuliert.