Raumdisplay (Room Display)

Version Product Version License Actions

Das Modul verbindet ein openHASP-Display über MQTT mit dem IPS-System. Die für das Display gestalteten Seiten und ihren Objekten können mit Variablen oder Skripten von IPS synchronisiert werden.

Inhaltverzeichnis

  1. Funktionsumfang
  2. Voraussetzungen
  3. Installation
  4. Einrichten der Instanzen in IP-Symcon
  5. Statusvariablen und Profile
  6. Visualisierung
  7. PHP-Befehlsreferenz
  8. Versionshistorie

1. Funktionsumfang

Das Modul übersetzt Aktionen und Ereignisse in IP-Symcon und aktualisiert umgekehrt die Variablen in IP-Symcon zur Darstellung auf dem Display.

Derzeit werden folgende UI-Objekte unterstützt:
  • Arc
  • Bar
  • Button
  • Checkbox
  • Dropdown
  • Gauge
  • Image
  • Label
  • LED Inicator
  • Line Meter
  • MessageBox
  • Object
  • Roller
  • Slider
  • Spinner
  • Switch
  • Toggle Button

Was macht bzw. was kann das Modul?

  • Mapping von IPS-Werten auf UI-Objekte im Mini-Display
  • Aktionen auf dem Display werden nach IPS gesendet
  • Verschiedenste Konfigurationsmöglichkeiten zur visuellen Darstellung der Werte
  • Unterstützt verschiedene Displayformate und Layouts.
  • Übergabe der Aktion und Ausführung via Script
  • Abfrage von (Status-)Informationen
  • Ausführung von OpenHASP System- bzw. Globalen Kommandos
  • Automatische Schaltung für Helligkeit und Einbrennschutz
  • Verwaltung, Prüfung und Sicherung des Seitenlayouts
  • Automatische Umwandlung von Seitenlayout in Objektliste
  • Import und Export von Objektkonfigurationen
  • Unterstützung der TileVisu via HTML-SDK

2. Voraussetzungen

  • IP-Symcon ab Version 7.0

3. Installation

  • Über den Modul Store das Modul Raumdisplay installieren.
  • Alternativ Über das Modul-Control folgende URL hinzufügen.
    https://github.com/Wilkware/RoomDisplay oder git://github.com/Wilkware/RoomDisplay.git

4. Einrichten der Instanzen in IP-Symcon

  • Unter "Instanz hinzufügen" ist das 'Room Display'-Modul (Alias: 'Raumdisplay') unter dem Hersteller '(Geräte)' aufgeführt.

Konfigurationsseite:

Einstellungsbereich:

Anzeigegerät …

Name Beschreibung
Gerätenamen Name des Gerätes (= Hostname)
Geräteadresse IP ist optional , aber ohne gehen Downloads von Screenshots und der Designdatei (pages.jsonl) nicht.

Seitenaufbau …

Name Beschreibung
Datei (pages.jsonl) JSONL formatierter Inhalt zur Syncronisierung des Seitenaufbaus
HERUNTERLADEN¹ Schalter um den Seitenaufbau vom Gerät herunterzuladen
HOCHRLADEN² Schalter um den Seitenaufbau zum Gerät senden.
SICHERN¹ Schalter um den Seitenaufbau vom Gerät herunterzuladen und in eine Datei zu schreiben.
PRÜFEN² Schalter um den Inhalt des Seitenaufbaus auf JSONL Konformität zu prüfen.
EINLESEN³ Startet den Prozess zum Einlesen und Umwandeln des Seitenaufbaus in eine Objektzuordnung.

¹) Bei dieser Aktion werden die Daten direkt vom Gerät (Display) heruntergeladen und weiterverarbeitet.
²) Bei dieser Aktion werden die aktuell im Konfigurationsformular angezeigten Daten verwendet, ungeachtet ihres Speicherstatus.
³) Bei dieser Aktion werden die aktuell gespeicherten Daten der Instanz verwendet (müssen nicht mit den aktuell angezeigten Daten übereinstimmen).

