Am Monatsende um 23:55 Logdatei neu generieren

Begonnen von kud, 01 April 2013, 15:19:32

Vorheriges Thema - Nächstes Thema

kud

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?





UliM

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
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

kud


UliM

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 .

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Groby

kannst Du nicht einfach einem Dummy einen x-beliebigen Wert zuweisen, damit ein log Eintrag erstellt wird?

kud

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.



UliM

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-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Groby

wie wäre es mit einem Monatsanfang?

define Monatsanfang +*00:00:01 Log 1, "Monatswechsel" if $mday=1

ungetestet...