Zum Inhalt springen

FHEMWEB/Popup

Aus FHEMWiki
Mini
Mini

Popup – Werte und Bedienelemente in einem Dialog

Das Popup-Widget zeigt im FHEMWEB (PGM2) Frontend einen kleinen Menü-Button (drei Striche) in der Gerätezeile. Ein Klick darauf öffnet einen Dialog mit frei wählbaren Readings samt Einheit und Icon sowie allen Bedienelementen aus dem webCmd des Geräts, z. B. Slider, Auswahllisten, Colorpicker oder Icons aus cmdIcon.

Gedacht ist es vor allem für das Smartphone. Das Popup holt diese Bedienelemente zurück, ohne dass die Detailseite geöffnet werden muss. Das Popup übernimmt den Style des Skins und bringt keine eigenen Farben mit.


Hilfe

popup – Dialog für Werte und Bedienelemente

1️⃣ Widget im Device einrichten

Die Einrichtung erfolgt über das Attribut webCmd und widgetOverride.

attr <devicename> webCmd cmd<X>
attr <devicename> widgetOverride cmd<X>:popup,<Reading>@<Einheit>,<Reading>@<Einheit>,...


2️⃣ Parameter

Parameter Beschreibung
Reading@Einheit Beliebig viele Readings, die im Dialog angezeigt werden. Die Einheit ist optional. Die Werte werden live aktualisiert.
alwaysVisible Optional: Button bei jeder Bildschirmbreite zeigen. Ohne diesen Schalter erscheint der Button nur im Hochformat bis 480 px Breite, also dort, wo f18 die Spalten ausblendet. Die Position in der Liste ist egal.

3️⃣ Beispiel

Nur auf dem Smartphone

attr <device> webCmd pct:state:cmd1
attr <device> widgetOverride cmd1:popup,measured-temp@°C,humidity@%

Bei jeder Bildschirmbreite

attr <device> widgetOverride cmd1:popup,alwaysVisible,measured-temp@°C,humidity@%

Auf Touch-Geräten öffnet sich der Dialog mittig, auf dem Desktop direkt am Button.


Bedienelemente aus webCmd

Alle Einträge aus webCmd erscheinen automatisch im Dialog, unterhalb der Readings. Der Popup-Eintrag selbst wird übersprungen. Die fertigen Elemente der Gerätezeile werden beim Öffnen in den Dialog verschoben und beim Schließen zurückgelegt. Slider, Auswahllisten, Colorpicker und cmdIcon funktionieren deshalb genauso wie in der Gerätezeile.

Als Beschriftung dient der Name des zugehörigen Readings, bei cmdIcon der Befehlsname.

Hängt ein Widget an einem Reading, das es noch nicht gibt, verwendet FHEM state, und im Dialog steht dann auch state. Abhilfe schafft, das Reading einmal anzulegen:

setreading <device> <reading> -


Icons für Readings

Links neben jedem Reading kann statt des Namens ein Icon stehen. Ist kein Icon gesetzt oder der Name unbekannt, steht dort der Reading-Name.

1️⃣ Icons im Device einrichten

Die Icons werden über die Attribute icon_1, icon_2 usw. gesetzt. Die Nummer zählt nach der Reihenfolge der Readings in der Popup-Definition, alwaysVisible zählt dabei nicht mit.

attr <devicename> userattr icon_1 icon_2
attr <devicename> icon_1 <Icon>
attr <devicename> icon_2 <Icon>

2️⃣ Parameter

Format Beschreibung
temp_temperature@red FHEM-Icon aus dem iconPath von FHEMWEB, SVG oder PNG.
data:image/svg+xml;;charset=utf-8,%3Csvg...%3E@red SVG direkt im Attribut. Mit Farbe gilt sie für das ganze SVG.
mdi-thermometer Material Design Icon, die MDI-Schrift muss im Frontend geladen sein.
fa-tint Wird zuerst als FHEM-Icon gesucht, sonst als Font-Awesome-Klasse gesetzt.
@Farbe Optional bei FHEM-Icons und SVG: Farbname (@red) oder Hex-Wert mit oder ohne Raute (@FF8800, @#00AAFF). Ohne Farbe übernimmt ein SVG-Icon die Textfarbe des Styles.

3️⃣ Beispiel

attr <device> widgetOverride cmd1:popup,measured-temp@°C,humidity@%
attr <device> userattr icon_1 icon_2
attr <device> icon_1 temp_temperature@red
attr <device> icon_2 humidity


Aussehen anpassen

Das Popup verwendet dieselben Klassen wie die Detailseite (block, odd/even, col1, dval, mkTitle) und übernimmt auch die f18-Einstellung „Wrap columns on small screens“. Für eigene Anpassungen im Style stehen diese Klassen zur Verfügung:

Klasse Element
.fhem-popup-btn Button in der Gerätezeile
.fhem-popup-container Inhalt des Dialogs
.fhem-popup-table Tabelle mit Readings und Bedienelementen
.fhem-popup-icon Icon eines Readings

Beispiel für mehr Abstand zwischen den Zeilen:

.fhem-popup-table td {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
}

Tipp für eigene dunkle Styles: jQuery UI legt auf .ui-dialog ein helles Hintergrundbild. Wer dort nur background-color setzt, sollte zusätzlich background-image: none !important; ergänzen.


Links