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
  • Button
  • Checkbox
  • Dropdown
  • Gauge
  • Image
  • Label
  • LED Inicator
  • Line Meter
  • Object
  • Roller
  • Slider
  • 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

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.
PRÜFEN Schalter um den Inhalt des Seitenaufbaus auf JSONL Konformität zu prüfen.
SICHERN Schalter um den Seitenaufbau vom Gerät herunterzuladen und in eine Datei zu schreiben.

Objektzuordnung …

Name Beschreibung
Objekte Table zur Zuordnung zwischen UI- und IPS-Objekt
DUPLIZIEREN Schalter um selektierte Zeile zu duplizieren (und gleich einzusortieren)
NEUSORTIEREN Schalter um die Liste endsprechend Seite und ID zu sortieren

Hier eine kurze Erklärung der Spalten:

  • 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.

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! Schaltet die Beleuchtung im Leerlauf (idle->long) automatisch ab
Zyklus Zeitlicher Zyklus in Minuten in dem der Einbrennschutz für 30 Sekunden eingeschaltet wird.
Im Ruhezustand auf Seite 1 wechseln! Schaltet im kurzen Leerlauf auf Seite 1 um (idle->short)
Keine Syncronisierung im Ruhezustand! Schaltet die Synchrinistaion im Leerlauf ab (idle->long)
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, ['{"comment":" --- KOMMENTAR ZEILE --- "}']);

8. Versionshistorie

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: für den stetigen Austausch rund um das Display und Modulfunktionlitäten 👏

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