Stundenmittelwerte ermitteln und in Log schreiben

Begonnen von tetzlav, 11 März 2013, 23:05:32

Vorheriges Thema - Nächstes Thema

oniT

Hallo,

ZitatVersuch mal
attr global verbose 2
zu setzen.
Evtl. ist ja dann Ruhe (wobei die Logeinträge ja keine Nummer haben und daher evtl. nicht unterdrückt werden können).

Sorry, aber da bin ich mal aufgrund Unwissenheit leider raus (aber ich les noch mit weil ich gerne dazu lerne).

Grüße

attr global verbose 2

Damit sind die Einträge zunächst weg. Das hilft zumindest erstmal um die Einträge zu verringern. Und ja genau das ist das Problem was ich ebenfalls sehe, die Logeinträge haben keine Nummer. Von daher nehme ich an, dass diese durch die fhem Dateiabfrage kommen.

Ja ich lese auch überall mit, da ich ebenfalls noch ziemlich unwissend bin. In diesem Fall hatte ich bereits eine andere Art der Mittelwertermittlung programmiert. Allerdings finde ich diese aus einem Logfile recht gut, da man hierüber mehr Möglichkeiten hat.

Danke

Gruß,
TinoB

BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Puschel74

Hallo,

wofür brauchst du die Mittelwerte?

Schreibst du die wieder in das Logfile?

Brauchst du die nur zur Anzeige?
Dann solltest du dir evtl. mal eine andere Möglichkeit der Plot-Darstellung anschauen - aber das kommt auf deine Hardware an auf der fhem läuft.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

oniT

Hallo Puschel,

ja richtig. Diese werden wieder in ein Logfile geschrieben.

Ich habe eine Fritzbox. Diese Entscheidung hatte ich getroffen um 1. zunächst erst einmal ein Gefühl für das System fhem zu bekommen und 2. der einfachere Einstieg gegenüber einem anderen System ist. Ob ein Raspi besser ist, kann ich nicht beurteilen. Nachteil der Fritzbox ist halt, der Prozessor stößt an seine Grenzen da dieser ja noch etwas anderes zu tun halt als fhem :-)

Einen Vorteil dieser Art der Speicherung der Logfiles, sehe ich in der Dateigröße. Das System mit einer Datenbank verbraucht einges mehr an Speicherplatz. Das wohl zu bevorzugenste System ist die RRD Datenbank. Diese benötigt wenig Speicherplatz und die Daten können schnell abgerufen werden. Allerdings kenne ich mich damit noch nicht aus.

Hier mal ein Auszug aus einer Grafik von der Heizung bisher. Mal sehen was man damit noch so auslesen kann.

Plotergebnis


Gruß,
TinoB
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Puschel74

Hallo,

also ein RasPi ist gut angelegtes Geld (für das Geld) - wenn man das so bezeichnen kann (finde ich).

Ich hab sqlite3 am RasPi laufen der selbst die Daten von 3 I2C-Sensoren abfragt und per FHEM2FHEM mit meinem Main-FHEM-RasPi verbunden ist.
Obwohl das alles auf einem RasPi laufen könnte - aber wo bleibt der Spieltrieb^^
Von dort bekommet er alle Daten per FHEM2FHEM geliefert und schreibt die auf seine SD-Karte weg.
Per Chart-Frontend greife ich auf die Daten des 2. RasPi zu (der mit den I2C-Sensoren) und suche mir gemütlich aus was ich sehen will.
Tagesplot - hätte ich gerne die zeitnahen Werte der Sensoren (je nach Sensor auch der Hour-Sum bzw. -Avg).
Wochenplot - reicht mir bei Strom/Gas/Wasser der Day-Sum (also der täglich summierte) Wert oder Day-Avg (also Durchschnitt) bei Temperatur/Feuchte.
Monatsplot - reicht mir der Week-Sum/Week-Avg (oder auch mal Day-Sum/Day-Avg wenn ich Zeit habe) aber da sieht man dann (für mein Empfinden) zuviel (oder zuwenig - je nach Sichtweise).
Jahresplot - ... (the same)

Wenn du eine 7390 hast gibt es von Juri (glaube ich) eine Anleitung wie du das Chart-Frontend installiert bekommst.
Wenn du dir einen RasPi zulegen willst gibt es von mir eine "Anleitung" (so schwer ist das zum Glück nicht) wie du sqlite3 zum laufen bekommst.
Wenn die Daten mal gesammelt sind kommen erst die Wünsche die Erkenntnisse auch in die Steuerung einfliessen zu lassen.

Nur als Beispiel (nicht zur Nachahmung empfohlen ;-) ).
Ich war so frei und hab mir den Strombedarf unserer Laptops an einem CUL_EM geloggt.
Danach eine FS20-ST davor und seither habe ich eine Ladeschaltung programmiert die unsere Laptops aufladet.
Wenn kein Ladebedarf besteht schaltet die FS20-ST wieder aus und wenn Strom gezogen wird wird geladen bis ein programmierter Wert unterschritten wird.
Das sieht dann so aus:

(siehe Anhang / see attachement)

Ohne das Frontend wäre ich nie soweit gekommen weil ich einfach nur zu faul bin um mich in die Interna von den Fhem-Plots einzulesen (und weil ich auch zu faul war auf Jahreslogs umzustellen - diese hab ich aber mittlerweile in der DB ;-) ).
Nur ist die Auswahl an zu sehenden Daten im Frontend einfacher gelöst - finde ich (sorry Rudi - wobei da ja mittlerweise einiges gegangen ist).

Aber jeder sollte das machen was er für besser empfindet - bis er was anderes sieht ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

oniT

Hi,

ja das mit dem Raspi habe ich mir auch schon für den kommenden Winter vorgenommen. Vorher wird das im Momoment nichts. Das Chart Frontend habe ich zum Testen auf einem Ubuntu PC laufen.

Hast Du das sqlite3 im Wiki? Sorry, ich habe jetzt nicht nachgesehen. Wie werden die Logfiles dann gespeichert? Also in welchem Format? Und damit kann man dann die Durchschnittswerte gleich komplett auslesen?

Von der Sache benötige ich das System nicht zum Spielen, sondern Endziel muss ein Energiemanagement sein. PV-Anlage, Beschattung, Wärmepumpe, Lüftung, Stromzähler einbinden und entprechend Verbraucher wenn möglich in eine andere Uhrzeit verschieben etc. ... Keine Spielerein mit Licht schalten. Bei der Lüftung und Wärmepumpe sieht es schon recht gut aus. An der PV-Anlage hängt es gerade.

Wenn ich dann immer einen Schritt weiter bin, muss das natürlich in's Wiki. Zumindest habe ich mir das so vorgenommen ;-)

Gruß,
TinoB
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Puschel74

Hallo,

Johannes hat den Wiki-Eintrag gemacht.
Ich war nur so frei und hab meinen klitzekleinen Beitrag für den RasPi dazu geleistet:

http://www.fhemwiki.de/wiki/Neues_Charting_Frontend

Wenn du etwas nach unten scrollst hast du die Anleitung von Puschel ^^

Das sollte aber evtl. auch auf Ubuntu (Wheezy ist ja Debian) übertragbar sein wenn die Pfade nicht all zu sehr abweichen.
Sonst findest du sicher ne Installationsanleitung für sqlite3 im Netz für Ubuntu.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

TeeVau

Hallo,

