[Gelöst] Wie Delta Werte im Plot darstellen

Begonnen von Bracew, 09 November 2014, 15:30:39

Vorheriges Thema - Nächstes Thema

kvo1

Hi Bracew,
das mit dem Deltawert find ich auch recht interessant! , habe auch (noch) keine Lösung.
Wäre ja auch für Gas- , Stromverbrauch ganz gut einsetzbar !?

Wenn ich das richtig sehe, liest Du alle 6 Stunden Entfernung/Höhe/Liter ?
Könnte man hier nicht einen Dummy definieren, der immer dem letzten Wert enthält. Von diesen zeihst Du den neu gelesenen Wert ab (Differenz)
und schreibst diese mit in das Logfile !? Ob und wie das funktioniert ?? Keine Ahnung ! Sorry .

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

kvo1

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Bracew

Hallo kvo1,

danke für den Tipp. Ich habe mir darauf hin "average" in der commandref angeschaut.

So wie ich es verstehe, kann ich damit einen Durchschnittswert über alle Tage berechnen lassen. Also, zum Beispiel, wenn der Füllstand am 1. Messwert 3000 Liter wäre und am letzten Messwert=10. Messwert=2500 Liter betragen würde, berechnet das Modul einen durchschnittlichen Tagesverbrauch von (3000-2500)/10=50 Liter.
Dies berechnet mir aber nicht den tatsächlichen Verbrauch pro Tag sondern nur über alle Tage.

Ich denke schon, dass "delta-d" der richtige Ansatz wäre, doch kriege ich keine vernünftige Ausgabe damit hin. Bezogen auf meinen zuvor bereits eingestellten Logfile müsste z.B. der delta-d Wert zum 10.11.2014 sein: 2444-2419=25 Liter. In meiner Excel-Simulation werden diese 25 Liter am 10.11. auch dargestellt.

Von FHEM bzw. .gplot werden diese 25 Liter jedoch nicht geplottet, sondern gar nichts!!!
Und wie ich es auch drehe und wende und probiere bekomme ich den delta-d-Plot nicht hin. HimmelHergottSakramentNochmal, es ist zum aus der Haut fahren.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bennemannc

Hallo,

das mit average ist so nicht richtig. Es berechnet auch den Tagesverbrauch sowie einen Monatsverbrauch.
int_bez 102 2014-12-07 19:02:52
int_bez_avg_day 50.0 2014-12-07 19:02:52
int_bez_avg_month 52.7 2014-12-07 19:02:52
int_bez_cnt_day 73 2014-12-07 19:02:52
int_bez_cnt_month 633 2014-12-07 19:02:52
int_bez_cum_day 3650 2014-12-07 19:02:52
int_bez_cum_month 33340 2014-12-07 19:02:52

Das sind die Werte, die ich bei average bekomme avg ist der Durchschnitt, cnt sind die Anzahl der Werte, cum ist die Summe der Werte. Mit einem at um kurz vor Mitternacht
Zitat*23:59:40 {
my ($val,$t1,$t2);
$val = (fhem "list SWAP_F1 int_bez_cum_day");
$val =~ s/\n$//g;
$t1 = "Bezug";
$t2 = substr ($val, index($val,":")+6,10);
fhem "trigger Energy_Day $t1 $t2";}
schreibe ich die Daten in ein eigenes Log - in Deinem Fall müssten die im gleichen Log wie die anderen Daten stehen.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Bracew

Hallo Bennemannc,

aber ist "avg_day" nicht der Durchschnitts-Tages-Wert deiner letzten Messungen? Ich möchte ja nicht den Durchschnitts-Tages-Wert, sondern den Tages-Wert als Differenz zur jeweils letzten Messung. Also eigentlich auch nicht nur einen Tages-Wert sondern für genaus so viele Werte wie Tage im Log.

Leider habe ich auch nicht verstanden, wie ich average so richtig in die fhem.cfg bekomme.
Ich habe eben mal "define TestAVG average HeizoelHerthFileLog" reingesetzt.
Wie kann ich nun den avg_day ansehen bzw. plotten?
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bennemannc

Hallo,

average benötigt ein Reading - auch wenn es nur ein Dummy ist - auf der fhem Seite. Dann erstellt man den average auf diese Reading und erhält im Device die erweiterten Readings - cum cnt avg.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Bracew

Hallo Bennemannc,

