Störungen visualisieren

Wie visualisiert ihr eigentlich Störungen? Im Forum habe ich hierzu nichts gefunden.

Ich habe eine Menge (KNX) Aktoren, die Störmeldungen (meist 1 Bit oder Text, manchmal auch Int) liefern.

Jetzt kann ich in der Visualisierung die Störungen hierarchisch strukturieren, möchte aber natürlich auch auf der jeder (Kategorie?) Ebene sehen, ob min. eine Störungen drunter ist. Eine Kategorie kann aber m.W. keine Farbe haben, oder?

Unschön finde ich zudem, dass ich nicht meine Kategorie „Störungen“ direkt auf das Webfront verlinken kann, denn dann wird immer die DPT Instanz und als Child der Wert angezeigt. Kann man nicht die Visualisierung automatisch reduzieren, wenn es nur ein einziges „Value“ Child gibt?

Aufgefallen ist mir auch noch, dass das Variablenprofil einer Störung zwar im Webfront greift (Alarm = true = rot), in der Konsole ist true aber immer grün. Das aber nur am Rande.

Grüße
Bernd

1 „Gefällt mir“

Ich hab mir da ein eigenes Skript gemacht, dass die allerwichtigsten Werte prüft. Das Skript läuft jede Minute und so bekomme ich ECHTE Systemstörungen durch die Pushmeldung relativ schnell mit. Ausgabe erfolgt in einer HTML Variable. Ist alles Grün, passt alles.


Gleichzeitig hab ich mir noch selber ein Logging gebaut welches diverse Meldungen auf einem MySQL Server speichert.
Ebenso bekomme ich Nachrichten bei Fehlern im Netzwerk. Wenn also z.b. ein Systemwichtiges Gertät nicht mehr antwortet.
Ist aber auch selber gemacht.

An HTML hatte ich noch gar nicht gedacht, ist eine interessante Möglichkeit, wenn es mit Bordmitteln nicht geht. Da muss ich mal über ein Modul nachdenken, das vielleicht automatisch aus dem Baum eine Ansicht generiert…

Logging von Werten aus dem KNX System mache ich über einen Timberwolf Server, der hat eine InfluxDB dafür. DAs kann ich dann alles mit Grafana auswerten.

Mir ging es eignetlich um den Variablenverbrauch. Bei HTML hab ich nur eine und Ändern muss ich ja nichts. Du könntest das natürich auch komplett mit Boardmitteln machen. Profile anlegen, ist sicher auch nett. Verbraucht halt Variablen. Außerdem kannst mit der Visualisierung eher schwer mehrspaltige Listen erzeugen.
Mit der HTML Tabelle ist das extrem einfach und schaut ok aus.

Hast du dir die Grundlagen zur Visualisierung angesehen? Es empfiehlt sich die Struktur der Visualisierung per Links umzusetzen.
Dann kannst du auch eine Kategorie nur mit Links zu den ganzen Variablen anzeigen und es wird keine Instanz dazu angezeigt.
Heute kommt auch ein Webinar auf YT vom Symcon zur Visualisierung, eventuell wäre das etwas für dich.
Michael

Das habe ich schon gemacht, dann habe ich aber - zumindest bei den DPT Instanzen - immer eine Zeile mit dem Instanznamen und darunter die Variable. Schön wäre, wenn das zusammengefasst wäre.

Du kannst dir für die Visualisierung eine sog. Dummy Instanz anlegen und unter diese frei definierbare (Name, Icon) Instanz die Links zu den Variablen anlegen.
image
Ich hab eine eigene Kategorie fürs Webfront (WebFront). Darunter wieder Kategorien und auch Dummy Intanzen (z.b. Internet Speedtest und Durchschnittswerte. Unter diesen Instanzen hab ich Links zu den betreffenden Variablen.
Schaut dann so aus

Du hast den Link auf die Instanz gelegt und nicht auf die Variable.
Michael

Hallo Helmut,

so mache ich es auch. Für die einfache Variante, wo ich nur viele gleichartige DPT 1.00x Boolean Instanzen habe will ich aber lieber nur die Kategorie verlinken und nicht jeden Wert einzeln.

Bernd

Ist schon klar, aber dann muss ich ja wieder jede (!) Variable verlinken. Ich wollte ja einen Link auf die Kategorie machen und dann nur die Werte der untergeordneten DPT 1.00x Instanzen sehen…

Bernd

Da bist du einen Tag zu früh dran oder andere Zeitzone? :wink:

Mittwoch, den 17.02.21 18:00

Uli

Morgen passt meine Antwort aber :sweat_smile:

Korrekt

Du musst es schon so machen, wie man es Dir empfiehlt, wenn es so aussehen soll, wie Du es haben möchtest.

Viele Links lassen sich notfalls auch mit einem Skript schnell erstellen.

Oder mit STRG+Klick Variablen markieren und dann verlinken. Das geht auch.

1 „Gefällt mir“

Schon klar. Aber es wäre halt schön, wenn es ohne Skript oder Multiselect möglich wäre…:grin:

Vielleicht probiere ich das mal aus. Dann kann ich auch selbst durch de Children iterieren und immer die Value Variable verlinken.

Falls Du eine Visualisierung findest, bei der das geht, sag Bescheid.

Kann ich nur empfehlen.

Diese Flexibilität ist eine der ganz großen Stärken von IP-Symcon. Es gibt nicht den einen Weg, um ans Ziel zu kommen, sondern viele verschiedene. Der User, der sich einmal eine Visualisierung baut, wird wohl die Lösung nutzen, alles per Hand anzulegen. Ich als Integrator baue durchaus mal mehr als eine Visu im Jahr :wink: und dann ist eine der großen Stärken von IP-Symcon, dass ich viele Dinge einfach per Skript automatisieren kann. Versuch das mal bei einem anderen Produkt. Ich hatte letztens die Gelegenheit, mal die Visualisierung / den „Server“ meines Lieblingsherstellers testen zu dürfen. :face_vomiting: Da bist Du gezwungen, Dich strikt ans vom Hersteller vorgegebene Vorgehen zu halten. Ob Du willst, oder nicht. Für mich persönlich war es jedenfalls schön, mal zu sehen, dass IP-Symcon auch im Jahr 2021 immer noch für mich und meine Kunden die beste Wahl ist, anstatt der überteuerte Schrott aus … ähm … ich muss weg.

Ich bin kein SI, der mehrere Visus im Jahr baut, aber bringe als Softwareentwickler mal die grundlegenden Voraussetzungen mit, mir da selber zu helfen. Nun schlagen in meiner Brust zwei Herzen: Das eine findet die Flexibilität von IP-Symcon toll (war ja auch ein Kaufkriterium) das andere will nur, dass es „einfach nur funktioniert“.
Beides zusammen geht halt nicht. :pleading_face: Flexibilität ist i.d.R. immer mit Komplexität verbunden und wie handelbar man die Komplexität macht, ist von Hersteller zu Hersteller unterschiedlich.

Aber genug der Grundsatzdiskussion. :slight_smile:

Für alle, die es interessiert: Hier ein Skript, mit der ich für alle Value Variablen einer Quell-Kategorie Links in einer Zielkategorie erstelle. Die Kategoriestruktur wird dabei auch kopiert.

ACHTUNG: In der Zielstruktur werden alle Kategorieren und Links entfernt!

Einen Weg für eine Sicherheitsabfrage im Skript habe ich nicht gefunden, gibt es da was?

<?php

$alarmCategorySource = 12345; // Bitte anpassen auf die Quelle
$alarmCategoryVisu = 12345; // Bitte anpassen aufs Ziel

DeleteCategoriesAndLinks($alarmCategoryVisu);
CreateLinks($alarmCategorySource, $alarmCategoryVisu);

function DeleteCategoriesAndLinks(int $objectId, string $path = "")
{
    $childrenIds = IPS_GetChildrenIDs($objectId);

    foreach ($childrenIds as $key => $childId)
    {
        $child = IPS_GetObject($childId);

        $objectType = $child['ObjectType'];

        if ($objectType == 0) // Category
        {
            // Delete children
            DeleteCategoriesAndLinks($child['ObjectID'], $path . $child['ObjectName'] . "/");

            echo "Lösche Kategorie " . $path . $child['ObjectName'] . "\n";
            IPS_DeleteCategory($childId);
        }
        else if ($objectType == 6) // Link
        {
            echo "Lösche Link " . $path . $child['ObjectName'] . "\n";

            IPS_DeleteLink($childId);
        }
    }
}

function CreateLinks(int $sourceCategory, int $targetCategory, string $path = "")
{
    $childrenIds = IPS_GetChildrenIDs($sourceCategory);

    foreach ($childrenIds as $key => $childId)
    {
        $child = IPS_GetObject($childId);

        // print_r($child);

        $objectType = $child['ObjectType'];

        if ($objectType == 0) // Category
        {
            echo "Erstelle Kategorie " . $path . $child['ObjectName'] . "\n";

            $newCategoryId = IPS_CreateCategory();

            IPS_SetParent($newCategoryId, $targetCategory);
            IPS_SetName($newCategoryId, $child['ObjectName']);

            // Copy sub category
            CreateLinks($child['ObjectID'], $newCategoryId, $path . $child['ObjectName'] . "/");
        }
        else if ($objectType == 1) // Instance
        {
            foreach ($child['ChildrenIDs'] as $key => $instanceChildId)
            {
                $instanceChild = IPS_GetObject($instanceChildId);

                if ($instanceChild['ObjectType'] == 2 /* Variable */ && $instanceChild['ObjectIdent'] == "Value")
                {
                    echo "Erstelle Link " . $path . $child['ObjectName'] . "\n";

                    $linkId = IPS_CreateLink();

                    IPS_SetParent($linkId, $targetCategory);
                    IPS_SetName($linkId, $child['ObjectName']);
                    IPS_SetLinkTargetID($linkId, $instanceChildId);
                }
            }
        }
    }
}

Feedback ausdrücklich erwünscht.

Skript liegt übrigens auch auf GitHub

Ich nutze Dafür gerne die Aktivliste (Im Module Store zu finden). Diese zeigt ja nur die „problematischen“ Variablen an. Wenn also ein Störungsbit auf „True“ geht, wird es in der Liste aktiv und ist kann es sofort sehen.

paresy

Kannte ich noch gar nicht. Ist interessant, passt aber nicht ganz auf meinen Anwendungsfall.

Die KNX Aktoren liefern mir Dutzende mögliche Alarmzustände (z.B. habe ich drei DALI Gateways die alle Fehler für bis zu 64 EVGs melden können). Da brauche ich dann eine hierarchische Struktur, sonst ist das zu unübersichtlich.

Zudem macht es in meinem Fall keinen Sinn, den Fehler in der UI zurückzusetzen.

Hallo @Carpi,

ich verwende ein - auf meine Bedürfnisse angepasstes - Meldungsskript von Pitti.

Aufgaben:
Meldungen verschiedener Sicherheitsstufen (Info, Warnung, Alarm) in einer HTML-Box anzeigen.

Ich kann die Punkte der Sicherheitsstufen in unterschiedlichen Farben und mit passenden Symbolen darstellen.

Das Rücksetzen der Meldung ist auf mehreren Wegen möglich:

  • Automatisches löschen nach x-Sekunden
  • Löschen durch drücken auf die Meldung (Farbpunkt)
  • Vollautomatisches löschen durch das Skript, wenn der Fehler oder der Zustand behoben ist

Ich bin extrem zufrieden und die Meldungsübersicht ist eines der meistgenutzten Dienste meiner Visualisierung.

Einziger Nachteil ist, dass du für jede „Störmeldung“ eine Meldungsnummer brauchst und somit pro „Störvariable“, eine zusätzliche „Meldungsvariable“ anlegen musst.
Da ich aber sowieso eine Unlimited-Version nutze, ist das ganze lediglich ein Aufwand, mehr aber nicht.

Ist das sowas, was du suchst?

LG Peter