stateformat farbiges State

Begonnen von Kai-Alfonso, 09 Oktober 2017, 13:16:18

Vorheriges Thema - Nächstes Thema

Tueftler1983

STATE ist mehrzeilig siehe Screenshot.

Mir würde es reichen wenn nur die 4 Readings:
battery.voltage
input.voltage
ups.load
ups.temperature
Eingefärbt wären
Das 5. Reading "state" wird ja als DevStateIcon dargestellt (OL ein Grüner Stecker, OB als Rote Batterie)


Ich werde es später Testen und sage aber schonmal vielen lieben dank.
Du darfst diesen Dateianhang nicht ansehen.Du darfst diesen Dateianhang nicht ansehen. 

TomLee

#31
Ohne List oder vollständige (mit den setstate Zeilen) Raw-Definition, verliert man die Lust weiter zu raten/ sich weiter mit zu beschäftigen, welches icon das nun ist wo du verwendest in devstateicon.

Tueftler1983

Sorry dachte das wäre zu unübersichtlich

define USV NUT mustek 127.0.0.1:3493
attr USV asReadings battery.charge,battery.runtime,input.voltage,ups.load,ups.power,ups.realpower,battery.voltage,ups.temperature
attr USV devStateIcon 1.OB:USV_battery@red 1.OL:hue_filled_plug@green
attr USV disable 0
attr USV fp_Grundriss 642,605,0,USV,
attr USV pollState 10
attr USV pollVal 60
attr USV room Strom
attr USV stateFormat 1:state\
<br>\
Batteriespannung battery.voltage V\
<br>\
Eingangsspannung input.voltage V\
<br>\
USV Load ups.load %\
<br>\
USV Temperatur ups.temperature °C\
\
\
\

#   DEF        mustek 127.0.0.1:3493
#   DeviceName 127.0.0.1:3493
#   FD         25
#   FUUID      64ee55aa-f33f-91a4-86ad-f675ec87952896ec
#   NAME       USV
#   NR         154
#   PARTIAL   
#   STATE      1:OL
#<br>
#Batteriespannung 13.10 V
#<br>
#Eingangsspannung 227.6 V
#<br>
#USV Load 32 %
#<br>
#USV Temperatur 25.0 °C
#
#
#
#
#   TYPE       NUT
#   UpsName    mustek
#   buffer     
#   eventCount 10431
#   lastStatus OL
#   pollValState 0
#   READINGS:
#     2023-09-10 20:33:03   battery.voltage 13.10
#     2023-09-10 20:33:03   input.voltage   227.6
#     2023-09-10 20:33:53   state           OL
#     2023-09-10 20:33:03   ups.load        32
#     2023-09-10 20:33:03   ups.temperature 25.0
#   helper:
#     battery.voltage 13.10
#     device.type ups
#     driver.name nutdrv_qx
#     driver.parameter.pollfreq 30
#     driver.parameter.pollinterval 2
#     driver.parameter.port auto
#     driver.parameter.synchronous no
#     driver.version 2.7.4
#     driver.version.data Q1 0.07
#     driver.version.internal 0.28
#     input.frequency 50.1
#     input.voltage 227.6
#     input.voltage.fault 227.6
#     output.voltage 227.7
#     ups.beeper.status enabled
#     ups.delay.shutdown 30
#     ups.delay.start 180
#     ups.load   32
#     ups.productid 5161
#     ups.status OL
#     ups.temperature 25.0
#     ups.type   offline / line interactive
#     ups.vendorid 0665
#
setstate USV 1:OL\
<br>\
Batteriespannung 13.10 V\
<br>\
Eingangsspannung 227.6 V\
<br>\
USV Load 32 %\
<br>\
USV Temperatur 25.0 °C\
\
\
\

setstate USV 2023-09-10 20:33:03 battery.voltage 13.10
setstate USV 2023-09-10 20:33:03 input.voltage 227.6
setstate USV 2023-09-10 20:33:53 state OL
setstate USV 2023-09-10 20:33:03 ups.load 32
setstate USV 2023-09-10 20:33:03 ups.temperature 25.0

Internals:
   DEF        mustek 127.0.0.1:3493
   DeviceName 127.0.0.1:3493
   FD         25
   FUUID      64ee55aa-f33f-91a4-86ad-f675ec87952896ec
   NAME       USV
   NR         154
   PARTIAL   
   STATE      1:OL
<br>
Batteriespannung 13.10 V
<br>
Eingangsspannung 228.7 V
<br>
USV Load 32 %
<br>
USV Temperatur 25.0 °C




   TYPE       NUT
   UpsName    mustek
   buffer     
   eventCount 10436
   lastStatus OL
   pollValState 40
   READINGS:
     2023-09-10 20:34:03   battery.voltage 13.10
     2023-09-10 20:34:03   input.voltage   228.7
     2023-09-10 20:34:33   state           OL
     2023-09-10 20:34:03   ups.load        32
     2023-09-10 20:34:03   ups.temperature 25.0
   helper:
     battery.voltage 13.10
     device.type ups
     driver.name nutdrv_qx
     driver.parameter.pollfreq 30
     driver.parameter.pollinterval 2
     driver.parameter.port auto
     driver.parameter.synchronous no
     driver.version 2.7.4
     driver.version.data Q1 0.07
     driver.version.internal 0.28
     input.frequency 50.1
     input.voltage 228.7
     input.voltage.fault 228.7
     output.voltage 228.6
     ups.beeper.status enabled
     ups.delay.shutdown 30
     ups.delay.start 180
     ups.load   32
     ups.productid 5161
     ups.status OL
     ups.temperature 25.0
     ups.type   offline / line interactive
     ups.vendorid 0665
Attributes:
   asReadings battery.charge,battery.runtime,input.voltage,ups.load,ups.power,ups.realpower,battery.voltage,ups.temperature
   devStateIcon 1.OB:USV_battery@red 1.OL:hue_filled_plug@green
   disable    0
   fp_Grundriss 642,605,0,USV,
   pollState  10
   pollVal    60
   room       Strom
   stateFormat 1:state
<br>
Batteriespannung battery.voltage V
<br>
Eingangsspannung input.voltage V
<br>
USV Load ups.load %
<br>
USV Temperatur ups.temperature °C



TomLee

Ok, du verwendest zwei Icons, das USV_battery gibts auf meiner Test-Installation nicht, da muss ich mich mit beschäftigen warum.

Wenn du nur ein Icon verwendet hättest könnte mein Beispiel so aussehen:

{my %val2color = (
'OL' => 'green',
'OB' => 'red',);
my $color = $val2color{ReadingsVal("$name", 'state', 'error')};
$color = 'lightgrey' if !$val2color{ReadingsVal("$name", 'state', 'error')};

return "<span>".FW_makeImage("hue_filled_plug\@$color",'')."</span><br>
<span>Batteriespannung ".ReadingsNum($name,'battery.voltage',0)." A</span><br>
    <span>Eingangsspannung ".ReadingsNum($name,'input.voltage',0)."</span><br>
    <span>USV Load ".ReadingsNum($name,'ups.load',0)."</span><br>
    <span>Temperatur ".ReadingsNum($name,'ups.temperature',0)."</span>"
}

Da du zwei verschiedene verwendest und für den dritten Zustand gar kein Icon angegeben hast, muss ich erstmal weiter grübeln, weiß aber nicht ob das heute noch was wird.

Tueftler1983

#34
Das Icon kannst du nicht haben,ist von mir da ich nichts passendes gefunden habe, sind im anhang, das 3. Icon kann das sein "message_attention" in Orange

TomLee

Mein Beispiel sollte dann eigentlich so bei Dir klappen:

{my %val2color = (
'OL' => 'hue_filled_plug@green',
'OB' => 'USV_battery@red',);
my $color = $val2color{ReadingsVal("$name", 'state', 'error')};
$color = 'USV_online@lightgrey' if !$val2color{ReadingsVal("$name", 'state', 'error')};

return "<span>".FW_makeImage("$color",'')."</span><br>
<span>Batteriespannung ".ReadingsNum($name,'battery.voltage',0)." A</span><br>
    <span>Eingangsspannung ".ReadingsNum($name,'input.voltage',0)."</span><br>
    <span>USV Load ".ReadingsNum($name,'ups.load',0)."</span><br>
    <span>Temperatur ".ReadingsNum($name,'ups.temperature',0)."</span>"
}

Tueftler1983

Sorry wenn ich jetzt doof Frage.
Soll das als userReading oder in stateFormat??

TomLee

Mach ein copy USV USVTest in der Kommandozeile.

Lösche stateFormat in dem USVTest-Device, ersetze deinen Code in devstaticon durch meinen gezeigten und führe ein {delete($defs{USVTest}{STATE})} in der Kommandozeile aus.

Tueftler1983

Sehe leider von der Optik keinen Unterschied!
Du darfst diesen Dateianhang nicht ansehen.

Was brauchst du von mir? Wie kann ich dir helfen 

TomLee

Wenn das jetzt nicht passt, vermute ich, das Ziel war den ganzen "Text" in der DeviceOverview je nach Zustand von state einzufärben ?

Tueftler1983

Also mir würde es echt reichen wenn das Icon und die Werte eingefärbt wären die Texte
Batteriespannung
Eingangsspannung
USV Load
USV Temperatur
Müssen nicht farbig werden, wäre aber nicht schlimm.

TomLee

Das nächste mal erwarte ich bitte von Dir das du dich mit den gezeigten Vorschlägen beschäftigst und nicht alles aus der Nase ziehen lässt:

{my %val2color = (
'OL' => 'hue_filled_plug@green',
'OB' => 'people_sensor@red',);
my $color = $val2color{ReadingsVal("$name", 'state', 'error')};
$color = 'control_home@lightgrey' if !$val2color{ReadingsVal("$name", 'state', 'error')};
my $coltext = substr($color, index($color, "@") + 1);

return "<span>".FW_makeImage("$color",'')."</span><br>
<span>Batteriespannung </span><span style='color: ".$coltext."'>".ReadingsNum($name,'battery.voltage',0)." A</span><br>
    <span>Eingangsspannung </span><span style='color: ".$coltext."'>".ReadingsNum($name,'input.voltage',0)."</span><br>
    <span>USV Load </span><span style='color: ".$coltext."'>".ReadingsNum($name,'ups.load',0)."</span><br>
    <span>Temperatur </span><span style='color: ".$coltext."'>".ReadingsNum($name,'ups.temperature',0)."</span>"
}

Tueftler1983

Super, vielen vielen herzlichen Dank, jetzt heißt es den Code verstehen und für noch ein zwei andere Sachen anpassen.

Danke das du so geduldig bist, warst. Ich finde das sieht jetzt soviel geiler aus und man kann den Status viel schneller erkennen.

Danke danke danke im übrigen für beide!!!

Tueftler1983

So habe die Anzeige noch um die Einheiten V % Und °C ergänzt macht jetzt echt was her auch im Floorplan