Bin mittlerweile ganz schön weiter gekommen. Es funktioniert jetzt nach unten und nach oben.
ACHTUNG: Im Script muss aktuell noch die obere ID der Baumstruktur bei den Funktionen eingetragen werden!!!
Was jetzt noch fehlt sind die einzelnen Geräte einzubinden.
Für jeden Bool Schalter muss das Skript verknüpft werden.
Der Code für die Funktionen
<?
// -----------------------------------------------------------------------------
// Die Hauptfunktion, die die unteren Funktionen aufruft
// -----------------------------------------------------------------------------
function Schalten ($StartID, $ValueNew){
$ObereID = 16107 /[AAA TEst Library\Gruppenschaltung\Alle]/;
NachUntenAktualisieren ($StartID, $ValueNew);
NachObenAktualisieren ($StartID, $ObereID);
}
// Aktualisiert die Werte in der Baumstruktur nach unten
// -----------------------------------------------------------------------------
function NachUntenAktualisieren ($IDStart, $ValueNew){
// Schaltet alle nach Unten
foreach (IPS_GetChildrenIDs($IDStart) as &$Unterobjekte) {
// Setzt den neuen Wert an alle unterlegenen Values
setvalue ( $Unterobjekte, $ValueNew);
// Ruft die Funktion in sich wieder auf bis es nichts mehr gibt
NachUntenAktualisieren ($Unterobjekte, $ValueNew);
}
}
// Aktualisiert die Werte in der Baumstruktur nach oben
// -----------------------------------------------------------------------------
function NachObenAktualisieren ($StartID, $ObereID){
// Eltern IDs abfragen
$Eltern = IPS_GetParent ($StartID);
$Nachbarn = IPS_GetChildrenIDs ($Eltern);
$AnzahlAn = 0;
// Wenn der Oberste Ebene geschalten wird, dann sofort beenden
if ($StartID == $ObereID){goto EndeFunktion;}else{}
// Für jede Nachbar Variable abfragen ob diese true ist
foreach ($Nachbarn as &$value) {
if (getvalue ($value) == true){$AnzahlAn ++;}else{}
}
// Wenn Anzahl >0 ist dann die Übergeordnete Variable einschalten
setvalue ($Eltern, $AnzahlAn);
// Funktion wieder erneut aufrufen
NachObenAktualisieren ($Eltern, $ObereID);
EndeFunktion:
}
?>
Der Code für die Bool (SetValue)
<?
// Funktionen für Gruppenschaltung einbinden
include ‚32293.ips.php‘; // Funktionen
// Welche Gruppe geschalten werden soll
$ID = $_IPS[‚VARIABLE‘];
$Schaltwert = $_IPS[‚VALUE‘];
// Webfront aktualisieren
setvalue($ID, $Schaltwert);
// Schaltvorgang ausführen
Schalten ($ID, $Schaltwert);