FHEM > Codeschnipsel

Schreiben in eine bestehende FileLog Datei

(1/2) > >>

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

--- Code: ---
#
# 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);
}

--- Ende Code ---


Vielleicht kann das ja schon jemand gebrauchen.

Gruss R.

justme1968:
warum nimmst du nicht das ganz normalen filelog?

gruss
  andre

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

justme1968:
und das geht nicht wenn du steps oder histeps linientyp verwendest?

gruss
  andre

ritchie:
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

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

--- Ende Code ---


Das "_" fehlte an dieser Stelle.

Gruss R.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln