stateValue nur auf ein Reading anwenden

Begonnen von netpirat, 30 Oktober 2022, 08:38:48

Vorheriges Thema - Nächstes Thema

netpirat

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

netpirat

Hallo,
wirklich niemand eine Idee? Gehe jetzt mal tüfteln. Das wird ja irgendwie gehen.

Gruß

OdfFhem

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 ...

netpirat

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?

netpirat

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.

TomLee

#5
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.


netpirat

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ß