[Modul] Raumdisplay (RoomDisplay)

Dank @mb-stern konnte ich den Fehler finden (siehe Post vorher) und fixen. Da ich immer ungern für einen Fix eine neue Version mache gibt es wieder mal eine kleine Zugabe :slight_smile:
Danke an @Spoosie für die Anregung zu der Idee mit dem Durchblättern!

BETA v3.4.20250303 ist online:

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

Gruß HEiko

3 „Gefällt mir“

Danke Euch @mb-stern und @pitti , sehr cool!

1 „Gefällt mir“

Hiho,
wenn alle Tests erfolgreich verlaufen, erwartet Euch morgen eine neue Beta-Version.

Und um die Spannung ein wenig zu steigern … ich sage nur …

  • selektives Blättern
  • formatierte Werte

… mehr verrate ich noch nicht!

Gruß Heiko

3 „Gefällt mir“

Guten Abend,

wie versprochen noch paar Worte zur neuen BETA v3.5.20250305!

Bilder sagen ja bekanntlich mehr als Worte …

image

  1. Man kann jetzt festlegen, zu welcher Seite im Leerlauf gesprungen werden soll.
    Prinzipiell nichts Großes, aber bei genauer Betrachtung lässt sich daraus eine clevere Lösung entwickeln.
    Wer meine Layouts kennt, weiß vielleicht, dass ich sieben Seiten nutze: Die erste Seite dient als Verteiler und Haupteinstieg, die anderen sechs Seiten enthalten spezifische Funktionen oder Informationen. Wenn man die Vor- und Zurück-Navigation auf bestimmte Seiten einschränkt, kann man mit dieser neuen Konfigurationsmöglichkeit aus der fixen Seitennavigation ausbrechen :slight_smile:. Das bedeutet, man kann eine spezielle Seite für den Idle-Modus erstellen – und ich habe da schon eine Idee … abwarten :slight_smile:.

  2. Es macht nicht immer Sinn, im Leerlauf durch alle Seiten zu blättern. Zum Beispiel möchte man die Musik-Steuerungsseite überspringen und nur Seiten durchlaufen, die nützliche Informationen (wie Strom, Heizung etc.) anzeigen. Diese Seiten oder Bereiche lassen sich jetzt gezielt definieren – das kennt man bereits aus dem Druckdialog.

  3. Ein weiteres kleines, aber feines Feature betrifft die Anzeige von Zuständen, Modi oder Status. Ab sofort können auch die formatierten Werte (GetValueFormatted) für Beschriftungen oder Werte genutzt werden. Das vereinfacht vieles: Komplexe Formeln zur Nachbildung von Profilen sind nicht mehr nötig :slight_smile:.

  • Programm Geschirrspüler:
    – Vorher: @array_pop(explode('.', '{{val}}'))
    – Danach: '{{fmt}}'
  • Zustand Geschirrspüler:
    – Vorher: ('{{val}}'== 'BSH.Common.EnumType.OperationState.Ready' ) ? '#FFC107 Bereit#' : (('{{val}}'=='BSH.Common.EnumType.OperationState.Run') ? '#FF9800 Läuft#' : '#58A906 Fertig#')
    – Danach: '#FFC107 {{fmt}}#'

Hier mochmal der Changelog v3.5.20250305:

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

Viel Spaß

PS: Es ist schon wieder was am brodeln :heart_on_fire:

7 „Gefällt mir“

Das ist aber nun richtig cool. Wenn das nun auch für das roller-Objekt funktionieren würde könnte man die Wiedergabeliste dynamisch laden.
Vielen Dank für deinen riesigen Aufwand, den du in das Modul steckst :+1:

1 „Gefällt mir“

Richtig cool wird es jetzt erst :sunglasses: Ich kann die Finger einfach nicht von dem Teil lassen …

Mit dem letzten Update kam ja die Möglichkeit auf Seiten zu springen die außerhalb der Seitennavigationsschleife liegen. Was man ja perfekt für einen Idle-Widget nutzen kann …

… et voilà und schon sind sie da :slight_smile: … ja gleich 2 Widgets :smiley:

… und wie sieht das jetzt in rot aus

und in blau …

Letzte Tests laufen … daher müsst ihr bis morgen warten :sunglasses:

Gruß HEiko

5 „Gefällt mir“

das sieht alles richtig stark aus :slight_smile:
ich bräuchte nur einen Editor, der es mir in die erforderliche „Sprache“ übersetzt :smiley:

1 „Gefällt mir“

Ja selbst innerdeutsch gibt es verschiedne Versionen :grin:

Soo, alles lief übers Wochenende stabil und fehlerfrei :slight_smile: Es ist sogar noch ein Widget dazu gekommen - die Fallblattuhr

BETA Changelog 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 - korriegiert

Konfigurationspanel:

Die JSONL-Dateien für die einzelnen Seiten liegen im docs-Verzeichnis:

  • Analoguhr => clock.jsonl
  • Qlocktwo Earth => qlocktwo.jsonl
  • Fallblattuhr => flipclock.jsonl

HINWEIS: die Vorlagen können natürlich den eigenem Geschmack angepasst werden, ABER die Reihenfolge der IDs ist bewußt so angeordnet. Also wer was ändert oder einfügt - auf die lückenlose Reihenfolge der IDs achten!

Viel Spaß
Heiko

4 „Gefällt mir“

Wenn man der Datum-Zeile ein

"template":"%d.%m.%Y"

gönnt, dann wird das Datum intern aktualisiert. Ich habe aber noch keinen Parameter für den Wochentag gefunden.

Wie genau prüfst du die JSON Validität bei „prüfen“?
grafik

Das ist valide und funktioniert, stört eventuell der Zeilenumbruch, der auch zulässig ist.

Stört eventuell der Dateiname? Bei mir heißt die Datei pages.jsonl.

„Einlesen“ liest trotzdem, macht dann aber nichts
grafik

Ja weiß, es gibt sogar was mit Wochentag, aber der ist immer Englisch - daher nutze ich es nicht!

Ich lese das Layout zeilenweise und schmeiße alle leerzeilen weg. Der Rest wird mit

  $decoded = json_decode($line, true);

gecheckt! Wie sieht den Deine erste Zeile aus?

Nee, glaube ich nicht!

Was sagt den das Debug Log dazu?

Gruß Heiko

Die ersten zwei Zeilen

{"comment":"----- Kopfzeile mit Name, Aussentemperatur und Uhrzeit -----"}
{"page":0,"id":8,"obj":"btn","x":0,"y":0,"w":480,"h":48,"bg_color":"#808080","border_color":"#808080","radius":0, "enabled":1}
...
10.03.2025, 13:25:10 |        RequestAction | LayoutParse => a:4:{s:3:"new";b:1;s:6:"change";b:1;s:6:"delete";b:0;s:8:"simulate";b:0;}
10.03.2025, 13:25:10 |          ParseLayout | [new] => 1, [change] => 1, [delete] => , [simulate] => , 
10.03.2025, 13:25:10 |          ParseLayout | Syntax error => pages.jsonl

Ja, der bricht ab weil kein gültiges JSONL, aber wenn ich Deine 2 Zeilen nehme …

Sicher das da nicht noch irgendwas ist?

→ PM

Das Einlesen liefert im Debug keine Meldung außer

10.03.2025, 13:47:17 |        RequestAction | LayoutCheck => pages.jsonl

Sonderfrage zu ARC:
Ich möchte hier meinen Zisterneninhalt visualisieren.
Und nachdem ich kein vernünftiges Icon finde dachte ich den prozentuellen Füllstand mache ich über den Kreis, also {{val}}, und in die Mitte des Kreises hätte ich gerne die Menge in Liter geschrieben.
Beide Werte hätte ich als Variable zur Verfügung.
Bekommt man das irgendwie dargestellt?
Manuell kann ich ja einen Text reinschreiben - aber wie bekomme ich dort einen Wert rein ?

Hallo Heiko,
ich benötige Deine Hilfe bitte. Wie bekomme ich das Senderlogo des aktuell abgespielten Senders meiner Sonos auf das Display?
LG

Ist die Menge in Litern und der Prozenduale Füllstand equivalent, heißt bei 5000 max Litern steht bei 50% in der Mitte 2500 Liter? Dann reicht ja eine Variable mit entsprechender Umrechnung!

1 „Gefällt mir“

Ups, da ist glaube ich ehr @mb-stern der Profi. Hier weiter oben [Modul] Raumdisplay (RoomDisplay) - #314 von mb-stern
hat er dazu was geschrieben.

Damit habe ich mich noch nicht beschäftigt!
Persönlich weiß ich noch nicht, ob ich sowas gut finde oder nicht.

Gruß Heiko

Aktuell habe ich noch keinen Weg gefunden, Webinhalt auf dem Display anzuzeigen. Daher führt der Weg nur darüber, dass du die Logos entweder manuell oder via Script per ftp hochlädst. Leider lässt sich die Cover-URL vom Sonos-Modul nicht dazu verwenden, dies mit einem Script zu lösen.
Wie @pitti erwähnt hat, schau dir mal mein Script an, wie man ein Bild dynamisch lädt. Dazu müssen die Bilder allerdings auf dem Display gespeichert sein. Wenn du immer ungefähr dieselben Sender hörst, dürfte das ein überschaubarer Aufwand sein.

Guten Morgen,
danke für die Info. Ich habe noch eine Frage: Welche ID verwende ich für das WWXRD_SendJSONL? Ich bin da irgendwie ratlos. Danke schon im Voraus! VG