ich nutze seit gestern ebenfalls die Funktion myAverage aus dem Wiki (http://www.fhemwiki.de/wiki/Relative_Mittelwerte_berechnen_und_loggen).
Hat jemand inzwischen eine Lösung gefunden, dass verhindert wird, dass die Einträge vom FileLog noch einmal ins FHEM-Log geschrieben werden?
Ich errechne alle 20 Minuten einen Mittelwert der letzten 3 Stunden und das füllt das FHEM-Log doch sehr.
global verbose auf 2 zu setzen ist keine wirklich Option, da ich damit auch andere Meldungen unterdrücke.

Komisch ist, dass nur in das FHEM-Log geschrieben wird, wenn die Funktion myAverage() aufgerufen wird. Führe ich zum testen den get-Befehle manuell aus, wird das nicht ins FHEM-Log geschrieben. Scheint also irgendwie an der Kombination zu liegen, dass der get-Befehle aus der Routing myAverage kommt, welche in der 99_myUtils.pm liegt.

Grüße, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

tetzlav

Ich habe da auch mal etwas tiefer in den Perl-Untiefen von FHEM gestöbert, aber leider noch keine Lösung gefunden.

Ich verstehe auch nicht von welchem Codeteil genau das Schreiben ins Logfile getriqqert wird und warum es bei Loglevel 2 nicht mehr erfolgt. Vllt. liest hier jmd. mit der fhem besser kennt als ich...

ChrisD

Hallo,

Ich hatte das gleiche Problem und habe den Code wie folgt geändert:

Die Zeile

my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
habe ich durch

my $oll = $attr{global}{verbose};
 $attr{global}{verbose} = 0;
 my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
 $attr{global}{verbose} = $oll;

ersetzt (aus 01_FHEMWEB.pm abgeschaut). Dadurch wird temporär Verbose auf 0 gesetzt und es erscheinen keine Einträge im Log. Der ursprüngliche Wert wird nach dem Aufruf des Get sofort wieder zurückgesetzt.

Grüße,

ChrisD

tetzlav

Zitat von: ChrisD schrieb am Mo, 12 August 2013 20:38 my $oll = $attr{global}{verbose};
 $attr{global}{verbose} = 0;
 my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
 $attr{global}{verbose} = $oll;
Nicht wirklich schön, aber funktioniert. Vielen Dank! Habs gleich im Wiki angepasst...

swifty

Hallo,

ich versuche auch einen Mittelwert zu berechnen  :D

Allerdings verstehe ich die Definition der $cspec nicht und habe auch nichts gefunden.

Mein Logfile sieht ca. so aus:
2014-04-08_20:45:47 KWL_Pdiff_KWL -0.03
2014-04-08_20:55:47 KWL_Pdiff_KWL 0.03
2014-04-08_21:05:48 KWL_Pdiff_KWL 0.04
2014-04-08_21:15:48 KWL_Pdiff_KWL 0.04


Ich hätte erwartet, dass mit:
{myAverage("7200", "KWL_Pdiff-2014.log", "KWL_Pdiff_KWL:")}

my average antwortet aber:
2014.04.08 21:32:12 3: myAverage: File: KWL_Pdiff-2014.log, Field: KWL_Pdiff_KWL:, Period: 2014-04-08_19:32:12 bis 2014-04-08_21:32:12, Count: 1, Cum: 0, Average: 0.0

weiß jemand, wie cspec funktioniert, oder was ich einstellen muss?

Jan


oniT

#26
Hallo swifty,

wenn Du nur die Werte von einem Device im Logfile hast, funktioniert es so. Allerdings darfst Du nicht den Dateinamen (KWL_Pdiff-2014.log) vom Logfile, sondern nur den Namen eintragen.


{myAverage("7200", "KWL_Pdiff-2014.log", "3:::")}


Wenn es jedoch Werte von mehreren Device vorhanden sind (wie in dem anderen Thread), dann funktioniert es nicht. Dafür suche ich noch eine Lösung.

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

swifty

danke.

die Definition habe ich gerade doch noch gefunden, steht sogar in der command ref unter Filelog...

http://192.168.178.52:8083/fhem/docs/commandref.html#FileLog   

swifty

Hallo,

bei mir funktioniert es nicht. Aber da ist irgendwo noch etwas anderes faul.

Um mit Logfiles mit verschiedenen devices klarzukommen sollte man glaub ich nur eine regexp einfügen denn die cspec im Filelog sagt:
Syntax: <col>:<regexp>:<default>:<fn>

Also z.B. (ungetestet)
{myAverage("7200", "KWL_Pdiff-2014.log", "3:DeviceName.*::")}

Jan



oniT

Hallo swifty,

also wenn Du nur den Eintrag von einem Device im Logfile hast, dann kannst Du den DeviceNamen weglassen.


{myAverage("7200", "KWL_Pdiff-2014.log", "3:::")}


Und dann darfst Du nicht den Namen vom Logfile (KWL_Pdiff-2014.log) eintragen, an der Stelle muss der "Define Namen" stehen.

Gruß,
Tino

BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP