[Gauge] FHEMWEB Messgerätewidget

Begonnen von schwatter, 27 Juni 2026, 16:52:18

Vorheriges Thema - Nächstes Thema

schwatter

Du darfst diesen Dateianhang nicht ansehen.

Hallo zusammen,

im contrib-Ordner stehen ab sofort zwei Widget-Versionen zum Testen bereit.


{ Svn_GetFile('contrib/fhemweb_multigauge.js', 'www/pgm2/fhemweb_multigauge.js') }
{ Svn_GetFile('contrib/fhemweb_gauge.js', 'www/pgm2/fhemweb_gauge.js') }


# Multi-Gauge Widget

Einrichtung via webCmd + widgetOverride:

attr <devicename> webCmd cmd<X>
attr <devicename> widgetOverride cmd<X>:multigauge,<Ring1>,<Ring2>,<Ring3>,<Label>,<Skalierung>

Parameter-Syntax:
1-3: Ring-Konfiguration (Reading:Einheit:Farbe:Min-Max-AlarmMin-AlarmMax)
4:  Label (Text unterhalb der Werte)
5:  Skalierung (Optional, Standard: 1.0)

Syntax Details:
- Reading:  Name des FHEM-Readings.
- Einheit:  Text (z.B. °C, %).
- Farbe:    Hex-Code oder 'hue-START-ENDE' (z.B. hue-240-1).
- Limits:    Min-Max-AlarmMin-AlarmMax (Werte mit 'none' deaktivierbar).

Beispiele:
- Ring aktiv:    humidity:%:hue-1-240:0-100-29-61
- Nur Max-Alarm: humidity:%:hue-1-240:0-100-none-61
- Ring aus:      none

Beispiel:
attr <device> widgetOverride cmd:multigauge,humidity:%:hue-1-240:0-100-29-61,temperature:°C:hue-240-1:0-35-none-none,ppm:ppm:hue-120-1:0-5000-none-1401,Keller,1.1

# Gauge Widget (Einzelwert)

Einrichtung via webCmd + widgetOverride:

Parameter-Syntax:
attr <devicename> webCmd cmd<X>
attr <devicename> widgetOverride cmd<X>:gauge,<Reading>,<Einheit>,<Min>,<Max>,<Farbe/Modus>,<Skalierung>

Parameter:
1. Reading:    Name des Readings
2. Einheit:    Text (z.B. kWh)
3. Min:        Startwert der Skala
4. Max:        Endwert der Skala
5. Modus:      'hue:start:ende:alarmMin:alarmMax' ODER Farbcode
6. Skalierung: Größe des Widgets (Standard 1.0)

Beispiel:
attr <device> widgetOverride cmd1:gauge,kWh,kWh,0,10000,hue:0:120:3000:none,1.3
Wichtig:
- Der 5. Parameter ist der "Farb-Modus".
- 'none' deaktiviert Alarm-Grenzwerte.
- Alle 6 Parameter sind durch Kommas getrennt.


Gruß schwatter

Nobbynews

#1
Danke für die Widgets.
Steht zwar so im Text, aber als kleine Anmerkung:
Zitatattr <devicename> widgetOverride cmd<X>:multigauge,<Ring1>,<Ring2>,<Ring3>,<Label>,<Skalierung>
bzw.
Zitatattr <devicename> widgetOverride cmd<X>:gauge,<Reading>,<Einheit>,<Min>,<Max>,<Farbe/Modus>,<Skalierung>

schwatter

Danke, die Sonne...hab noch ein paar Stellen angepasst.

Gruß schwatter

Nobbynews

Ich habe da mal eine Frage:
Wenn ich die Größe der Widgets über die Skalierung mit dem optionalen letzten Parameter verändere,
werden damit ALLE Widgets in der Größe verändert.
Auch dann, wenn jeweils unterschiedliche Faktoren oder Namen für <cmd> eingetragen sind.
Ist das Absicht, oder fehlt mir da das Verständnis?

schwatter

Moin,

was ich noch auf todo habe, jedes muss noch einzigartiger werden. Wahrscheinlich
hängt das damit zusammen.
Biste so nett und gibst mir ein Beispieldummy? Oder ist das Widget übergriffig
geworden auf nicht-gauge-widgets?

Gruß schwatter

Nobbynews

Daran wird es nicht scheitern.
Hier device Nr. 1:
define Hideki_30_1 Hideki Hideki_30_1
attr Hideki_30_1 room Hideki
attr Hideki_30_1 stateFormat [$name:temperature] °C, [$name:humidity] %, [$name:battery], [$name:state:t]
attr Hideki_30_1 webCmd cmd1
attr Hideki_30_1 widgetOverride cmd1:multigauge,temperature:°C:#ff0000:10-30-none-none,humidity:%:#0000ff:10-90-none-none,none,Küche,1.5
#   CODE       Hideki_30_1
#   DEF        Hideki_30_1
#   FUUID      6a09604b-f33f-2b56-488a-1b8b0bcff84396ba
#   LASTInputDev SIGNALespDach
#   MSGCNT     3
#   NAME       Hideki_30_1
#   NR         87
#   SIGNALespDach_DMSG P12#75E8BACA2FBEDF51872B01
#   SIGNALespDach_MSGCNT 3
#   SIGNALespDach_Protocol_ID 12
#   SIGNALespDach_RAWMSG MC;LL=-1002;LH=952;SL=-524;SH=458;D=A8FA345AC85E0A09758F4AE;C=489;L=91;R=31;s2;b1;
#   SIGNALespDach_RSSI -58.5
#   SIGNALespDach_TIME 2026-06-29 11:24:30
#   STATE      27.1 °C, 61 %, ok, 2026-06-29 11:24:30
#   TYPE       Hideki
#   eventCount 3
#   lastMSG    7538ce5e71c261f3892b01
#   lastReceive 1782725070.92043
#   READINGS:
#     2026-06-29 11:24:30   battery         ok
#     2026-06-29 11:24:30   batteryState    ok
#     2026-06-29 11:24:30   channel         1
#     2026-06-29 11:24:30   comfort_level   Hum. OK. Temp. uncomfortable (>24.9 or <20)
#     2026-06-29 11:24:30   humidity        61
#     2026-06-29 11:24:30   package_number  1
#     2026-06-29 11:24:30   state           T: 27.1 H: 61
#     2026-06-29 11:24:30   temperature     27.1
#
setstate Hideki_30_1 27.1 °C, 61 %, ok, 2026-06-29 11:24:30
setstate Hideki_30_1 2026-06-29 11:24:30 battery ok
setstate Hideki_30_1 2026-06-29 11:24:30 batteryState ok
setstate Hideki_30_1 2026-06-29 11:24:30 channel 1
setstate Hideki_30_1 2026-06-29 11:24:30 comfort_level Hum. OK. Temp. uncomfortable (>24.9 or <20)
setstate Hideki_30_1 2026-06-29 11:24:30 humidity 61
setstate Hideki_30_1 2026-06-29 11:24:30 package_number 1
setstate Hideki_30_1 2026-06-29 11:24:30 state T: 27.1 H: 61
setstate Hideki_30_1 2026-06-29 11:24:30 temperature 27.1

Das device Nr. 2 unterscheidet sich nur in:
attr Hideki_30_2 webCmd cmd2
attr Hideki_30_2 widgetOverride cmd2:multigauge,temperature:°C:#ff0000:10-30-none-none,humidity:%:#0000ff:10-90-none-none,none,Keller,1
Einen Screenshot hat ich mal angehängt.

schwatter

Tag,

danke. Ich habe es jetzt angepasst und nochmal mit vielen verschiedenen Widgets und Räumen probiert.
Update per contrib (siehe #1)

- dynamisches CSS-Scoping für die Skalierung hinzugefügt


Grußschwatter

Nobbynews