Hauptmenü

Höchstwert

Begonnen von Bjoernar, 27 Juni 2016, 13:36:43

Vorheriges Thema - Nächstes Thema

Bjoernar

Hallo,

ich möchte gerne den Höchstwert für meine PV Anlage mit Datum loggen.
Momentan mache ich das über ein notify das prüft ob der Aktuelle wert höher ist als der alte.

define n_Wechselrichter1_Max_Leistung notify Wechselrichter1:Power__W.* {\
  my $temp=ReadingsVal("Wechselrichter1","Power__W","0");;;;\
     if ($temp > Value("Wechselrichter1_Max_Leistung") ) {\
     fhem("set Wechselrichter1_Max_Leistung $temp");;;;\
     }\
}


Ist das so der richtige weg?

Gruß
Björnar

Ellert

Warum nicht, wenn es funktioniert. Es gibt aber auch die Funktion maxNum(Wert1,Wert2).

Du könntest ein userReading im Wechselrichter1 anlegen, dann sparst Du das notify.

Bjoernar

Das gefällt mir besser. Schau ich mir an

Bjoernar

Morgen,

dachte es müsste so klappen:

attr Wechselrichter1 userReadings Max_Power__W {maxnum(ReadingsVal("Wechselrichter1","Power__W","0"))}

Leider kommt da aber nur das Error evaluating Wechselrichter1 userReading Max_Power__W: Undefined subroutine &main::maxnum called at (eval 21869) line 1. dabei raus.

Gruß
Björner

CoolTux

maxNum(Wert1,Wert2).

Case sensitiv
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Bjoernar


Bjoernar

...liefert doch nicht den Höchstwert sondern immer den Aktuellen.

Max_Power__W {maxNum(ReadingsVal("Wechselrichter1","Power__W","0"))},

Kann es sein das die Funktion nur den höchsten Wert von einer Anzahl von Readings liefert und nicht den höchsten Wert von einem Reading.

marvin78

So ist es. Wie hier im Thread beschrieben, kannst du der Funktion Werte übergeben und aus diesen wird dann der höchste Wert ermittelt.

Was du willst, ist offenbar etwas anderes (was du aber nicht wirklich gut ausgedrückt hast). Wenn du so etwas machen möchtest, kannst du entweder das fertige statistics Modul verwenden (siehe commandref) oder eine eigene sub dafür bauen und in userReadings verwenden. Dafür musst du dir aber erst einmal im klaren darüber sein, was du eigentlich möchtest. So einen Höchstwert ermittelt man ja nicht ins Blaue. Man möchte ja sicher auch noch einen Zeitraum definieren, aus dem dieser Höchstwert kommen soll.

Es geht aber auch mit maxNum. Du musst nur den alten Höchstwert kennen (also zwischenspeichern mit setreading).

Bjoernar

ZitatIch möchte gerne den Höchstwert für meine PV Anlage mit Datum loggen.

Ist doch eigentlich klar, oder? Der Höchste Wert der je erreicht wurde und wann das war.

Zitat...alten Höchstwert kennen
der steht ja in dem Reading.

Hast du ein Beispiel für mich?

CoolTux

Was Du machen möchtest nennt man Statistik. Und Statistiken werden in der Regel über einen gewissen Zeitraum erhoben.

Was du machen kannst, wenn dich über Jahrhunderte nur der jemals festgestellte Höchstwert interessiert, ist den alten gegen den neuen Wert zu vergleichen. Und wenn der neue höher ist wie der alte ein userReading zu schreiben.
Und nein du hast nicht den alten Wert. Eine Aktion, schreiben eines User Readings zum Beispiel, ist Eventbasiert. Das setzen eines Readings kann so ein Event sein, doch dann steht schon der neue Wert im Reading. Daher den alten irgendwohin schupsen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

marvin78

#10
Ein Beispiel steht doch oben. maxNum nimmt den (alten) Höchstwert und den neuen Wert/die neuen Werte auf (in der Reihenfolge). Wenn der alte Wert in einem Reading steht:

Max_Power__W {maxNum(ReadingsVal("Wechselrichter1","ALTERWERT","0"), ReadingsVal("Wechselrichter1","Power__W","0"))}

Andernfalls musst du dir den alten Wert "schaffen". Dazu wurde hier ja aber schon etwas gesagt.

Ein wenig Mitdenken ist schon erlaubt. Die Funktionen der Utils sind übrigens in der commandref beschrieben!

Edit: für den Zeitpunkt ist dann timestamp-on-change-reading sicher hilfreich.

CoolTux

Marvin ich glaube Du hast vergessen zu sagen wie das Reading ALTERWERT zu Stande kommt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

marvin78

#12
Er sagte ja, er hätte ihn. Das muss ich glauben. ;)

Und eigentlich habe ich das schon gemacht. setreading war das Stichwort.

CoolTux

#13
Voll der geheime Geheimtext nur für Marvin mit spezieller Brille richtig zu lesen



Grüße
Leon

(auch nicht mein richtiger Name, verrate ich aber gerne mal per PM oder Mail)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Icinger

Bjoernar, du kannst dir aber auch das statistics-Modul mal zu Gemüte führen.
Da könntest du dann auch Tage, Wochen, Monatsweise jeweils den höchsten, niedrigsten, Mittel-Wert usw bekommen.
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho