Dashboard

Das System.Dashboard.ips.php-Skript ist eine zentrale Meldungsanzeige für die TileVisu. Jedes andere Skript kann mit einer einzigen Zeile eine Meldung hinzufügen – zum Beispiel „Batteriestatus überprüfen!“ oder „1 Blitzer gemeldet!“. Die Meldungen erscheinen gesammelt in einer Kachel, lassen sich per Klick bestätigen, verschwinden auf Wunsch zu einem festen Zeitpunkt von selbst und können sogar direkt zu einer passenden Seite der Visualisierung springen.

Kachel Meldungen in der TileVisu mit mehreren Meldungen und OK-Schaltflächen
Meldungskachel in der TileVisu

Wie alles begann

Die Idee stammt aus dem Jahr 2010: Damals hat Horst im Forum seine Meldungsanzeige im WebFront vorgestellt, die später von lueralba für den Raspberry Pi angepasst wurde. Ich habe das Skript ab 2017 für mich weiterentwickelt und um vieles ergänzt: Meldungstypen mit eigenen Farben, ein Meldungstyp zum Seitenwechsel, die Auswahl der Reihenfolge, Zeitstempel und das Bestätigen per WebHook.

Mit der neuen TileVisu kam 2023 eine eigene Kachel-Variante dazu, und mit der Version 7.0 habe ich das Skript komplett auf die TileVisu umgestellt und dabei kräftig entschlackt. Wer die bisherige Version kennt, findet sich schnell zurecht – auf das klassische WebFront wird aber keine Rücksicht mehr genommen.

Hinweis: Ab Version 7.0 unterstützt das Skript nur noch die TileVisu, nicht mehr das WebFront.

Meldungstypen

Jede Meldung hat einen Typ, der ihre Farbe bestimmt:

TypBedeutungFarbe
0Infogrün
1Fehlerrot
2Warnunggelb
3Todoblau
4Goto – Klick auf den Text springt zu einem Objekt der TileVisuorange

Zu jeder Meldung lässt sich außerdem ein Icon aus den Assets der TileVisu angeben, zum Beispiel phone. Ohne Angabe wird message verwendet.

Voraussetzungen

  • Symcon ab Version 7 mit TileVisu
  • Meine Symcon Skript-Bibliothek (__autoload.php, System.Functions.ips.php, System.Locals.ips.php)
  • Ein WebHook für die OK-Schaltflächen und für Meldungen mit Verlinkung (siehe Installation)

Installation

  1. Skript anlegen: In Symcon ein neues Skript erstellen und den Inhalt von System.Dashboard.ips.php hineinkopieren.
  2. TileVisu eintragen: In der System.Locals.ips.php unter __WWX['VID_TV'] die ID der eigenen TileVisu hinterlegen, sie wird für das Springen zu Objekten benötigt.
  3. Skript ausführen: Einmal in der Konsole ausführen. Dabei entstehen die Variablen Meldungen (die Kachel), Meldungstyp (zum Löschen aller Meldungen eines Typs), Meldungsnummer und die versteckte Variable Daten.
  4. WebHook einrichten: Im WebHook Control einen Hook /hook/msg anlegen, der auf das Skript zeigt. Darüber laufen das Bestätigen per OK und das Springen zu einem Objekt.
  5. Kachel platzieren: Die Variable Meldungen in der TileVisu anzeigen.

Ein erneutes manuelles Ausführen setzt alle Objekte wieder auf den Ausgangszustand und löscht dabei alle Meldungen.

Meldungen aus eigenen Skripten

Alle Aktionen laufen über IPS_RunScriptWaitEx mit der ID des Dashboard-Skripts, hier als 12345 angenommen.

Meldung hinzufügen

$number = IPS_RunScriptWaitEx(12345, [
    'action'    => 'add',
    'text'      => 'Batteriestatus überprüfen!',
    'type'      => 2,
    'removable' => true,
    'expires'   => time() + 3600,
]);

Zurückgegeben wird die Nummer der neuen Meldung, bei einem Fehler 0. Bis auf text sind alle Parameter optional:

ParameterBedeutung
textMeldungstext
typeMeldungstyp 0–4 (siehe oben), Standard ist 0
imageName des Icons aus den Assets der TileVisu, Standard ist message
removabletrue, wenn die Meldung per Klick auf OK gelöscht werden darf
expiresZeitpunkt als Unix-Timestamp, zu dem die Meldung automatisch gelöscht wird
openID eines Objekts der TileVisu, zu dem ein Klick auf den Meldungstext springt

Meldung mit Sprung in die Visualisierung

$number = IPS_RunScriptWaitEx(12345, [
    'action' => 'add',
    'text'   => 'Anruf in Abwesenheit',
    'type'   => 4,
    'image'  => 'phone',
    'open'   => 23456,
]);

Die ID bei open muss zu einem Objekt (Kategorie, Link usw.) gehören, das in der konfigurierten TileVisu vorhanden ist.

Meldungen löschen

// Eine bestimmte Meldung über ihre Nummer
$success = IPS_RunScriptWaitEx(12345, ['action' => 'remove', 'number' => $number]);

// Alle Meldungen eines Typs, z. B. alle Warnungen
$success = IPS_RunScriptWaitEx(12345, ['action' => 'removeType', 'type' => 2]);

// Alle Meldungen
$success = IPS_RunScriptWaitEx(12345, ['action' => 'removeAll']);

Bei Erfolg wird 1 zurückgegeben, sonst 0.

Konfiguration

Im Abschnitt „Konfiguration“ lässt sich die Darstellung anpassen:

EinstellungBedeutung
$tvidID der TileVisu, standardmäßig aus __WWX['VID_TV']
$fifotrue: älteste Meldung zuerst, false: neueste Meldung zuerst
$nomsgHinweis anzeigen, wenn keine Meldung vorhanden ist
$noicoIcons ausblenden
$bfortOK-Schaltfläche vor dem Text anzeigen (nur zusammen mit $noico)
$typesNamen und Farben der Meldungstypen

Fragen und Anregungen gerne in meinem Forum-Thread zur Skript-Bibliothek .