Objektzuordnung …

Name Beschreibung
Objekte Table zur Zuordnung zwischen UI- und IPS-Objekt
AUSWAHL¹ Schalter um den Zustand der Auswahlboxen umzukehren, Basis ist die Checkbox des ersten Elementes
LÖSCHEN¹ Schalter um selektierte Zeile zu löschen
DUPLIZIEREN¹ Schalter um selektierte Zeile zu duplizieren (und gleich einzusortieren)
PRÜFEN¹ Schalter um die hinterlegten Eingaben (Berechnungen) eines ausgewählten Eintrag zu prüfen.
ÜBERTRAGEN¹ Öffnet ein Dialog um die zuvor selektierten Zeilen in eine Datei zu exportieren, oder eine abgespeicherte Konfiguration aus einer Datei zu importieren.
NEUSORTIEREN² Schalter um die Liste endsprechend Seite und ID zu sortieren
ABGLEICHEN² Schalter um die hinterlegten Objekte mit dem Inhalt des Seitenaufbaus gegen zu prüfen. den (Umkehr-)Folgezustand.

¹) Diese Aktionen verwenden die aktuell ausgewählten Daten aus der Objektliste.
²) Diese Aktionen verwenden alle Daten aus der Objektliste, unabhängig von ihrem Auswahlstatus.

Hier eine kurze Erklärung der Spalten:

  • Spalte mit Checkboxen für die Auswahl der Objekte für ein Export (Schalter: Übertragen)
  • Typ, Seite und ID - sollten selbsterklärend sein und identifizieren das UI-Object
  • Kommentar - auch klar, aber nicht ganz unwichtig um sich bei der Vielzahl von Mappings zurecht zu finden. Ich habe es extra eingeführt, weil ich zum Teil die Übersicht zu behalten. Empfind es es als sehr hilfreich.
  • Beschriftung - eigentlich alles was man bei der Visu an Text sieht. Also bei Buttons die Icons oder Titel, bei Labels die Beschriftung usw.
  • Wert - Zustände von Toggle Buttons, Sourcen von Images oder Hintergrundfarben von Objekten
  • Umrechnung - Transformationsweg von IPS zum DISPLAY, als Platzhalter kann {{val}} verwendet werden, was den Roh-Wert der Variablenänderung beinhaltet. Im Endeffekt ist das ein PHP eval() Ausdruck (ohne Klammern und Semikolon drum herum). Das Ergebnis davon wird dann bei Beschriftung oder/und Wert eingesetzt. Spezialwert -1 bedeutet keine weitere Auswertung vornehmen, also den Workflow stoppen.
  • _ Rückrechnung_ - Transformationsweg von DISPLAY zu IPS. Das Gleiche wie bei Umrechnung nur Umgekehrt, d.h. eine -1 bewirkt keine Weiterverarbeitung in IPS.
  • Verknüpfung - die Verknüpfung zwischen Design-Objekt und IPS-Variable.

Visualisierung …

Name Beschreibung
Kachelhintergrundfarbe (online) Farbauswahl für den Zustand 'ONLINE'
Kachelhintergrundfarbe (offline) Farbauswahl für den Zustand 'OFFLINE'
Navigationsleiste anzeigen (Vor, Zurück, Weiter)? Schaltet die Anzeige der Navigationsbuttons an bzw. aus
Aktionsleiste anzeigen (Seiten löschen, Seiten neu laden, Synchronisieren, Neustart) Schaltet die Anzeige der Aktionsbuttons an bzw. aus

Widgets …

Name Beschreibung
An / Aus (Analoguhr) Aktualisierung der Uhrzeit an bzw-ausschalten
Seite (Analoguhr) Seiten ID, auf welche sich die Uhr befindet
Stundenzeiger (Analoguhr) Gauge ID des Stundenzeigers
Minutenzeiger (Analoguhr) Gauge ID des Minutenzeigers
An / Aus (Qlocktwo Earth) Aktualisierung der Uhrzeit an bzw-ausschalten
Seite (Qlocktwo Earth) Seiten ID, auf welche sich die Uhr befindet
Startreihe (Qlocktwo Earth) Label ID der ersten durchnummerierten Textreihe
Hervorhebungsfarbe (Qlocktwo Earth) Farbe, welche zur hervorhebung der Uhrzeit genutzt werden soll
Präfix anzeigen (Qlocktwo Earth) Schalter, ob die Wörter "ES IST" immer hervorgehoben werden sollen
Suffix anzeigen (Qlocktwo Earth) Schalter, ob das Wort "UHR" immer hervorgehoben werden sollen (sonst nur wenn notwendig)
An / Aus (Fallblattuhr) Aktualisierung der Uhrzeit an bzw-ausschalten
Seite (Fallblattuhr) Seiten ID, auf welche sich die Uhr befindet
Stundenfallblatt (Fallblattuhr) Start ID des Labels, welches die Stunden darstellt
Minutenfallblatt (Fallblattuhr) Start ID des Labels, welches die Minuten darstellt
An / Aus (HASP-Uhr) Aktualisierung der Uhrzeit an bzw-ausschalten
Seite (HASP-Uhr) Seiten ID, auf welche sich die Uhr befindet
Minutenkreis (HASP-Uhr) Objekt ID des Kreises(Arc), welches die Minuten darstellt

Erweiterte Einstellungen …

Name Beschreibung
Hintergrundbeleuchtung automatisch schalten! Schaltet die Beleuchtung in Abhängigkeit der zeitlichen Nutzung
Normal (kein Leerlauf) Wert der Helligkeit bei normaler Nutzung des Displays
Kurzer Leerlauf Wert der Helligkeit nach kürzeren Nicht-Nutzung des Displays
Langer Leerlauf Wert der Helligkeit nach längerer Nicht-Nutzung des Displays
Einbrennschutz automatisch aktivieren! Schalter, ob der Einbrennschutz automatisch im definierten Zyklus gestartet werden soll!
Zyklus Zeitlicher Zyklus in Minuten in dem der Einbrennschutz für 30 Sekunden eingeschaltet wird.
Hintergrundbeleuchtung dimmen Schaltet die Beleuchtung während des Einbrennschutzes (30s) auf die eingestellte Beleuchtungsstärke, solange sie kleiner ist als der Wert für den langen Leerlauf und nicht Null ist!
Im Ruhezustand keine Syncronisierung! Schaltet die Synchrinistaion im Leerlauf ab (idle->long)
Im Ruhezustand auf eine bestimmte Seite wechseln! Schalter, ob im langen Leerlauf eine bestimmte Seite angezeigt werden soll!
Seite Seite auf welche gewechselt werden soll im langen Leerlauf-Modus
Im Ruhezustand durch die Seiten blättern! Schalter, ob im langem Leerlauf die Seiten durchgeblättert werden sollen!
Intervall Zeitspanne zwischen den einzelnen Seitenwechseln in Minuten (1-60)
Popup-Meldung schließen nach Standardwert in Sekunden nachdem eine MessageBox automatisch geschlossen wird.
Nachricht an Skript weiterleiten: Leitet die Aktion bzw. das Ereignis direkt weiter. Die Daten können im Script mit der Variable $_IPS['Data'] empfangen und ausgewertet werden.

Aktionsbereich:

Aktion ausführen …

  • Seiten neu laden - liest die pages.jsonl neu ein und rendert die Seiten neu
  • Seiten löschen - alle Seiten löschen
  • Synchronisieren - gerade in der Einstellung- bzw. Entwicklungsphase ein ganz wichtiger Button, er geht durch die Mappingliste und ruft für die verknüpften Variablen deren Werte ab und stellt sie dar. Diese Funktion wird auch immer aufgerufen wenn ein Gerät ONLINE geht! Gerade wenn man alles Seiten gelöscht hat und neu lädt ist der Button sehr hilfreich!
  • Neustart - Reboot des Gerätes

Steitennavigation ...

  • Vorher, Zurück, Weiter - eigentlich auch selbsterklärend, mit den Buttons kann man auf den Seiten navigieren

Abfrage von …

  • Stimmungslicht - Anzeige der aktuellen Moodlight-Einstellungen
  • Status - Anzeige der Status-Update-Infos
  • Bildschirmfoto - Erstellen und Speichern eines aktuellen Screenshots (aktuelle Seite), siehe auch imgs Ordner im Modul

5. Statusvariablen und Profile

Die Statusvariablen werden automatisch angelegt. Das Löschen einzelner kann zu Fehlfunktionen führen.

Name Typ Beschreibung
Status Boolean Verfügbarkeitsstaus (siehe WWXRD.Status)
Leerlauf Integer Zeigt den Leerlaufzustand an (siehe WWXRD.Status)
Hintergrundbeleuchtung Integer Wert der Hintergrundbeleuchtung (siehe WWXRD.Backlight)
Seite Integer Aktuell aufgezeigte Seite (siehe WWXRD.Page)

Folgendes Profil wird angelegt:

Name Typ Beschreibung
WWXRD.Status Boolean Online (true) bzw. Offline (false)
WWXRD.Idle Integer Aus, Kurz oder Lang (0, 1, 2)
WWXRD.Backlight Integer Helligkeitswert (1 .. 255)
WWXRD.Page Integer Seitennummer (1 .. 12)

6. Visualisierung

Man könnte die Statusvariablen direkt in die Visualisierung verlinken.

7. PHP-Befehlsreferenz

void WWXRD_DisableIdle(int $InstanzID, bool $disable);

Verhindert das automatische abschalten des Display (Hintergrundbeleuchtung).
Wird true übergeben geht das Display nicht mehr in den Leerlaufmodus; abschalten kann man es wieder mit false.
Die Funktion liefert keinerlei Rückgabewert.

Beispiel: WWXRD_DisableIdle(12345, true);

void WWXRD_SendCommand(int $InstanzID, string $command);

Sendet ein Kommando via MQTT an das Display.
Die Funktion liefert keinerlei Rückgabewert.

Beispiel: WWXRD_SendCommand(12345, '["p1b2.text=Hallo"]');

void WWXRD_SendJSONL(int $InstanzID, array $data);

Sendet JSON Lines (JSONL) via MQTT an das Display.
Die Funktion liefert keinerlei Rückgabewert.

Beispiel: WWXRD_SendJSONL(12345, ['page' => 1,'id' => 99),'obj' => 'msgbox','text' => 'A message box with two buttons','options' => ['Open','Close']]);

8. Versionshistorie

v3.7.20250318

  • NEU: Konfigurationsformular überarbeitet (Aktionshinweise, Anordnung uvm.)
  • NEU: Löschen von ausgewählten Objektmappings (Mehrfachauswahl)
  • NEU: Duplizierung von ausgewählten Objektmappings (Mehrfachauswahl)
  • NEU: Neue Prüfungsmethodik eingeführt (nur noch über Checkbox); Mehrfachauswahl listet fehlerbehaftete Mappings auf; Einfachauswahl zeigt einzelne Verarbeitungsergebnise an
  • NEU: Neues Uhren-Widgets HASP
  • NEU: Vorlagen für die Widgets können jetzt direkt angezeigt werden (Button) und dadurch einfaches Kopieren ermöglicht
  • FIX: Fehler in Prüfung korrigiert
  • FIX: Aufwachen beschleunigt (Hintergrundlicht vor Synchronisierung)
  • FIX: Einige Übersetzungsfehler korrigiert

v3.6.20250310

  • NEU: Unterstützung von Uhren-Widgets für Leerlaufzeiten
  • NEU: Vorlagen für die Widgets Analoguhr, Qlocktwo Earth und Fallblattuhr (docs Verzeichnis)
  • FIX: Status Profil - vertauschte Farben - korrigiert

v3.5.20250305

  • NEU: Neuer Platzhalter {{fmt}} für profilformatierte Werte wird jetzt auch bei Wert und Beschriftung unterstützt
  • NEU: Seiten(bereichs)angabe für automatisches Durchblättern der Seiten im Leerlauf
  • NEU: Freie Definition einer Seite, welche beim Seitenwechsel im Leerlauf dargestellt/geschaltet werden soll
  • FIX: Veraltete Konfigurationsangaben ersetzt

v3.4.20250303

  • NEU: Auswahl der zu aktivierenden Seite im Leerlauf
  • NEU: Automatisches durchblättern der Seiten im Leerlauf
  • FIX: Bei Aktivierung der Löschfunktion beim Einlesen des Seitenlayouts wurden alle Zurodnungen gelöscht

v3.3.20250220

  • NEU: Auswahl(umkehr) für Objektkonfiguration

v3.2.20250218

  • NEU: Import und Export von Objektkonfigurationen zum Austausch zwischen verschiedenen Instanzen.

v3.1.20250214

  • NEU: Definierte Objekte mit dem Inhalt des Seitenaufbaus abgleichen (Ausgabe: Liste der nicht definierten UI-Elemente).
  • NEU: Einlesen und Umwandeln des Seitenaufbaus in die Objektzuordnung (Neue anlegen, Fehlerhafte korrigieren und nicht vorhandene löschen).
  • NEU: Statusvariablen für Navigation und Aktionen (bessere Unterstützung von IPSView)
  • FIX: Variablenupdates werden jetzt nur verarbeitet wenn eine wirkliche Änderung vorliegt (neuer Wert).
  • FIX: Variablenupdates werden jetzt nur im Status Online verarbeitet.
  • FIX: Übersetzungen in TileVisu korrigiert.
  • FIX: Fehler in Debugausgabe korrigiert.

v3.0.20250205

  • NEU: Unterstützung für TileVisu (Status, Navigation, Actions)
  • NEU: Zeiteinstellung für automatisches Schliessen von Messageboxen
  • NEU: Beispielseiten und -bilder erweitert
  • FIX: Beim (manuellen) Syncronisationsdurchlauf werden Messageboxen unterdrückt.

v2.1.20250131

  • NEU: Unterstützung für MESSAGEBOX (über Beschriftung => Text, über Wert => Buttons, über Rückrechnung => ScriptID für senden der Event-Werte)
  • FIX: Objektzuordnungstabelle nutzt jetzt gesamte verfügbare Breite im Konfigurationsdialog

v2.0.20241129

  • NEU: Rudimentäres Prüfen der Umrechnungen pro Verlinkung
  • NEU: Verhalten von Spinner erweitert, Speed & Direction über (+/-) Wert und Beschriftung hinzugefügt
  • FIX: Interner Umbau der Wertübername für Dorpdown, Gauge und Switch (Vereinheitlichung)

v1.9.20241122

  • NEU: Unterstützung für SPINNER (über Beschriftung kann Drehrichtung, über Wert die Geschwindigkeit gesetzt werden)
  • NEU: Schaltung der Hintergrundbeleutung während des Einbrennschutzes
  • NEU: Prüfung der Objektverlinkung umgebaut bzw. eingeführt, Status bei Fehler wird auf 201 gesetzt
  • FIX: Synchronisatzionslauf testet auf Existieren des verlinkten Objekts
  • FIX: Synchronisatzionsfehler bei Skript-Verlinkungen behoben (kein -1 bei Umrechnung gesetzt)
  • FIX: Fehler beim Duplizieren behoben

v1.8.20241110

  • NEU: Neue Sektion zum verwalten des Seitenaufbaus (Layout)
  • FIX: Beispielbilder teilweise umbennant/korriegiert
  • FIX: Dokumentation vervollständigt

v1.7.20241106

  • NEU: Buttons für das Sortieren der Objekt-Einträge nach Seite und ID
  • NEU: Buttons für das Duplizieren eines Mapping-Eintages
  • NEU: Funktion DisableIdle hinzugefügt (Hilfreich bei Konfigurations-Sessions)
  • FIX: Automatisches Schalten auf Seite 1 erfolgt nun erst bei langem Leerlauf
  • FIX: Dokumentation/Markdown gefixt

v1.6.20241023

  • NEU: Syncronisation deaktivierbar im Leerlauf
  • NEU: Buttons im Aktionsbereich komplett neu organisiert
  • FIX: Aktionen benötigen keine 2 Buttons mehr
  • FIX: Namen und Übersetzungen überarbeitet

v1.5.20240906

  • NEU: Helligkeitssteuerung (Erweiterte Einstellungen) komplett überarbeitet
  • NEU: Automatische Abschaltung durch Intervallschaltung für Einbrennschutz ersetzt
  • FIX: Kommentare und Debug-Meldungen vereinheitlicht und optimiert
  • FIX: Dokumentation überarbeitet

v1.4.20240905

  • NEU: UI-Objekt Checkbox wird jetzt unterstützt
  • FIX: Textausgabe für Toogle Button korrigiert
  • FIX: Konfigurationsbeispiele (Button) gefixt

v1.3.20240827

  • NEU: Neue Beispielbilder und Konfigurationen hinzugefügt
  • NEU: Neben dem Platzhalter {{val}} wird jetzt auch {{txt}} bei Rückrechnung unterstützt
  • FIX: Unterstützung für ARC, BUTTON, LINEMETER und ROLLER hinzugefügt bzw. verbessert
  • FIX: Fehler bei Umrechnung und Rückrechnung korrigiert
  • FIX: Fehler bei Auswertung von booleschen Werten nochmal korrigiert
  • FIX: Textausgabe mit Sonderzeichen jetzt bei allen Objekten möglich
  • FIX: Bessere und mehr Debug-Meldungen

v1.2.20240728

  • NEU: Hintergrundbilder und Beispielbilder hinzugefügt
  • NEU: Bibliotheks- bzw. Modulinfos vereinheitlicht
  • FIX: Fehler beim Abrufen von 'MoodLight' korrigiert
  • FIX: Problem beim Auswerten von booleschen Werten gelöst

v1.1.20240730

  • NEU: Actionbereich komplett erweitert (Navigation, Aktionen, Informationen)

v1.0.20240723

  • NEU: Initialversion

Danksagung

Ich möchte mich für die Unterstützung bei der Entwicklung dieses Moduls bedanken bei ...

  • firebuster : für die geniale und hervorragende Vorarbeit mit seinem Modul openHASP 👍
  • ralf, Helmut, richimaint: für den stetigen Austausch rund um das Display und Modulfunktionlitäten 👏
  • Norden : für seine sehr nette persönliche Unterstützung 👏

Vielen Dank an Euch!

Entwickler

Seit nunmehr über 10 Jahren fasziniert mich das Thema Haussteuerung. In den letzten Jahren betätige ich mich auch intensiv in der IP-Symcon Community und steuere dort verschiedenste Skript und Module bei. Ihr findet mich dort unter dem Namen @pitti 😉

GitHub

Spenden

Die Software ist für die nicht kommerzielle Nutzung kostenlos, über eine Spende bei Gefallen des Moduls würde ich mich freuen.

PayPal

Lizenz

Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International

Licence

news news news news news news news news news news news news news news news news news news news news