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.
- Funktionsumfang
- Voraussetzungen
- Installation
- Einrichten der Instanzen in IP-Symcon
- Statusvariablen und Profile
- Visualisierung
- PHP-Befehlsreferenz
- Versionshistorie
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
- IP-Symcon ab Version 7.0
- Über den Modul Store das Modul Raumdisplay installieren.
- Alternativ Über das Modul-Control folgende URL hinzufügen.
https://github.com/Wilkware/RoomDisplay
odergit://github.com/Wilkware/RoomDisplay.git
- 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
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) |
Man könnte die Statusvariablen direkt in die Visualisierung verlinken.
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']]);
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
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!
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 😉
Die Software ist für die nicht kommerzielle Nutzung kostenlos, über eine Spende bei Gefallen des Moduls würde ich mich freuen.
Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International