hi @all,
ich versuche gerade in einer readingsgroup bestimmte Ausdrücke farblich zu markieren . ( SPÄT=rot , NACHT=blau usw. )
mit
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
{
if ($VALUE eq "SPÄT") { 'style="color:red;"' }
}
}
bekomme ich die Spätschichten alle in rot angezeigt :-)
Wenn ich nun aber versuche mit elseif oder else die nächste Schicht farblich zu markieren
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
{
if ($VALUE eq "SPÄT") { 'style="color:red;"' }
}
else
{
if ($VALUE eq "NACHT") { 'style="color:blue;"' }
}
}
geht es in die Hose .... entweder geht garnichts oder aber nur das letzte if wird ausgeführt und nur NACHT wird blau dargestellt
Da stimmt die Klammersetzung nicht
Sollte so funktionieren:
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
if ($VALUE eq "SPÄT") { 'style="color:red;"' }
elsif ($VALUE eq "NACHT") { 'style="color:blue;"' }
}
Danke :-)
Hallo guten Abend,
habe für meine readingsgroup aus dem Forum das erhalten, was auch funktioniert :
Valuestyle:
{ if($READING eq 'E_aktuell') {'style="color:red"';;} elsif ($READING eq
'2.8.1') {'style="color:blue"';;} elsif ($READING eq
'state') {'style="color:blue"';;}elsif ($READING eq
'SV_TVB') {'style="color:red"';;} elsif ($READING eq
'PV_JWE') {'style="color:blue"';;} elsif ($READING eq
'NT_JVB') {'style="color:red"';;} elsif ($READING eq
'HT_JVB') {'style="color:red"';;} elsif ($READING eq
'ESP_Tag') {'style="color:blue"';;}}
aber die werte werden linksbündig angezeigt, nun wollte ich das einfügen :
style="text-align:right"
aber wo oder wie wird das eingebunden ?
IR_Kopf:E_aktuell => "4.053 kW" 2020-12-05 19:21:48
SV_Tag:SV_TVB => "-93.190 kW" 2020-12-05 19:25:42
HT-JVB:HT_JVB => "-1471.883 kW" 2020-12-05 19:25:42
NT-JVB:NT_JVB => "-11684.111 kW" 2020-12-05 19:25:42
ESP-Tag:ESP_Tag => "0.000 kW" 2020-12-05 19:25:42
PV_GSE:state => "50386.270 kW" 2020-12-05 19:20:22
PV_aktuell:state => "0.000 kW" 2020-12-05 19:25:42
PV_ESP:state => "36928.596 kW" 2020-12-05 19:25:42
PV_tag:state => "3.122 kW" 2020-12-05 19:26:22
PV_JWANZ:PV_JWE => "7487.148 kW" 2020-12-05 19:20:22
Bitte um einen Tipp Gruß Peter :-\
Wahrscheinlich mit
{'style="color:blue;;text-align:right"';;}
(nicht getestet)
Hallo, allerbesten Dank für die tolle schnelle Hilfe - Test gelungen ! :) :) :)
Hast Du auch noch einen Tipp für das :
KLI_Wzi alive ok 2020-12-05 17:53:04
FS_Bad alive ok 2020-12-05 00:26:39
FS_Gäste-WC alive ok 2020-12-05 14:57:24
FS_Wohnzimmer alive low 2020-12-05 21:22:45
wie man die Zuständen "aliv" z.B. bei "dead" bzw. den Zustand "ok" bei "low" mit "valuestyle"farblich anpassen kann ?
Das wäre super ! :D
Nicht sicher, was Du willst, und was genau deine Devices für Readings haben und für Werte liefern, aber das ist reines Perl. Dann kannst Du dein if elsif elsif beliebig ergänzen.
Und Du kannst $READING testen, aber auch $VALUE, und abhängig davon entspr styles zuweisen:
if ($READING eq 'state') {
if ($VALUE eq 'low'){'style="color:red"';;} elsif ($VALUE eq 'high') {'style="color:green"';;} else {'style="color:black"';;}
}
super, besten Dank, das werde ich morgen versuchen und berichten.
Der Sinn ist die überwachten Geräte (Homatik HT,Fenstersensoren usw.) in der readingsgroup anzuzeigen und bei Zustandsänderungen wie "dead" oder "low" den Anzeigetext in der Tabelle farblich zu ändern. Z.B das "dead" in rot oder "low" in gelb. Das wird zwar alles per DOIF akustisch angezeigt oder als email gesendet, aber es erleichtert das schnelle erkennen in der readingsgroup-Tabelle.
erstmal herzlichen Dank für die schnelle Hilfe und ich werde mich morgen melden.
Wünsche eine gute Nacht und liebe Grüße aus dem Nordschwarzwald von Peter
Hallo,
zum Verständnis hier das DEF der Readingsgroup :
KLI_Wzi:Activity,battery,<>,datum,
FS_.*:Activity,battery,<>,datum,
TH_Aussentemp:Activity,battery,<>,datum,
TH_HKRestw:Activity,battery,<>,datum,
TH_VLRL:Activity,battery,<>,datum,
HT_.*:Activity,battery,batteryLevel,datum, WT_.*:Activity,battery,batteryLevel,datum
und hier mein Versuch mit "valuestyle" :
if ($READING eq 'battery') {
if ($VALUE eq 'low'){'style="color:red"';;} elsif ($VALUE eq 'ok') {'style="color:green"';;} else {'style="color:black"';;}
}
und hier die aktuelle Liste (Auszug) :
KLI_Wzi alive ok 2020-12-06 12:59:40
FS_Bad alive ok 2020-12-06 00:17:46
FS_Gäste-WC alive ok 2020-12-06 10:00:46
FS_Wohnzimmer alive low 2020-12-06 15:30:21
Aussentemperatur_local alive ok 2020-12-06 15:44:02
TH_HKRestw alive ok 2020-12-06 15:43:30
nun sollte "low" eigentlich in "red" angezeigt werden ? Oder wo mache ich hier einen (Denk)Fehler ?
Gruß Peter
Ja, sollte.
Mach mal ein "list" von deinem rg
hier das gewaltige List "Batteriekontrolle" :
Internals:
DEF KLI_Wzi:Activity,battery,<>,datum,
FS_.*:Activity,battery,<>,datum,
TH_Aussentemp:Activity,battery,<>,datum,
TH_HKRestw:Activity,battery,<>,datum,
TH_VLRL:Activity,battery,<>,datum,
HT_.*:Activity,battery,batteryLevel,datum,
WT_.*:Activity,battery,batteryLevel,datum
FUUID 5e9c8a02-f33f-b3b4-6153-04a5570e6bbf2599
NAME Batteriekontrolle
NR 362
NTFY_ORDER 50-Batteriekontrolle
STATE Initialized
TYPE readingsGroup
changed 0
mayBeVisible 1
CONTENT:
FS_Bad 1
FS_Gwc 1
FS_Wzi 1
HT_Bad 1
HT_Bad_Clima 1
HT_Bad_ClimaTeam 1
HT_Bad_Climate 1
HT_Bad_Weather 1
HT_Bad_WindowRec 1
HT_Bad_remote 1
HT_Gwc 1
HT_Gwc_Clima 1
HT_Gwc_ClimaTeam 1
HT_Gwc_Climate 1
HT_Gwc_Weather 1
HT_Gwc_WindowRec 1
HT_Gwc_remote 1
HT_Gzi 1
HT_Gzi_Clima 1
HT_Gzi_ClimaTeam 1
HT_Gzi_Climate 1
HT_Gzi_Weather 1
HT_Gzi_WindowRec 1
HT_Gzi_remote 1
HT_Wz1 1
HT_Wz1_Clima 1
HT_Wz1_ClimaTeam 1
HT_Wz1_Climate 1
HT_Wz1_Weather 1
HT_Wz1_WindowRec 1
HT_Wz1_remote 1
HT_Wz2 1
HT_Wz2_Clima 1
HT_Wz2_ClimaTeam 1
HT_Wz2_Climate 1
HT_Wz2_Weather 1
HT_Wz2_WindowRec 1
HT_Wz2_remote 1
KLI_Wzi 1
TH_Aussentemp 1
TH_HKRestw 1
TH_VLRL 1
WT_Gzi 1
WT_Gzi_Climate 1
WT_Gzi_SwitchTr 1
WT_Gzi_Weather 1
WT_Gzi_WindowRec 1
WT_Gzi_remote 1
WT_Wzi 1
WT_Wzi_Climate 1
WT_Wzi_SwitchTr 1
WT_Wzi_Weather 1
WT_Wzi_WindowRec 1
WT_Wzi_remote 1
CONTENT2:
DEVICES:
ARRAY(0x56b5830)
ARRAY(0x5db38d8)
ARRAY(0x5243638)
ARRAY(0x57247d8)
ARRAY(0x5cf33c8)
ARRAY(0x56ed028)
ARRAY(0x56d1590)
ARRAY(0x55124b0)
ARRAY(0x5c72180)
ARRAY(0x5685ae0)
ARRAY(0x51c01e8)
ARRAY(0x5662d50)
ARRAY(0x5449f20)
ARRAY(0x5a8dcf8)
ARRAY(0x59aa690)
ARRAY(0x58dd330)
ARRAY(0x5d2c648)
ARRAY(0x55e1780)
ARRAY(0x5611840)
ARRAY(0x5acd4c8)
ARRAY(0x4c77a60)
ARRAY(0x57350a0)
ARRAY(0x5e3e7c0)
ARRAY(0x549fb98)
ARRAY(0x5160058)
ARRAY(0x56e7360)
ARRAY(0x55a8320)
ARRAY(0x551aa70)
ARRAY(0x5e59160)
ARRAY(0x5552238)
ARRAY(0x5d4cea0)
ARRAY(0x54e33d8)
ARRAY(0x5b58a00)
ARRAY(0x5dd9238)
ARRAY(0x5f913d8)
ARRAY(0x5fc7630)
ARRAY(0x5e73138)
ARRAY(0x567b830)
ARRAY(0x59b21d8)
ARRAY(0x5c84980)
ARRAY(0x5d0fbb0)
ARRAY(0x59c69a0)
ARRAY(0x54222f0)
ARRAY(0x549fc58)
ARRAY(0x5e82b08)
ARRAY(0x5dbccd8)
ARRAY(0x5a70c70)
ARRAY(0x5f95c88)
ARRAY(0x5638be0)
ARRAY(0x552cc30)
ARRAY(0x5d1deb8)
ARRAY(0x5e45ef8)
ARRAY(0x5e6feb0)
ARRAY(0x56a38c8)
fhem:
lastDefChange 251
last_update 1607268398.5781
helper:
DEF
valueStyle if ($READING eq 'battery') {
if ($VALUE eq 'low'){'style="color:red"';;} elsif ($VALUE eq 'ok') {'style="color:green"';;}
positions:
FS_Bad.Activity 2:1
FS_Bad.battery 2:2
FS_Bad.datum 2:4
FS_Gwc.Activity 3:1
FS_Gwc.battery 3:2
FS_Gwc.datum 3:4
FS_Wzi.Activity 4:1
FS_Wzi.battery 4:2
FS_Wzi.datum 4:4
HT_Bad.Activity 8:1
HT_Bad.battery 8:2
HT_Bad.batteryLevel 8:3
HT_Bad.datum 8:4
HT_Gwc.Activity 15:1
HT_Gwc.battery 15:2
HT_Gwc.batteryLevel 15:3
HT_Gwc.datum 15:4
HT_Gzi.Activity 22:1
HT_Gzi.battery 22:2
HT_Gzi.batteryLevel 22:3
HT_Gzi.datum 22:4
HT_Wz1.Activity 29:1
HT_Wz1.battery 29:2
HT_Wz1.batteryLevel 29:3
HT_Wz1.datum 29:4
HT_Wz2.Activity 36:1
HT_Wz2.battery 36:2
HT_Wz2.batteryLevel 36:3
HT_Wz2.datum 36:4
KLI_Wzi.Activity 1:1
KLI_Wzi.battery 1:2
KLI_Wzi.datum 1:4
TH_Aussentemp.Activity 5:1
TH_Aussentemp.battery 5:2
TH_Aussentemp.datum 5:4
TH_HKRestw.Activity 6:1
TH_HKRestw.battery 6:2
TH_HKRestw.datum 6:4
TH_VLRL.Activity 7:1
TH_VLRL.battery 7:2
TH_VLRL.datum 7:4
WT_Gzi.Activity 43:1
WT_Gzi.battery 43:2
WT_Gzi.batteryLevel 43:3
WT_Gzi.datum 43:4
WT_Wzi.Activity 49:1
WT_Wzi.battery 49:2
WT_Wzi.batteryLevel 49:3
WT_Wzi.datum 49:4
values:
formated:
undef
ARRAY(0x5f16ff0)
ARRAY(0x54dafe0)
ARRAY(0x55ff648)
ARRAY(0x5dfe618)
orig:
undef
ARRAY(0x57f6ee0)
ARRAY(0x521b390)
ARRAY(0x5db1538)
ARRAY(0x59b3890)
prefixsuffix:
undef
ARRAY(0x5d7e2d8)
ARRAY(0x5526428)
ARRAY(0x57057b8)
ARRAY(0x549b868)
Attributes:
group Batteriekontrolle
room Gerate-Report
valueStyle if ($READING eq 'battery') {
if ($VALUE eq 'low'){'style="color:red"';;} elsif ($VALUE eq 'ok') {'style="color:green"';;}
Du musst das ganze noch in geschweifte Klammern setzen
jetzt hab ich verschiedene Klammervariationen ausprobiert und alle werden als fehler erkannt - habe keine Ahnung wo die stehen müssen ? :-[
if ($READING eq 'battery') {
if ($VALUE eq 'low'){'style="color:red"';;} elsif ($VALUE eq 'ok') {'style="color:green"';;}
Am Anfang, vor dem ersten if, und (ganz) am Ende
{if ($READING eq 'battery') {
if ($VALUE eq 'low'){'style="color:red"';;} elsif ($VALUE eq 'ok') {'style="color:green"';;}}}
EDIT: wie trägst Du das im Attribut ein? Dir hat auch noch ein } gefehlt, aber damit hätte nw. Fhem gemeckert.
Die Variante mit 3 Klammern am Ende hat noch gefehlt, aber trotzdem ändert sich die Farbe nicht ? :(
Ich bitte um Entschuldigung, ein Fehler beim Kopieren - es funktioniert. Besten Dank für die super Hilfe !!! :D :D :D
Gruß aus Calw von Peter
Hello,
sorry, dass ich das Thema "aufwärme", aber ich habe ein ganz ähnliches Problem:
Ich habe den Code aus dem Wiki und er hat mir bis letzten Frühjahr gute Dienste geleistet. Ab April wurden meine Heizungsskripte deaktiviert und in der Zwischenzeit FHEM updgedated und MAX! durch HMIP ersetzt. Seit Anfang Oktober bringen mir die Readingsgroups (nach langem Suchen auch identifiziert) PERL Warnings bei "ok" "manual" "closed" - dass sind die Readingvalues, die eigentlich mit ELSE abgefangen werden sollten - die RG funktioniert, allerdings gibt es 8 davon, die mir das Log "zumüllen".
Hier das Listing des Devices:
Internals:
CFGFN
DEF <%sani_heating>,,,,,,,,,
grp.hz.wz:mode,,desired-temp,measured-temp,deviation,humidity,<>,<>,battery
hm.hz.ve.wz.1:mode,<>,desired-temp,measured-temp,deviation,<>,valveposition,state@sen.win.fx.links,battery
hm.hz.ve.wz.2:mode,<>,desired-temp,measured-temp,deviation,<>,valveposition,state@sen.win.fx.rechts,battery
FUUID 6180310d-f33f-6c8f-9856-936293ed66227145
NAME rg.hz.test
NR 297596
NTFY_ORDER 50-rg.hz.test
STATE Initialized
TYPE readingsGroup
changed 0
mayBeVisible 1
CONTENT:
grp.hz.wz 1
hm.hz.ve.wz.1 1
hm.hz.ve.wz.2 1
CONTENT2:
sen.win.fx.links 1
sen.win.fx.rechts 1
DEVICES:
ARRAY(0x9dee118)
ARRAY(0xa1e38f8)
ARRAY(0x9ce9e78)
ARRAY(0x675e3c8)
DEVICES2:
ARRAY(0x9dee118)
ARRAY(0xa1e38f8)
ARRAY(0x9ce9e78)
ARRAY(0x675e3c8)
ARRAY(0x97d4a80)
ARRAY(0x8524ed8)
fhem:
lastDefChange 226
last_update 1635839131.51773
helper:
DEF
nameStyle style="font-weight:bold;;color:blue;;text-align:right"
valueFormat {deviation => '{round($NUM,1)}'}
valueIcon {'mode.auto' => 'sani_heating_automatic@green', 'mode.set_auto' => 'sani_heating_automatic@green' ,
'mode.manual' => 'sani_heating_manual@blue', 'mode.set_manual' => 'sani_heating_manual@blue',
'mode.boost' => 'sani_heating_boost@red',
'mode.closed' => 'general_aus',
'mode.ok' => 'general_an',
'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red',
'state.open' => 'fts_window_2w_open_r@red',
'state.closed' => 'fts_window_2w@green',
'valveposition' => '{my $v=int($VALUE/10)*10; return "sani_heating_level_".$v."@".substr(Color::pahColor(0,50,100,$v,[0,0,255, 140,0,255, 255,0,255, 255,0,140, 255,0,0]),0,6) }' }
valueStyle { if($READING eq "deviation" && $VALUE > 1.5) {'style="color:red"'}
elsif ($READING eq "deviation" && $VALUE <= -1.5) {'style="color:blue"'}
elsif ($READING eq "deviation" && $VALUE >= -1.5 || $VALUE <= 1.5) {'style="color:green"'}
elsif ($READING eq "humidity" && $VALUE >= 45 || $VALUE <= 55) {'style="color:green"'}
elsif ($READING eq "humidity" && $VALUE > 56 ) {'style="color:red"'}
elsif ($READING eq "humidity" && $VALUE < 44 ) {'style="color:blue"'}
else {'style="color:black"'} }
commands:
rg.hm.heizung.wz.sollsetz desired-temp:12.0,16.0,17.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0
mapping:
hm.hz.ve.wz.1 links:
hm.hz.ve.wz.2 rechts:
hm.hz.wt.wz Wohnzimmer:
positions:
grp.hz.wz.battery 2:9
grp.hz.wz.desired-temp 2:3
grp.hz.wz.deviation 2:5
grp.hz.wz.humidity 2:6
grp.hz.wz.measured-temp 2:4
grp.hz.wz.mode 2:1
hm.hz.ve.wz.1.battery 3:9
hm.hz.ve.wz.1.desired-temp 3:3
hm.hz.ve.wz.1.deviation 3:5
hm.hz.ve.wz.1.measured-temp 3:4
hm.hz.ve.wz.1.mode 3:1
hm.hz.ve.wz.1.valveposition 3:7
hm.hz.ve.wz.2.battery 4:9
hm.hz.ve.wz.2.desired-temp 4:3
hm.hz.ve.wz.2.deviation 4:5
hm.hz.ve.wz.2.measured-temp 4:4
hm.hz.ve.wz.2.mode 4:1
hm.hz.ve.wz.2.valveposition 4:7
sen.win.fx.links.state 3:8
sen.win.fx.rechts.state 4:8
valueSuffix:
desired-temp °C
deviation °C
humidity %
measured-temp °C
values:
formated:
undef
ARRAY(0xa206340)
undef
ARRAY(0x7229510)
ARRAY(0x678eea8)
ARRAY(0x738b4a8)
ARRAY(0x6b6c440)
ARRAY(0x7284080)
ARRAY(0x9dd2e20)
ARRAY(0x8fd2550)
orig:
undef
ARRAY(0x7131ef8)
undef
ARRAY(0x8e75dd0)
ARRAY(0x92f5a88)
ARRAY(0x7735e68)
ARRAY(0x78010b8)
ARRAY(0x85f4d18)
ARRAY(0x9defb08)
ARRAY(0x97d7070)
prefixsuffix:
undef
ARRAY(0x6db07e8)
undef
ARRAY(0x9d30b68)
ARRAY(0x4a79d40)
ARRAY(0x77047b0)
ARRAY(0x92ed9f8)
ARRAY(0x92dbbc0)
ARRAY(0x9d25830)
ARRAY(0x9d08360)
Attributes:
DbLogExclude .*
alias Test
commands {'rg.hm.heizung.wz.sollsetz'=>'desired-temp:12.0,16.0,17.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0'}
group 02b_Zimmer
mapping {'hm.hz.wt.wz' => "Wohnzimmer:",'hm.hz.ve.wz.1' =>" links:", 'hm.hz.ve.wz.2'=>" rechts:"}
nameStyle style="font-weight:bold;;color:blue;;text-align:right"
room 30_Heizung,Homematic
valueFormat {deviation => '{round($NUM,1)}'}
valueIcon {'mode.auto' => 'sani_heating_automatic@green', 'mode.set_auto' => 'sani_heating_automatic@green' ,
'mode.manual' => 'sani_heating_manual@blue', 'mode.set_manual' => 'sani_heating_manual@blue',
'mode.boost' => 'sani_heating_boost@red',
'mode.closed' => 'general_aus',
'mode.ok' => 'general_an',
'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red',
'state.open' => 'fts_window_2w_open_r@red',
'state.closed' => 'fts_window_2w@green',
'valveposition' => '{my $v=int($VALUE/10)*10; return "sani_heating_level_".$v."@".substr(Color::pahColor(0,50,100,$v,[0,0,255, 140,0,255, 255,0,255, 255,0,140, 255,0,0]),0,6) }' }
valueStyle { if($READING eq "deviation" && $VALUE > 1.5) {'style="color:red"'}
elsif ($READING eq "deviation" && $VALUE <= -1.5) {'style="color:blue"'}
elsif ($READING eq "deviation" && $VALUE >= -1.5 || $VALUE <= 1.5) {'style="color:green"'}
elsif ($READING eq "humidity" && $VALUE >= 45 || $VALUE <= 55) {'style="color:green"'}
elsif ($READING eq "humidity" && $VALUE > 56 ) {'style="color:red"'}
elsif ($READING eq "humidity" && $VALUE < 44 ) {'style="color:blue"'}
else {'style="color:black"'} }
valueSuffix {"measured-temp"=>" °C", "desired-temp"=>" °C", "deviation"=>" °C", "humidity"=>" %"}
Valuestyle allein:
{ if($READING eq "deviation" && $VALUE > 1.5) {'style="color:red"'}
elsif ($READING eq "deviation" && $VALUE <= -1.5) {'style="color:blue"'}
elsif ($READING eq "deviation" && $VALUE >= -1.5 || $VALUE <= 1.5) {'style="color:green"'}
elsif ($READING eq "humidity" && $VALUE >= 45 || $VALUE <= 55) {'style="color:green"'}
elsif ($READING eq "humidity" && $VALUE > 56 ) {'style="color:red"'}
elsif ($READING eq "humidity" && $VALUE < 44 ) {'style="color:blue"'}
else {'style="color:black"'} }
Wo könnte der Fehler sein? Div. Klammern hab ich schon gecheckt.
Danke aus Wien,
shamal