FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: ritchie am 29 August 2013, 22:49:15

Titel: Schreiben in eine bestehende FileLog Datei
Beitrag von: ritchie am 29 August 2013, 22:49:15
Hallo Zusammen,

derzeit arbeite ich an der Erstellung eine Grafik, welche auch Schaltspiele mit im Trend zeigt.

Bei mir wäre das Brenner, Umwälzpumpe  mit ein/aus (0/1) als Rechteck.

Hier schon mal der Teil, welche in die LogDatei schreibt. Die entsprechende Trigger Routine ist noch im Test,
da ich derzeit das Signal nicht simulieren kann, warte ich immer, bis morgens die Heizung kurz anspringt.

#
# Append a line of data at the given file name
#
# Sample of call : MyFileLog("/media/usbstick/log/klHeizungTemperatur-%Y.log","klHeizungRuecklaufTemperatur","temperature","99.0")
#
sub MyFileLog($$$$)
{
my $LogFileName = shift;
my $Tagname = shift;
my $ReadingName = shift;
my $Value = shift;
my $Fname = "";

my $dt = strftime("%Y-%m-%d %H:%M:%S", localtime(time));
$Fname = strftime($LogFileName, localtime(time));
open(my $fd, ">>".$Fname);
print $fd "".$dt." ".$Tagname." ".$ReadingName.": ".$Value."\x0D\x0A";
close($fd);
}


Vielleicht kann das ja schon jemand gebrauchen.

Gruss R.
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: justme1968 am 29 August 2013, 23:02:49
warum nimmst du nicht das ganz normalen filelog?

gruss
  andre
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: ritchie am 29 August 2013, 23:11:10
Hi,

weil ich ein Rechteck erzeugen will.

Logge ich nur die reine Statusmeldung, bekomme ich einen SägeZahn Graph, da ich nicht die ganze Zeit
Werte in die Datei schreibe, sondern nur, wenn der Status sich geändert hat.

Damit hier ein Rechteck daraus wird, schreibe ich nochmals den alten Wert in die Datei, damit bis zu diesem
Zeitpunkt der alte Status im Trend korrekt dargestellt wird.

Gruss R.
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: justme1968 am 30 August 2013, 09:13:05
und das geht nicht wenn du steps oder histeps linientyp verwendest?

gruss
  andre
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: ritchie am 31 August 2013, 00:44:32
Habe ich noch nicht ausprobiert.
mache ich dann wohl mal morgen auch noch.

Danke für den Tip.

P.S:
hier ist noch ein kleiner Bug

my $dt = strftime("%Y-%m-%d_%H:%M:%S", localtime(time));


Das "_" fehlte an dieser Stelle.

Gruss R.
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: ritchie am 01 September 2013, 12:02:31
Hallo Justme1964

grundsätzlich scheint das Linienattribute steps oder histeps ja zu arbeiten.

Wenn ich aber anfange zu zoomen, wird der Schaltpunkt mit meiner Variante noch korrekt
dargestellt, aber mit steps sehe ich hier keinen korrekte Darstellung.
Vermutlich wird im aktuellen Trend bei steps nur die vorhandene Impulsinformation verwendet.

Vorteil dieser Version: Keine Zusätzliche Routine notwendig

Nachteil meiner Methode:
Solange die Pumpe nicht ausschaltet, sehe ich nur einen Impulsespitze (auch nur beim Zoomen)
Vielleicht mache ich bei meiner Methode noch jede Stunde einen Stützpunkt für die Grafik.

Gruss R.
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: Puschel74 am 01 September 2013, 15:42:41
Hallo,

schonmal mit addLog versucht?

Grüße
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: ritchie am 01 September 2013, 20:12:32
Hi,

"addLog" finde ich nicht auf der "CommandRef" Seite ?

Gruss R.
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: Puschel74 am 01 September 2013, 20:26:07
Hallo,

stimmt, habe ich auch grad vergeblich gesucht.

addLog kannst du definieren:

define a_midnight1 at *23:59 trigger addLog

wird dadurch täglich um 23:59 ausgeführt.
Dazu gehört dann natürlich noch:

define addLog notify addLog {addLog("Keller_Gaestezimmer_Heizung","desired-temp");;;;addLog("EG_Eingang_Heizung","desired-temp")}


In das notify packst du alle Devices die einen zusätzlich Logeintrag erhalten sollen.
Dieser wird dann mit
Zitat
<< addLog
markiert.

Grüße
Titel: Aw: Schreiben in eine bestehende FileLog Datei
Beitrag von: betateilchen am 01 September 2013, 21:36:28
Zitat von: Puschel74 schrieb am So, 01 September 2013 20:26
stimmt, habe ich auch grad vergeblich gesucht.


addLog ist keine Standardfunktion in fhem. Sie muss z.B. in 99_myUtils.pm definiert werden. Beschreibung findet sich im Wiki.

http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden (http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden)