Hallo,
ich hab folgende readingsGroup definiert, um Energiewerte in einer Tabelle zu veranschaulichen. Gelegentlich kommt es vor, dass die zugrunde liegenden Device nicht einen Wert von "0.000" sondern von "-0.000" - also einen negativen Nullwert - liefern.
Wie kann ich es in der Darstellung verhindern,dass "-0.0" angezeigt wird?
defmod Heat_pumps readingsGroup <Device>,<day>,<day<br/>last>,<month>,<month<br/>last>,<year> NAME=myHeishaelectricity|myHeishaheat|myDaikinPerferaCalculator|myVaillantaroSTORCalculator|myFujitsuCalculator:?alias,.*EnergyDay:r1,.*EnergyDayLast:r1,.*EnergyMonth:r0,.*EnergyMonthLast:r0,.*EnergyYear:r0
attr Heat_pumps alias <span style='color:#696969'><b>Heat pumps [kWh]</b><span/>
attr Heat_pumps cellStyle {"c:1" => 'style="font-weight:bold;;color:#2E5E87;;"'}
attr Heat_pumps nameStyle style="font-weight:bold;;color:#2E5E87"
attr Heat_pumps nonames 1
attr Heat_pumps sortDevices 1
attr Heat_pumps valueStyle {if ($READING =~ "EnergyDay" and $READING !~ "EnergyDayLast" \
and (($DEVICE =~"myHeisha" and ReadingsNum('HeishaMon_main','Heatpump_State','') == 1) \
or ($DEVICE eq "myDaikinPerferaCalculator" and ReadingsVal('DaikinCloud_DaikinAP09627','onOffMode','') eq "on") \
or ($DEVICE eq "myVaillantaroSTORCalculator" and ReadingsNum('VaillantaroSTOR','Power_W','') > 50) \
or ($DEVICE eq "myFujitsuCalculator" and ReadingsNum('Fujitsu','Power_W','') > 30))) \
{'style="color:magenta;;font-weight:bold;;"'}}
Alle meinen bisherigen Versuche waren im besten Fall wirkungslos oder haben die Darstellung der Tabelle zerstört.
Viele Grüße Gisbert
valueFormat {$VALUE += 0} ?
Zitat von: Wzut am 26 Februar 2026, 17:06:00valueFormat {$VALUE += 0} ?
Ne, leider nicht. Mit valueFormat hab ich etliche Versuche durch.
Dein Vorschlag sowie viele meiner hier nicht genannten endeten mit dem Verschwinden der Devicenamen.
Viele Grüße Gisbert
ja wenn du das direkt so nackt da reingesetzt hast ....
du must natürlich noch testen ob das $DEVICE und / oder $READING zu dem -0.0 Wert passt, also in der Form
{ if ($READING eq 'keine Ahnung') {$VALUE += 0}}
ich nehme für sowas die Perl Funktion abs (absolute)
valueFormat {abs($VALUE)}
Hallo Wzut,
dein Vorschlag funktioniert im Prinzip, allerdings geht bei Nullwerten die Nachkommastellen verloren. So ist die Optik einheitlich zu den anderen Werten mit einer Nachkommastelle:
{if ($READING =~ "EnergyDay") {round($VALUE += 0,1)}}
Hallo JudgeDredd,
deinen Vorschlag hatte ich vorher schon vergeblich getestet - da habe ich in der 1. Spalte nur Nullen statt der Devicenamen stehen. Warum - keine Ahnung.
Viele Grüße Gisbert