Listen mit Variablen in IPS-View einbinden

Moin,

kann man eigentlich Kategorien als Variabele Listen in eine View einbauen?
Ich habe anz viele Kategorien wo diverse Daten drin sind. Batterie, Temperatur, Stromverbrauch, etc.

In der Symcon App schmeise ich die Variable einfach als Verknüpfung in eine Kategorie.
Diese Kategorie würde ich gerne in IPS-View mit einblenden ohne das ich jedes mal endlos lange Listen mit Daten hin und her schieben muss.

Gibt es da einen „Trick“ :slight_smile:

danke.


g

Aktuell leider nicht.

Hab über das Thema zwar schon das eine oder andere mal nachgedacht, eine wirklich gute Lösung ist mir aber bis jetzt noch nicht eingefallen.
Problem ist da die Zuordnung von einem IP-Symcon Objekt zu einem Steuerelement in IPSView :thinking:

Bin aber für Vorschläge durchaus offen :wink:

1 „Gefällt mir“

Ich könnte das gerne mal versuchen zu erklären wie ich es mega gut finden würde.

Eine Kategorie wird als Box, Viereck wie ein HTML View dargestellt.

Links Zentriert ist der Name der Verknüpfung unter der Kategorie,
Rechtszentriert die Werte.
Alle Wete sind ein Gruppenelement. d.h. eine Einstellung gilt für alles.

Für die Verknüfungen, bzw die Box, gibt es die normale Auswahl im Eigentschafts-Editor.
Schrift, Farbe, etc.
Nur der Unterschied ist, das alle Einstellungen für die gesamte Box gilt. Ändere ich Farbe und oder Typ Anzeige greift es für alle.

Sobald man eine neue Verknüpfung in IPS in die Kategorie wirft erweitert sich die Box Automatisch nach der Sortierung in der Kategorie.

Danach sieht es so aus, nur nicht so krum und schief :stuck_out_tongue:
grafik

Du könntest über ein Script zyklisch eine Variable mit HTML Inhalt beschreiben, dann hast du alle Möglichkeiten in der Hand und zeigst die Variable in einer HTML Box an.

Mit Werten ist das einfach, falls du schalten möchtest, ist Fleißarbeit sinnvoller ;-).

Moin,
stimmt, sowas könnte man machen. Aber leider kann ich mal überhaupt nicht programmieren und gehöre zu den Power Usern der „nicht Programmierer“.

Ich hoffe ich das Symcon trotzdem noch Benutzen :slight_smile:

Ich wollte mein mein Ergebnis hier verewiegen.

Skirpt Suche nach Schlagwörter und Filtert dann wieder.

<?php

// Konfigurationsbereich
$debug = 1; // Debug-Modus: 1 für ein, 0 für aus
$categoryId = 39953; // Die ID der Kategorie, unter der die Variablen gesucht werden
$htmlBoxId = 35897; // Die ID der HTML-Box, in die die Tabelle eingefügt wird
$includeNamesVariableId = 47825; // Die ID der Variable, die die kommagetrennten Namen enthält, die angezeigt werden sollen
$excludeCriteriaVariableId = 22249; // Die ID der Variable mit Kriterien für den Ausschluss (Namen, IDs)

// Namen der einzubeziehenden und auszuschließenden Variablen holen
$includeNamesString = GetValue($includeNamesVariableId);
$includeNames = explode(',', $includeNamesString);
$excludeCriteriaString = GetValue($excludeCriteriaVariableId);
$excludeCriteria = explode(',', $excludeCriteriaString);

// Rekursive Funktion, um alle Variablen-IDs unter einer Kategorie (inklusive Unterobjekte) zu sammeln
function getAllVariableIds($objectId, $includeNames, $excludeCriteria, &$variableDetails = []) {
    $children = IPS_GetChildrenIDs($objectId);
    foreach ($children as $childId) {
        $parentName = IPS_GetName(IPS_GetParent($childId));
        $childName = IPS_GetName($childId);
        $parentId = IPS_GetParent($childId); // Korrekte Definition der Parent ID
        $shouldExclude = false;

        // Prüfe, ob der Child-Name, Parent-Name oder die Objekt-ID ausgeschlossen werden soll
        foreach ($excludeCriteria as $criteria) {
            if (strpos($parentName, $criteria) !== false || strpos($childName, $criteria) !== false || strpos((string)$childId, $criteria) !== false) {
                $shouldExclude = true;
                break;
            }
        }

        if (!$shouldExclude && IPS_VariableExists($childId) && in_array($childName, $includeNames)) {
            $variableInfo = IPS_GetVariable($childId);
            $lastChange = date("d.m.Y H:i:s", $variableInfo['VariableChanged']); // Verwende VariableChanged

            $variableDetails[] = [
                'ParentID' => $parentId,
                'ParentName' => $parentName,
                'ChildID' => $childId,
                'ChildName' => $childName,
                'Value' => GetValue($childId),
                'LastChange' => $lastChange // Änderung zu LastChange
            ];
        } else {
            // Durchsuche Unterobjekte rekursiv, falls kein Match
            getAllVariableIds($childId, $includeNames, $excludeCriteria, $variableDetails);
        }
    }
    return $variableDetails;
}

function generateHTMLTable($variableDetails) {
    $html = '<table border="1"><tr style="background-color: green;"><th>Parent ID</th><th>Parent Name</th><th>Child ID</th><th>Child Name</th><th>Status</th><th>Letzte Änderung</th></tr>';
    foreach ($variableDetails as $detail) {
        $html .= "<tr><td>{$detail['ParentID']}</td><td>{$detail['ParentName']}</td><td>{$detail['ChildID']}</td><td>{$detail['ChildName']}</td><td>{$detail['Value']}</td><td>{$detail['LastChange']}</td></tr>";
    }
    $html .= '</table>';
    return $html;
}

// Hauptskript
$variableDetails = getAllVariableIds($categoryId, $includeNames, $excludeCriteria);
$htmlTable = generateHTMLTable($variableDetails);

// HTML-Tabelle in die HTML-Box setzen
SetValue($htmlBoxId, $htmlTable);

// Debug-Ausgabe, falls aktiviert
if ($debug) {
    foreach ($variableDetails as $detail) {
        echo "Parent ID: {$detail['ParentID']}, Parent Name: {$detail['ParentName']}, Child ID: {$detail['ChildID']}, Child Name: {$detail['ChildName']}, Status: {$detail['Value']}, Letzte Änderung: {$detail['LastChange']}\n";
    }
}
?>


Hallo,

ich wollte an dieser Stelle nochmal nachfragen wo da was absehbar möglich ist oder ob noch jemand eine Idee hat:
Ich möchte auch eine „sich dynamisch ändernde“ Liste von Variablen einer IPS-"Kategorie als Liste im View anzeigen. Klar kann ich das passiv in einer HTML-Box machen, aber ich möchte die Variablen (via Profil/Assoziationen) im View schaltbar machen (ich arbeite an einem Wartungskalender via iCla, im WF geht es bereits). Und in IPSview kann ich ja bislang in HMTL Boxen OnClick-Ereinisse nicht nutzen…