[BETA] [MODUL] Raumdisplay (RoomDisplay)

Hallo liebe openHASP MiniDisplay Nutzer,

da ich doch zunehmend gefragt werde wie ich meine Designs ansteuere und das generelle Interesse anscheint größer ist als ich dachte. Habe ich nach langem zögern mich nun doch entschlossen hier mal meine Erfahrungen/Ideen und Herangehensweise zu veröffentlichen.

Um es gleich nochmal vorweg deutlich zu sagen - das ist kein Konkurrenzmodul zu openHASP - sondern ein für meine Zwecke optimiertes Modul, d.h. es ist auf meine Bedürfnisse zugeschnitten.

Die Sourcen für die erste Version habe ich auch schon an @firebuster übergeben.

Wieso, weshalb warum - wer nicht fragt bleibt … ?

Eigentlich hätte ich es ja damit belassen können, aber es hat einfach zu viel Spaß gemacht mit dem Teil zu experimentieren. Zusammen mit IPS das perfekte Spielzeug für mich. Da ich gerade bei der Renovierung eines Hauses bin war das der optimale Zeitpunkt um die Teile dort einfließen zu lassen.

Hier vielleicht nochmal die für mich wichtigsten Idee dahinter bzw. Herangehensweise:

  1. keine Limitierung vom Design, das Display bringt von Haus aus eine klare Trennung von Design und Steuerung mit sich
  2. so wenig wie möglich in IPS zu ändern, also keine Scripte die irgendwas übersetzen bzw. manipulieren, keine Beschränkung auf Variablentypen usw.

Dementsprechend musste ich immer wenn ich was neues im Design gebaut hatte - schauen wie ich das von Seiten IPS handle. Und somit wuchsen die Änderungen von Stunde zu Stunde und Tag zu Tag. Bis daraus was ganz eigenes wurde :slight_smile:

Was macht bzw. was kann das Modul

Eigentlich übersetzt das Modul die Aktionen/Events nach IPS und andersherum die Variablenaktualisierungen von IPS auf die Darstellung des Displays.

Derzeit werden folgende UI-Objekte unterstützt:

  • Arc
  • Button
  • Dropdown
  • Gauge
  • Image
  • Label
  • LED Inicator
  • Line Meter
  • Object
  • Roller
  • Slider
  • Switch
  • Toggle Button

Das interessante dabei ist aber der Teil der Hin- und Zurücktransformation. Dazu aber später mehr!

Modulkonfiguration (als Dokumentation)

Wie angemerkt ist das ein „atmendes“ Modul und somit gibt es noch keine Doku - und für mich brauch ich keine Doku :rofl: :rofl: :rofl:

Bekanntes Schema meiner Module …

Jetzt eine Erklärung der einzelnen Einstellungen.

Anzeigegerät …

  • Gerätenamen sollte klar sein (= Hostname) - nix Neues.
  • Geräteadresse (IP) ist optional , aber ohne gehen Screenshots und Download der Designdatei (pages.jsonl) nicht.

Objektzuordnung …

Das Kernstück des Moduls und stark erklärungsbedürftig :frowning:

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

Vielleicht auch mal den Screenshot genau anschauen - ansonsten Fragen!

Erweiterte Einstellungen …

Sollte bekannt sein aus dem Original-Modul

Aktionsbereich

Wer die Web-Oberfläche von openHASP kennt, wird einiges wiederfinden.

Buttonleiste

  • Vorher, Zurück, Weiter - eigentlich auch selbsterklärend, mit den Buttons kann man auf den Seiten navigieren.
  • Seiten neu laden - soll die pages.jsonl neu einlesen und die Seiten neu rendern.
  • Seiten löschen - soll alle Seiten löschen.

Warum SOLL - die 2 Sachen konnte ich noch nicht testen :slight_smile:

Aktion ausführen …

In dem Button kann man verschiedene Aktionen anstoßen/senden:

  • Stimmungslicht - Anfrage nach Informationen zu den aktuellen Moodlight-Einstellungen
  • Status - Anfrage nach Geräte-Status-Update-Informationen
  • Bildschirmfoto - Kommando zum Erstellen eines Screenshots senden
  • 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

Abfrage von …

Eigentlich das Einsammeln der Ergebnisse der zuvor beschrieben Aktionen.

  • Stimmungslicht - Anzeige der aktuellen Moodlight-Einstellungen
  • Status - Anzeige der Status-Update-Infos
  • Bildschirmfoto - Download und Speichern des angeforderten Screenshots (aktuelle Seite), siehe auch imgs Ordner im Modul :slight_smile:
  • Seitenaufbau - Download und Speichern der pages.jsonl Datei (Backup-Zwecke)

Man, jetzt ist doch einiges zusammengekommen. Verzeiht die Rechtschreibung - habe es einfach am Stück runtergeschrieben :slight_smile:

Wie gesagt das Modul ist noch „Under Construction“ und daher nur als Test-Version im Store zu laden.

Hier der Link zum ausprobieren :loveips:

Feedback in jede Richtung willkommen!

Heiko

PS: Das Modul ist auch als public Version auf github zu finden => GitHub - Wilkware/RoomDisplay: IP-Symcon Modul

PSS: Screens von meinem Design findet man im Unterordner „imgs“ und die verwendete pages.jsonl liegt im Unterordner „docs“.

10 „Gefällt mir“

Noch kurz vor dem Wochenende ein kleines Update:

v1.2.202408728

  • 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

Wichtigster Punkt ist der Letzte (Auswerten von booleschen Werten), da konnte es zu Fehlern im Modul kommen. Ansonsten verrichtet es bei mir absolut zuverlässig seine Dienste auf 2 Displays!

Gruß HEiko

Habe Dein Modul gerade am Wickel, er schreibt nicht die Seiten JSon in das Display.
Die Objekte werden bedient, habe einmal Gauge drin und die Info ist im Debug. nichts im Debug wenn ich Objekte erstelle.
Kannst Du helfen?

Du hast Dir aber die Hintergründe und Idee des Moduls schon durchgelesen?

DAS Modul schreibt keine Seiten, es kümmert sich um das Mapping der UI- und IPS-Objekte (in beide Richtungen).

Wenn Du auch die Seiten designen und verwalten möchtest, dann solltest Du Dich mit dem openHASP Modul beschäftigen!

Gruß Heiko

Tschuldige, ich hatte es für ein eigenständiges Modul gehalten und wollte es so ausprobieren.
Ich lese gleich mal genauer.

Kein Ding. Es ist ein eigenständiges Modul, aber eben mit einem anderen Focus!

Gruß Heiko

Wer es zufällig gesehen hat, ich habe nochmal meine Designs für „Zimmer“ überarbeitet. In diesem Zusammenhang ist nochmal viel Arbeit in das Modul geflossen um jetzt auch das Mapping der UI-Objekte ARC, BUTTON, LINEMETER und ROLLER richtig zu unterstützen.

Habe auch nochmal die Screens (rot & blau) und die dazugehörigen Konfigurationen (pages10.jsonl [rot] & pages30.jsonl [blau]) dazu gepackt (Ordner docs bzw. imgs).

Die Dinger sind leider echte Zeitfresser - weil es macht so viel Spaß damit zu experimentieren, aber jetzt muss ich mal meine Sucht in den Griff bekommen. Eigentlich funktioniert jetzt auch alles was funktionieren sollte :slight_smile: Aus diesem Grund habe ich das Modul jetzt als Beta eingestellt.
Hier noch der Changelog:

BETA 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

Gruß Heiko

1 „Gefällt mir“

Danke für die tolle Arbeit.
Aber ich verstehe das noch nicht so richtig.
Die pages10 und 30.jsonl müssen in das Display hochgeladen werden und können auch dort verwaltet werden?

Hi,

danke für Dein Lob!

Vielleicht mal ein Paar Worte bzw. Steps wie und wo man was machen kann.

1.) Nach dem Flashen (selbstredend) kann man das Display ganz normal im Browser aufrufen!

HINWEIS: Ich habe jedem Display eine feste IP über meine Fritzbox zugewiesen.

Das sieht dann so im Home-Menu aus:

2.) Das Grunddesign usw. einstellen. Oben den ersten Button drücken „HASP Design“

Dort kann man den UI-Theme (Hasp Dark - ist für meine Beispiele der Richtige)

Farben habe ich wie folgt …

ORANGE/ROTE Variant:

  • Primär = 255 153 000
  • Secondary = 255 121 057

BLAUE Variante:

  • Primär = 016 161 230
  • Secondary = 000 085 131

3.) Start Layout ist standardmäßig die Datei pages.jsonl !!

Jetzt gibts es 2 Möglichkeiten:

a) ALLES SO LASSEN und den Inhalt meiner Beispieldateien (pages10 & pages30) in die schon existierende pages.jsonl reinkopieren (so mach ich es)!

b) IM DIALOG HASP DESIGN ÄNDERN und den Dateinamen hier ändern, z.B. /paghes10.jsonl

Save Settings und zurück über Main Menu (Reboot bei Änderungen ist immer gut :slight_smile:

4.) Der File Editor

Über Hauptmenu aufrufbar …

Variante a) einfach auf den Dateinamen pages.jsonl klicken und das File wird geladen und angezeigt und man kann einfach über Copy&Paste den Inhalt austauschen und mit Strg+S alles Speichern und dann „Reload Pages“ (oder reboot)!

Sollte man die Variante b) gewählt haben, dann über den Button Upload die Konfigurationsdatei hochladen - wahrscheinlich dann nochmal Reload Pages bzw. Reboot (habe ich selber noch nicht probiert)!

5.) Selber was Anpassen

Einfach in den File Editor gehen, pages.jsonl laden und die Anpassungen vornehmen. Danach Speichern (Strg+S) und Reload Pages ausführen.
Manchmal ist das Teil hartnäckig oder man ist sich sicher die Anpassungen haben nicht gezogen … dann Clear Pages … warten bis Display schwarz wird … dann Reload Pages klicken … jetzt sollte es passen!

Gruß HEiko

2 „Gefällt mir“

Ganz blöde Frage: ich habe Checkboxen gesetzt, die ich mit der Auswertung vom MQTT Server Gerät und dem Value zum Schalten bringe.
Ist nun das Gerät von woanders geschaltet, würde ich gerne den Zustand im Display ändern, ich muß wohl ein „Payload“ schicken. Wie würde der aussehen?
Ich kenn mich nicht so aus mit MQTT
Die Checkbox heißt hasp/uhr/state/p3b8

Bin mir nicht sicher ob ich die Frage richtig verstehe. Hast Du ein UI-Objekt vom Typ Switch mit einer Boolean Variable in IPS verknüpft, oder was genau?

Wenn Du eine Verknüpfung hinterlegst, wird auch bei Aktivität am Display das entsprechende IPS-Objekt geschalten (sofern diese ein Action hat [RequestAction]).

Gruß Heiko

Ich arbeite eigentlich nur mit Deinem Modul für das Mappen, wie ihr das nennt.
Die Displayinhalte erstelle ich mit dem Online Tool von Openhasp, d.h. ich nutze die Objektzuordnung nur für Daten von Gauge usw , bei Checkboxen ist nichts drin, weil ich MQTT Server Client nutzen kann.
Kein Requestaktion, frage per Script und Ereignis den Zustand „0“ und „1“ ab.
Funktioniert eigentlich für mich super.
Aber zur Synchronität müßte ich wahrscheinlich in die Objektzuordnung auch die Checkboxen eintragen, oder?


Ich bin mir zwar immer noch nicht 100% klar ob ich alles verstanden habe, aber muss ich vielleicht auch nicht … weil …

Ja, wenn Du das synchrone am Display haben möchtest.

HINWEIS: Wenn Du bei der Spalte Rückrechnung eine „-1“ einträgst, dann wird definitiv keine RequestAction nach IPS durchgeführt! Wenn Du also das Dinge selber per MQTT und Script machen willst, solltest Du die sicherheitshalber eintragen :slight_smile:

Das mit der MQTT und Payload Geschichte zum Display und ist mein Problem, wie sage ich’s dass sie sich ändert ohne auf das Display zu drücken?

Gab auch ohne Eintrag kein Problem, aber wie sage ich dem Display und der Checkbox, Du bist checked :wink: oder unchecked :wink:

Falls es mal nicht mehr klappt, weißt Du ja wie man es lösen kann :slight_smile:

Naja, normalerweise verknüpfst Du ja ein boolesche Variable mit dem Switch (Checkbox). Das sollte dann automatisch funktionieren. Wenn nicht muss ich nochmal schauen. Wenn Du was anderes verknüpfen willst, dann musst Du in „Umrechnung“ etwas eintragen das den wert auf 1 bzw. 0 umrechnet. Der Switch in HASP kennt nur 0 oder 1 :smiley:

Gruß HEiko

Na… ich glaube ich erkläre schlecht, das Schalten per Display funktio nokkelt, brauch dafür keine Verknüpfung.
Nur wenn ich per Webfront was schalte, sollte im Display auch der Zustand erneuert werden.
Das wird wohl per Payload gehen, nur wie weiß ich nicht.

Wenn die Variable richtig über das Modul verknüpft ist, dann sollte der Zustand auch automatisch vom Modul gepflegt werden.

Aber du hast oben im BIld keine Checkboxen zugeordnet.

1 „Gefällt mir“

Die ist in deinem Screen ein Label und nicht zugeordnet (wie @ralf richtig schreibt)?!?!?

Es muß laut Openhasp Erklärung irgendwas mit

  • hasp/<nodename>/command topic with payload <keyword>=<parameter(s)>
    werden.
    Das verstehe ich nicht.
    hasp/uhr/command und dann p3b8=1 oder 0
    oder was muß ich senden?
    Ein MQTT Client Device mit dem Inhalt hasp/uhr/command/p3b8=1 müßte es meiner einer Meinung werden…

Fangen wir nochmal anders an :smiley:

Was möchtest Du auf dem Display angezeigt haben?

Checkboxen werden mit dem UI-Element „Switch“ dargestellt! Wenn Du also einen Switch mit einer IPS-Variable (BOOL) verknüpfst, dann wird auch bei Änderung der Variable in IPS auch der Schalter auf dem Display geschalten.

Gruß HEiko