Entschuldigung, aber ich verstehe nur Bahnhof. Ich bin leider kein "Hero Member" sondern nur "Newbie" in FHEM.

Wenn ich Dich richtig verstehe kann FHEM über das average Modul den Tagesverbrauch ermitteln und nicht nur den Mittelwert aller Eintragungen in der Log-Datei bezogen auf eine Zeit-Einheit. Kannst Du mir das konkreter Beschreiben, was ich tun muss um dahin zu kommen?

Mit lieben Grüßen zum 2. Advent
Bracew

FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bennemannc

Hallo,

einfach eine Reading mit average definieren:
define Summe_Bezug average SWAP_F1:int_bez.*
attr Summe_Bezug computeMethod counter
attr Summe_Bezug nominmax 1
attr Summe_Bezug room Unsorted

Damit werden zu einem vorhanden Reading (in meinem Fall Device SWAP_F1, reading int_bez.*) weitere Readings erzeugt -cum, cnt, avg - ind bei dem Device angezeigt. Das cum_day speichere ich kurz vor Mitternacht in eine Log-Datei, da diese ja um 24:00 zurück gesetzt wird.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Bracew

Hallo,

ich habe:
define TestAVG average HeizoelFileLog:Liter.*
attr TestAVG computeMethod counter
attr TestAVG nominmax 1
attr TestAVG room Unsorted

in fhem.cfg eingefügt.

kann ich so auf das fakelog der Log-Datei mit dem Liter Wert zugreifen?
und nun?

Tut mir leid, wenn ich Dich unterfordere.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bracew

#24
Ich habe mir nochmals die commandref durchgelesen:
Compute additional average, minimum and maximum values for current day and month.

Demnach bekomme ich doch nur den Mittelwert (average) für den heutigen Tag.
Ich verstehe immer noch nicht wie mir das weiterhelfen kann. Ich brauch doch den Verbrauch für viele rückliegende Tage und der jeweilige Tagesverbrauch ist doch nicht der Mittelwert, sonder der Füllstand in Liter von gestern minus den Füllstand in Litern von heute.

Ich bin immer noch nicht davon überzeugt, dass dieses Modul der richtige Weg ist - sondern bin eher der Meinung, dass dies der Holzweg ist.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bennemannc

Hallo,

wie ich schon geschrieben habe, benötigst Du ein aktives Reading. Mit nominmax 1 werden keine Minnimal und Maximal Werte ermittelt. Wenn sich das (aktive) Reading ändert, werden direkt der aktuelle Mittelwert (für Dich nicht interessant) ermittelt, der Counter hochgesetzt (+1) und eine Summe auf das Reading gebildet. Das jeweils für den aktuellen Tag und Monat.
Diese Werte sind erst einmal nur als (Zusätliche) Readings vorhanden. Um den Tageswert in die Logdatei zu bekommen, nutze ich at und das Perlscript kurz vor Mitternacht.

Du kannst das Ganze ja einfach mal mit Temperatur ausprobieren (hier machen dann Summe und Anzahl keinen Sinn).

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Bracew

Hallo Bennemannc,

danke für Deine Geduld mit mir.

Zunächst mal zu den Basics. Wie bekomme ich ein aktives Reading. Ich lese die Messwerte ja nur aus einer fremden Datei ein. Die Werte sind nicht mit FHEM gemessen und geschrieben worden. Das Logfile wurde extern erstellt.

Du schreibst: "...Wenn sich das (aktive) Reading ändert...". Dies ändert sich bei mir, wenn eine neue Zeile vom Fremdprogramm in das Log geschrieben wird, also zur Zeit alle 6 Stunden (jeweils ca. 10 Minuten nach 0:00 Uhr, nach 06:00, nach 12:00 Uhr und nach 18:00 Uhr).

Ich denke Du willst darauf hinaus, dass "...eine Summe..." von Minutenverbräuchen aufaddiert wird (Summenbildung) und die Summe vor Mitternacht in eine andere Logdatei geschrieben werden sollte, welche den Tagesverbrauch darstellen würde und die ich dann wiederum graphisch auswerten könnte. Ich benötige jedoch keine Summe, sondern den Tagesendwert des Vortages abzüglich den Tagesendwert des laufenden Tages, also den Wert des Füllstandes in Litern von ca. 0:10 Uhr des Vortages abzüglich den Wert des Füllstandes in Litern von ca. 0:10 Uhr des laufenden Tages. Beide jeweiligen Werte voneinander subtrahiert ergeben den jeweiligen Verbrauch des Tages für den ersten Tag. Diese Prozedur müsste dann für alle Tage im Log durchgeführt werden, oder zumindestend für den letzten Tag um den Tagesverbrauchswert der 2. Logdatei hinzu zufügen.

Bei Temperaturen kann ich mir das Vorstellen. Die minimale Temperatur, die maximale Temperatur eines Tages und auch die Durschnittstemperatur eines Tages zu wissen macht gewiss Sinn und kann man in eine Logdatei schreiben so sie denn unter des Tages von FHEM gemessen wurden. Aber in meine Fall sehe ich nicht, wie ich auf den Tagesendwert des Vortages und den Tagesendwert des laufenden Tages zugreifen und damit pro Tag den Verbrauch ermitteln kann. Zumal ich diese Berechnung dann für viele Tage (Anzahl der Tage im Log) durchführen müsste.

Vielleicht sehe ich aber auch den Wald vor lauter Bäumen nicht.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bennemannc

Hallo,

Die Summe der Einzelverbräuche über den Tag ist doch genau so groß, wie die Differenz zwischen Anfangs- und Endwert.

Beispiel:
Anfang 10, alle 4 Stunden ein Reading - 3,6,7,2 - Endstand 28 => 28 - 10 = 18 (das möchtest Du rechnen) aber 3+6+7+2 = 18 (das macht average) - unterm Strich kommt das Gleiche raus.

Average addiert die kommenden Reading (Summe der Tagesverbrauchs) das ist doch einfacher als irgendwo zu suchen "wo ist mein Anfangsstand und wo mein Endstand"

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

ojb

#28
Hallo Bracew,

ich hänge zur Zeit mit einem gebrochenen Zeh zu Hause rum und Dein Problem hat mich jetzt nicht losgelassen, so dass ich jetzt ca. ne Stunde investiert hab.

Ich denke ich hab Dein Problem gelöst (siehe Screenshot), auch wenn das ganze echt fies war.

Wie gesagt, bei mir funktioniert das mit dem delta-d einwandfrei. Ich habe jetzt mit Deinem Logfile und .gplot rumgespielt und bin fast wahnsinnig geworden weil es einfach nicht klappen wollte.

Ich bin dann hergegangen und habe ganz einfache Logs selber gemacht und experimentiert und kam auf ein ganz fieses Problem, man könnte es sogar Bug nennen.

To make a long story short:
delta-d akzeptiert nur positive Deltas, sobald man negative Delta's hat wird 0 ausgegeben. Das erklärt auch Deinen Verlauf.

Allerdings wird ein negatives Delta ja positiv, wenn die Werte alle negiert werden.

Ich habe also in Deinem Logfile vor jedem Literwert ein Minus geschrieben:
2014-11-11_18:10:24 Entfernung: 82.7 cm  Fuelhoehe: 79.1 cm  Liter: -2374 l
2014-11-12_00:10:56 Entfernung: 82.5 cm  Fuelhoehe: 79.4 cm  Liter: -2381 l
2014-11-12_06:11:00 Entfernung: 82.5 cm  Fuelhoehe: 79.3 cm  Liter: -2378 l


Und schon funktioniert das ganze.

Was mir noch aufgefallen ist, dass in Deinem Log trotz Verbrauch die Werte manchmal zunehmen, dürfte wahrscheinlich auf das Messverfahren zurückzuführen sein.

Beispielsweise hier am 23.11.2014:
2014-11-23_00:10:46 Entfernung: 27.7 cm  Fuelhoehe: 134.1 cm  Liter: 4022 l
2014-11-23_06:10:54 Entfernung: 27.4 cm  Fuelhoehe: 134.4 cm  Liter: 4032 l
2014-11-23_12:10:47 Entfernung: 27.2 cm  Fuelhoehe: 134.6 cm  Liter: 4037 l
2014-11-23_18:10:53 Entfernung: 27.4 cm  Fuelhoehe: 134.4 cm  Liter: 4031 l


Du startest mit 4022 und endest mit 4031 Litern also 9 Liter mehr.

Ich würde nun an Deiner Stelle folgendermaßen vorgehen:

Generiere ein zweites Logfile mit einem Wert pro Tag und schreibe vor den Liter-Werten jeweils ein Minus.

Kann man ganz einfach mit einem Shell-Befehl machen:
tac Heizoel.log | uniq -w 10 | tac | sed s/"Liter: "/"Liter: -"/g > Heizoel-Delta.log

