Habe irgendwie Probleme beim Monatswechsel.
Meine Logfiles heissen zb. aktuell 201305-Alarm.log
Da drin wird der Status eins Schalters gespeichert.
Wenn der Monat sich ändert, exestiert die Datei nicht und wird erst beim ersten Schalterdrücken angelegt.
Nun werte ich aber die Logfiles mit einem externen PHP-Programm aus. Blöd wenn die Datei nicht da ist.
Meine Idee. Kurz vor Ablauf des Kalender Monats durch den Log-Ordner gehen und die neuen Dateien mit der letzten Zeile des aktuellen Monats anlegen.
zb. tail -1 201304-Alarm.log > 201305-Alarm.log
Kann man das irgendwie mit einem "at" abbilden? Oder wie würde Ihr das machen?
Hi,
Du kannst am Monatsende eonmal um 23:59 und dann um 0:01 Werte in die Logs schreiben. Dann hast Du in der 'alten' logdatei den richtigen Schlusswert, und die neue Logdatei wird gleich nach Mittarncht angelegt und enthält auch den richtrigen Monatsstartwert.
Schau mal hier: http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden (//www.fhemwiki.de/wiki/Plot-Abriss_vermeiden)
Gruß, Uli
Und wie definiere ich ein Monatsende?
Hi,
zB
- täglich 23:59:30
- prüfen, ob der Monat des morgigen Tages gleich dem Monat des heutigen Tages ist
- falls ja
-- addlog schreiben
-- in 1 Minute nochmal addlog schreiben
also sowas wie
define addlog1 at *23:59:30 {
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );
if ( $month2 > $month ) {
addLog(<device>,<reading>); fhem("define addlog2 at +00:01 addLog(<device>,<reading>)");
}
}
Ungetestet. Die Time-Funktionen hab ich nachgelesen in http://www.fhemwiki.de/wiki/Uhrzeit:_Offset_berechnen (//www.fhemwiki.de/wiki/Uhrzeit:_Offset_berechnen) .
=8-)
kannst Du nicht einfach einem Dummy einen x-beliebigen Wert zuweisen, damit ein log Eintrag erstellt wird?
Zitat von: UliM schrieb am Mo, 01 April 2013 18:25Hi,
zB
- täglich 23:59:30
- prüfen, ob der Monat des morgigen Tages gleich dem Monat des heutigen Tages ist
- falls ja
-- addlog schreiben
-- in 1 Minute nochmal addlog schreiben
also sowas wie
define addlog1 at *23:59:30 {
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );
if ( $month2 > $month ) {
addLog(<device>,<reading>); fhem("define addlog2 at +00:01 addLog(<device>,<reading>)");
}
}
Ungetestet. Die Time-Funktionen hab ich nachgelesen in http://www.fhemwiki.de/wiki/Uhrzeit:_Offset_berechnen .
=8-)
Da muss ich immer eingreifen und die entsprechenden Devices hinterlegen.
Mir erscheint das zu kompliziert.
Einfach alle Dateien mit Anfang 2013Monat finden und mit tail -1 alteDatei neueDatei+Monat1 zu kopieren.
Der Test kann ja jede Nacht um 23:59 durchgeführt werden.
Zitat von: kud schrieb am Mo, 01 April 2013 18:41Da muss ich immer eingreifen und die entsprechenden Devices hinterlegen.
Eigtl musst Du das ganze Konstrukt nur ein einziges mal anlegen - oder überseh ich was?
=8-)
wie wäre es mit einem Monatsanfang?
define Monatsanfang +*00:00:01 Log 1, "Monatswechsel" if $mday=1
ungetestet...