CCU-Historian V3.2.0

Das Langzeitarchiv für HomeMatic

Moderator: Co-Administratoren

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

CCU-Historian V3.2.0

Beitrag von Mathias » 28.08.2022, 21:37

Ein neues Feature für Profi-Anwender:

Automatische Ausführung von Wartungsaufgaben
Wartungsaufgaben in Form von Skripten (z.B. Löschen alter Zeitreihendaten, Backup-Erstellung, Löschen alter Backups, Einrichtung der Kompressionen, ...) können nun in der Konfigurationsdatei definiert und zyklisch über ein Cron-Ausdruck regelmäßig ausgeführt werden.

Die neue Version ist wie immer auf GitHub zu finden.

Fehlerbehebungen / Verbesserungen
Gruß
Mathias

Benutzeravatar
Baxxy
Beiträge: 10825
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 607 Mal
Danksagung erhalten: 2225 Mal

Re: CCU-Historian V3.2.0

Beitrag von Baxxy » 28.08.2022, 23:29

Hallo Mathias,
danke für die neue Version!

Ich habe da gleich mal eine Frage zu den Beispielscripten, speziell "Backup zum Zeitpunkt X" und "cleanBackupFiles".

Aktuell erfolgt das Backup jeden Sonntag mit folgendem Eintrag:

Code: Alles auswählen

database.backup='/media/usb0/CCU-Historian-DB-Backup/%Y-KW%W-TestCCU-Pi4'
Die beiden Scripte habe ich nun erstmal wie folgt in der historian.config abgelegt:

Code: Alles auswählen

database.tasks.backup_sonntag.enable=true
database.tasks.backup_sonntag.cron="0 7 0 ? * SUN"
database.tasks.backup_sonntag.script={
  def timestamp=new Date().format("YYYYMMddHHmmss")
  def fileName="TestCCU-Pi4-Backup_${timestamp}.zip"
  database.createBackup(fileName)
  log.info "Backup wurde in Datei $fileName geschrieben."
}

database.tasks.cleanBackupFiles.enable=true
database.tasks.cleanBackupFiles.cron="0 25 0 ? * SUN"
database.tasks.cleanBackupFiles.script={
  // *** Konfiguration ***
  // Anzahl zu behaltener Backup-Dateien
  def keep = 30
  // *** Skript ***
  log.info "*** Alte Backup-Dateien loeschen V1.0.0 ***"
  log.info "Anzahl zu behaltener Backup-Dateien: $keep"
  log.info "Gefundene Backup-Dateien:"
  def backupFiles=[]
  new File(".").eachFileMatch(~/backup_.*\.zip/) { file ->
    backupFiles << file
    log.info file.name
  }
  backupFiles.sort({ it.name }).reverse().drop(keep).each { file ->
    log.info "Loesche $file.name"
    file.delete()    
  }
}
Meine Fragen beziehen sich auf den Verzeichnispfad.

Wo würde beim obigen Beispiel...
-das Backup angelegt?
-in welchem Pfad nach den Backupdateien gesucht?

Und wie passe ich die Scripte auf meinen Backup-Pfad an?

Code: Alles auswählen

/media/usb0/CCU-Historian-DB-Backup
Oder gibt es eine .config-Option die den Backup-Pfad definiert?

Asante61
Beiträge: 2
Registriert: 30.08.2022, 10:24
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: CCU-Historian V3.2.0

Beitrag von Asante61 » 30.08.2022, 11:12

Hallo Mathias

Vorab besten Dank für dieses geniale Programm.

Mein Problem: Ich betreibe seit gut einem Jahr den Historian auf einem eigenen Pi 4 unter RaspberryMatic , auf dem nur der Historian als Addon läuft, die Datenbank wird via USB3 auf eine SSD geschrieben. Die Daten erhält dieser Pi über das Netzwerk von einem zweiten Pi 4, auf dem das eigentliche Homematicsystem unter ebenfalls RaspberryMatic (jeweils aktuelle Version) läuft. Beide Raspis haben im Netzwerk eine feste IP, in der Config-Datei des Historian-Raspis ist entsprechend die IP des Homematic-Raspis hinterlegt. Bis Version 2.9 ein absolut stabiles System ohne jeglichen Ärger.

Der Umzug auf die neuen 3er Versionen (zunächst 3.1.1, jetzt ein zweiter Versuch mit 3.2) war zunächst problemlos möglich. Nur: Bei jedem Neustart des Historians oder einer Start-Stop-Prozedur mittels SSH verliert dieser den Zugang zum Hauptsystem. Ursächlich ist eine selbstständiges Überschreiben der Config-Datei nach o.a. Prozeduren, bei der jeweils die eingetragene IP-Adresse (devices.device1.address=) abgeändert wird hin zum Standardeintrag. Als Ergebnis erhält der Historian-Raspi natürlich keinerlei Daten mehr.

Ein Rückgang hin zur Version 2.9. zeigt dieses Verhalten nicht, weshalb ich zunächst wieder einen Downgrade auf die 2er Version laufen lassen musste.
Ich hoffe, ich konnte das Problem ausreichend verständlich erklären. Mach ich da was falsch bei der Migration oder kann das ein Bug sein?

Danke für Deine Antwort und Mühe. Viele Grüße

Benutzeravatar
Baxxy
Beiträge: 10825
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 607 Mal
Danksagung erhalten: 2225 Mal

Re: CCU-Historian V3.2.0

Beitrag von Baxxy » 30.08.2022, 16:53

Ich bin zwar nicht Mathias, hatte mich aber kürzlich damit beschäftigt.

Es ist eher ein Feature das bei jedem Reboot/Historian-Neustart die IP's in der Config auf das lokale System gesetzt werden. (Wurde mit 3.1 eingeführt)
So hat man keine Probleme wenn die Zentrale mal eine neue IP bekommt.

Spontan fallen mir 2 Möglichkeiten ein:
A:
Du nimmst das rc.d-Script einer Version < 3.1 (/usr/local/etc/config/rc.d/ccu-historian) und updatest den Historian nur noch manuell.
Also stoppst den Historian und kopierst per WinSCP o.ä. nur das neue "historian-Verzeichnis" auf die Zentrale und die /usr/local/addons/ccu-historian/VERSION

B:
(so mache ich das)
du konfigurierst die "externe-Zentrale" als Device2 und gibst der lokalen Zentrale ein Präfix:
Beispiel (/usr/local/addons/ccu-historian/ccu-historian.config)

Code: Alles auswählen

// lokale Zentrale
devices.device1.type=CUSTOM_CCU
devices.device1.address='127.0.0.1'
devices.device1.prefix='lokal_'

// entfernte Zentrale
devices.device2.type=CCU3
devices.device2.address='192.168.1.27' // IP-Adresse der entfernten Zentrale eintragen...
// benoetigte Plugins aktivieren / deaktivieren
devices.device2.plugin1.type=CUXD
devices.device2.plugin2.type=JACK
//devices.device2.plugin3.type=HMWLGW
Bei B kannst du Historian ganz normal updaten ohne die korrekte Config zu verlieren.

Asante61
Beiträge: 2
Registriert: 30.08.2022, 10:24
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: CCU-Historian V3.2.0

Beitrag von Asante61 » 30.08.2022, 18:22

Baxxy hat geschrieben:
30.08.2022, 16:53
Ich bin zwar nicht Mathias, hatte mich aber kürzlich damit beschäftigt.
......
......

Hallo Baxxy

herzlichen Dank, werde die 2. Variante umsetzen.

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

Re: CCU-Historian V3.2.0

Beitrag von Mathias » 30.08.2022, 22:23

Baxxy hat geschrieben:
28.08.2022, 23:29
Ich habe da gleich mal eine Frage zu den Beispielscripten, speziell "Backup zum Zeitpunkt X" und "cleanBackupFiles".

Aktuell erfolgt das Backup jeden Sonntag mit folgendem Eintrag:

Code: Alles auswählen

database.backup='/media/usb0/CCU-Historian-DB-Backup/%Y-KW%W-TestCCU-Pi4'
Der Eintrag muss natürlich entfernt werden.
Baxxy hat geschrieben:
28.08.2022, 23:29
Wo würde beim obigen Beispiel...
-das Backup angelegt?
-in welchem Pfad nach den Backupdateien gesucht?

Und wie passe ich die Scripte auf meinen Backup-Pfad an?

Code: Alles auswählen

/media/usb0/CCU-Historian-DB-Backup
Ich habe die Skripte mal angepasst:

Code: Alles auswählen

database.tasks.backup_sonntag.enable=true
database.tasks.backup_sonntag.cron="0 7 0 ? * SUN"
database.tasks.backup_sonntag.script={
  def timestamp=new Date().format("YYYYMMddHHmmss")
  def fileName="/media/usb0/CCU-Historian-DB-Backup/TestCCU-Pi4-Backup_${timestamp}.zip"
  database.createBackup(fileName)
  log.info "Backup wurde in Datei $fileName geschrieben."
}

database.tasks.cleanBackupFiles.enable=true
database.tasks.cleanBackupFiles.cron="0 25 0 ? * SUN"
database.tasks.cleanBackupFiles.script={
  // *** Konfiguration ***
  // Anzahl zu behaltener Backup-Dateien
  def keep = 30
  // *** Skript ***
  log.info "*** Alte Backup-Dateien loeschen V1.0.0 ***"
  log.info "Anzahl zu behaltener Backup-Dateien: $keep"
  log.info "Gefundene Backup-Dateien:"
  def backupFiles=[]
  new File("/media/usb0/CCU-Historian-DB-Backup").eachFileMatch(~/TestCCU-Pi4-Backup_.*\.zip/) { file ->
    backupFiles << file
    log.info file.name
  }
  backupFiles.sort({ it.name }).reverse().drop(keep).each { file ->
    log.info "Loesche $file.name"
    file.delete()    
  }
}
Am besten bei der ersten Task-Ausführung das Datei-Logging vom CCU-Historian aktivieren, damit eventuelle Fehler aufgezeichnet werden.

Benutzeravatar
Baxxy
Beiträge: 10825
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 607 Mal
Danksagung erhalten: 2225 Mal

Re: CCU-Historian V3.2.0

Beitrag von Baxxy » 30.08.2022, 23:09

Mathias hat geschrieben:
30.08.2022, 22:23
Ich habe die Skripte mal angepasst:
Besten Dank.
Jetzt ist das Schema klar.
Habe das nun mal so ins Testsystem eingepflanzt und werde beobachten. :)

joesch
Beiträge: 789
Registriert: 03.02.2007, 14:57
Hat sich bedankt: 64 Mal
Danksagung erhalten: 2 Mal

Re: CCU-Historian V3.2.0

Beitrag von joesch » 02.09.2022, 13:22

Hallo zusammen!

Welchen Parameter muss ich setzen, um die Anzahl der Backups z beschränken? Im WiKi habe ich dazu nicht sgefunden ;-)

Vielen Dank und VG, Jörg
System: RaspberryMatic auf Raspberry Pi 3 Model B Rev 1.2 (rpi3) mit RPI-RF-MOD (4.4.22)

Benutzeravatar
Baxxy
Beiträge: 10825
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 607 Mal
Danksagung erhalten: 2225 Mal

Re: CCU-Historian V3.2.0

Beitrag von Baxxy » 02.09.2022, 14:03

Das "Backup-Script" selbst hat keine Begrenzung.

Dazu lässt man dann das "Aufräum-Script" laufen wo die maximale Anzahl der zu behaltenden Backups mittels:
Baxxy hat geschrieben:
28.08.2022, 23:29
// Anzahl zu behaltener Backup-Dateien
def keep = 30
konfiguriert wird.

Beide original Beispielscripte sind aber mit der Historian AddOn Version nicht lauffähig, da das mit den Pfaden nicht passt.

So wie Mathias mein Beispiel oben angepasst hat funktioniert es aber.

Antworten

Zurück zu „CCU-Historian“