Hallo,
ich habe mir eine ReadingsGroup gebaut. Diese funtioniert so ganz gut.
Ich habe mir verschiedene Werte eingebaut. Gesamtwert/Tageswert,etc..
Nun habe ich mit
{ return $VALUE if ( $VALUE > 0 );; return undef;;}
ausgeschlossen, dass die 0 Werte angezeigt werden. Das Problem hierbei ist, wenn zum Beispiel im Tageswert nichts drinsteht nimmt er einfach den Monatswert und ignoriert die 0 Werte des Tages. Er verschiebt quasi die Werte nach links. Wie kann ich das auf nur einen Wert beschränken? Oder das Verschieben nach Links verhindern, sodass die Readingsgroup immer die Werte in der Spalte belässt?
Als Beispiel (Was leider nicht funktioniert)
{ "Rechenwert" => {return $VALUE if ( $VALUE > 0 );; return undef;;} }
Mein Reading ist:
<Name>,<Verbrauch>,<Stunde>,<L_Stunde>,<Tag>,<Gestern>,<Monat>,<L_Monat>,<Jahr>
LIC_.*_KWH:Rechenwert,statRechenwertHour,statRechenwertHourLast,statRechenwertDay,statRechenwertDayLast,statRechenwertMonth,statRechenwertMonthLast,statRechenwertYear,
STK_.*_KWH:Rechenwert,statRechenwertHour,statRechenwertHourLast,statRechenwertDay,statRechenwertDayLast,statRechenwertMonth,statRechenwertMonthLast,statRechenwertYear,
TRH_.*_KWH:Rechenwert,statRechenwertHour,statRechenwertHourLast,statRechenwertDay,statRechenwertDayLast,statRechenwertMonth,statRechenwertMonthLast,statRechenwertYear,
Stromverbrauch:$sum,$sum,$sum,$sum,$sum,$sum,$sum,$sum
Als Beispiel - Verbrauch Waschkeller Waschmaschine_links- Diese war heute noch nicht an, Zeigt aber die knapp 18 kwh als Tageswert und nicht als Monatswert an.
Hier mein aktuelles Ergebnis:
Name
Verbrauch Stunde L_Stunde Tag Gestern Monat L_Monat Jahr
Verbrauch Esszimmer Aussenwand_links 0.14 0.001 0.002 0.004 0.138 0.002 0.140
Verbrauch Waschkeller Waschmaschine_links 18.239 18.239 18.239
Hallo,
wirklich niemand eine Idee? Gehe jetzt mal tüfteln. Das wird ja irgendwie gehen.
Gruß
undef heißt in diesem Fall übersetzt so viel wie überhaupt nicht darstellen.
Du willst aber scheinbar eine leere Spalte darstellen, dann sollte hier nicht undef, sondern ein "leerer Wert" zurückgegeben werden ...
Hallo,
ich bin ein Stück weiter aber noch nicht am Ziel.
{return undef if ( $VALUE == 0 && $READING eq "Rechenwert"); return $VALUE;}
Eigentlich müsste nun
return undef if ( $VALUE == 0 && $READING eq "Rechenwert")
bei meinen Readings mit Rechenwert und dem Wert 0 ein Undef geben und damit "ausgeblendet" werden.
Einzeln gestestet klappt das gut. Aber das und && bringt nicht den gewünschten Erfolg. Die 0 Werte werden weiterhin angezeigt.
Jemand eine Idee was ich falsch mache. Verstehe das gerade nicht.
return $VALUE; - wirft bei allen anderen Readings den Wert zurück.
Oder arbeit Pearl und Readingsgroup so, das die 0 in Rechenwert nun angezeigt wird, da die zweite Bedingung nun einen Wert ($Value) auswirft. ALso besser mit einem Filter arbeiten?
Hallo,
kurzes Update. Funktioniert. Der Wert wird abgeschnitten.
{ return undef if ( $VALUE == 0 && $READING eq "Rechenwert"); return $VALUE; }
Allerdings ist das Ergebnis nicht wie ich es mir erwartet habe. Ich denke ich muss doch mit FILTER: arbeiten. Muss mich mal einlesen.
Habs nicht nachvollzogen, nur das hier angeschaut:
{ return undef if ( $VALUE == 0 && $READING eq "Rechenwert"); return $VALUE;}
Und das ist mein ich Käse.
Versuchs mal so in der Art:
{$VALUE == 0 && $READING eq "Rechenwert" ? return undef : return $VALUE;}
edt:
Mein Beitrag ist Käse, das gleiche.
Hallo,
weiß jemand wie ich diesen FILTER richtig anwende. Ziel ist es, dass alle Zeilen, die in der Spalte "Verbrauch" 0 ausweisen nicht angezeigt werden. Am Filter verzweifele ich. So wird alles ausgefiltert. ICh habe noch keine Variante gefunden die das leistet.
<Name>,<Verbrauch>,<Wirkleistung>,<Schalt>,<Stunde>,<L_Stunde>,<Tag>,<Gestern>,<Monat>,<L_Monat>,<Jahr>,<Letzte Aktualisierung>
LIC_.*_KWH:FILTER=Rechenwert>0,state@{_Verbrauch_Aktuell($DEVICE)},state@{_Verbrauch_Schalten($DEVICE)},statRechenwertHour,statRechenwertHourLast,statRechenwertDay,statRechenwertDayLast,statRechenwertMonth,statRechenwertMonthLast,statRechenwertYear,state:t
STK_.*_KWH:FILTER=Rechenwert>0,state@{_Verbrauch_Aktuell($DEVICE)},state@{_Verbrauch_Schalten($DEVICE)},statRechenwertHour,statRechenwertHourLast,statRechenwertDay,statRechenwertDayLast,statRechenwertMonth,statRechenwertMonthLast,statRechenwertYear,state:t
TRH_.*_KWH:Rechenwert,state@{_Verbrauch_Aktuell($DEVICE)},state@{_Verbrauch_Schalten($DEVICE)},statRechenwertHour,statRechenwertHourLast,statRechenwertDay,statRechenwertDayLast,statRechenwertMonth,statRechenwertMonthLast,statRechenwertYear,state:t
DIM_.*_WIZ:Rechenwert,Rechenwert@{_Verbrauch_Aktuell2($DEVICE)},state@{_Verbrauch_Schalten2($DEVICE)},statRechenwertHour,statRechenwertHourLast,statRechenwertDay,statRechenwertDayLast,statRechenwertMonth,statRechenwertMonthLast,statRechenwertYear,state:t
Stromverbrauch:<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,$scalar(:1)>0
Stromverbrauch:$sum,$sum,$sum,$sum,$sum,$sum,$sum,$sum,$sum,$sum
Gruß