Dann bekommst Du so was
2014-11-12_18:10:48 Entfernung: 82.8 cm  Fuelhoehe: 79.0 cm  Liter: -2369 l
2014-11-13_18:11:27 Entfernung: 83.8 cm  Fuelhoehe: 78.0 cm  Liter: -2340 l
2014-11-14_18:10:50 Entfernung: 84.1 cm  Fuelhoehe: 77.7 cm  Liter: -2332 l


Dieses Script kann man zweitgesteuert von FHEM zu sinnvollen Zeiten ausführen lassen.

Und dann mit delta-d ein Plot auf Heizoel-Delta.log und fertig ist das Kunststück.

Liebe Grüße
Oli



FHEM unter Debian auf Asus EEBox: KNX (Wetterstation, Rollläden, Beleuchtung), Maple-CUN (Temperatur und Feuchte über 1-Wire, Intertechno-Funksteckdosen), PV-Anlage mit Plenticore und BYD, Viessmann Wärmepumpe, 1-Wire (Temperatur, Feuchte, Stromverbrauch), Husquarna-Automower, ...

Bracew

Hallo,

@Bennemannc:
Du hast recht, aber ich auch, denn ich habe keine Einzelverbräuche. Ich habe nur den Füllstand in Litern.
Hier nochmal einen Auzug aus dem Log:

2014-11-08_12:10:24 Entfernung: 80.4 cm  Fuelhoehe: 81.4 cm  Liter: 2441 l
2014-11-08_18:10:25 Entfernung: 80.2 cm  Fuelhoehe: 81.6 cm  Liter: 2447 l
2014-11-09_00:10:23 Entfernung: 80.3 cm  Fuelhoehe: 81.5 cm  Liter: 2444 l
2014-11-09_06:10:32 Entfernung: 80.9 cm  Fuelhoehe: 80.9 cm  Liter: 2426 l
2014-11-09_12:10:24 Entfernung: 80.8 cm  Fuelhoehe: 81.0 cm  Liter: 2429 l
2014-11-09_18:10:24 Entfernung: 81.3 cm  Fuelhoehe: 80.5 cm  Liter: 2414 l
2014-11-10_00:10:35 Entfernung: 81.2 cm  Fuelhoehe: 80.6 cm  Liter: 2419 l
2014-11-10_06:10:23 Entfernung: 81.2 cm  Fuelhoehe: 80.6 cm  Liter: 2417 l


Ich greife mal den 09.11. oben aus dem Log raus.
Am Anfang des Tages, also am 09.11.2014 um kurz nach Mitternacht (00:10:23 Uhr) ist der Füllstand 2444 Liter.
Am Ende des Tages, also am 10.11.2014 um kurz nach Mitternacht (00:10:35) ist der Füllstand 2419 Liter.
Der Verbrauch berechnet sich also zu 2444-2419=25 Liter am Tag für den 09.11.2014.
Es gibt kein Reading mit dem Verbrauch alle 6 Stunden, sondern nur eine Inhaltsangabe der Restmenge. Das "3+6+7+2" gibt es so nicht! Und leider habe ich auch noch keinen Weg gefunden, den Logfile in der Art zu ändern, dass ich damit das average-Modul füttern könnte.

@ojb:
Oooooh jeeeee, das tur mir leid mit Deinem Zeh!!!  ;)
Ich wünsche Dir gute Besserung und baldige Genesung.
Es hat allerdings auch etwas für sich, das mit Deinem gebrochenen Zeh. Denn so hattest Du Zeit.
Das mit dem Wahnsinnig geht mir auch so. Ich freue mich jedoch, dass es bei Dir funktioniert hat. Das gibt mir Mut!
Ich bin den Tag über an der Arbeit. Sobald als möglich versuche ich Deine Lösung. Auf den ersten Blick sieht das sehr, sehr gut aus.
Die Logwerte schwanken ein wenig aufgrund der Messtoleranzen und natürlich, weil ich zwischendurch einmal den Tank gefüllt habe. Wenn der Tank voll ist, ist der Mindestabstand des Messfühlers zur Öloberfläche unterschritten. Aufgrund der Ultraschall-Messung läuft der Impuls so kurz, dass nicht mehr genau genug gemessen wird.
Ich gebe Rückmeldung, wenn ich Deinen Ansatz ausprobiert habe und bis dahin wünsche ich wenig Langeweile.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe