Datenpunkte einer Datenreihe älter als x-Tage automatisch löschen

Das Langzeitarchiv für HomeMatic

Moderator: Co-Administratoren

Antworten
BitMac
Beiträge: 183
Registriert: 27.11.2015, 09:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal

Datenpunkte einer Datenreihe älter als x-Tage automatisch löschen

Beitrag von BitMac » 19.12.2022, 16:11

Wie der Titel schon sagt, möchte ich einen Datenpunkt der nur zur Fehlerprotokollierung benötigt wird,
automatisch alle paar Tage löschen.
Im Falle eines Fehlers benötige ich nur die jeweils letzten Tage. Alle anderen können weg.

Unter "Tips&Tricks" habe ich das Script gefunden, "Alte Zeitreihendaten löschen".
Jedoch bezieht sich das auf alle Datenreihen.
Das mit dem cronjob und dem Einfügen in die ccu-historian.config krieg ich hin.

Aber wie muß die Syntax aussehen, wenn man nur EINE bestimme Datenreihe bereinigen möchte ?

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

Re: Datenpunkte einer Datenreihe älter als x-Tage automatisch löschen

Beitrag von Mathias » 20.12.2022, 08:45

Das müsste etwas in dieser Richtung sein:

Code: Alles auswählen

// Konfiguration
def daysToKeep = 5
def dpID="ABC.ABC000:0.PARAM"
def testRun = true // nach dem Testen auf false setzen

// Skript
println "Alte Zeitreihendaten werden gelöscht:"
def deleteDate=new Date()-daysToKeep
println "Löschdatum: ${deleteDate.format("dd.MM.YYYY")}"
def dp=database.getDataPoint(new DataPointIdentifier(dpID))
def cnt
if (testRun) {
    cnt=database.getCount(dp, null, deleteDate)
} else {
    cnt=database.deleteTimeSeries(dp, null, deleteDate)
}
println "$dp.displayName: $cnt Einträge"

BitMac
Beiträge: 183
Registriert: 27.11.2015, 09:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal

Re: Datenpunkte einer Datenreihe älter als x-Tage automatisch löschen

Beitrag von BitMac » 20.12.2022, 14:55

Vielen Dank für die Antwort.

Ich habe in dem Script
def dp=database.getDataPoint(new DataPointIdentifier(dpID))
durch
def dp=database.getDataPoint(dpID)
ersetzt.

Dann funktionierte es, wie ich es mir vorgstellt habe.

Also:

Code: Alles auswählen

// Konfiguration
def daysToKeep = <Tage>
def dpID= <ID>
def testRun = true // nach dem Testen auf false setzen

// Skript
println "Alte Zeitreihendaten werden gelöscht:"
def deleteDate=new Date()-daysToKeep
println "Löschdatum: ${deleteDate.format("dd.MM.YYYY")}"
def dp=database.getDataPoint(dpID)
def cnt
if (testRun) {
    cnt=database.getCount(dp, null, deleteDate)
} else {
    cnt=database.deleteTimeSeries(dp, null, deleteDate)
}
println "$dp.displayName: $cnt Einträge"
Gruß
Andreas

Antworten

Zurück zu „CCU-Historian“