openWB Backup, regelmäßig, automatisiert

Begonnen von FHEMAN, 16 Mai 2023, 15:26:31

Vorheriges Thema - Nächstes Thema

FHEMAN

Hi zusammen,

da in der guten openWB eine SD-Karte werkelt, sollten zumindest die Settings und Historie regelmäßig gesichert werden. Das geht händisch über die URL http://openwb/openWB/web/settings/backup.php oder automatisch mit FHEM, hier jeden 1. im Monat:

Die Verzeichnisse und URLs sollten angepasst werden im DOIF:
defmod doif.openWB.Backup DOIF ([02:30] and $mday == 1)({\
fhem("setreading $SELF backup running");;\
my $openwbBackupURL = AttrVal("$SELF", "openWbUrl", "http://openwb") . "/openWB/web/settings/backup.php";;\
HttpUtils_NonblockingGet( { \
url=>$openwbBackupURL, timeout=>120, callback=>sub() {\
my ($hash, $err, $ret) = @_;;\
if ($err || ($ret !~ "Backup-Datei backup.tar.gz erfolgreich erstellt.")) {\
fhem("setreading $SELF backup error creating backup: $err $ret");;\
} else {\
fhem("setreading $SELF backup downloading");; \
my $openwbDownloadURL = AttrVal("$SELF", "openWbUrl", "http://openwb") . "/openWB/web/backup/backup.tar.gz";;\
my $BackupDir = AttrVal("$SELF", "backupDir", "././www");;\
HttpUtils_NonblockingGet({ \
url=>$openwbDownloadURL, timeout=>120, callback=>sub() {\
my ($hash, $err, $data) = @_;;\
my $filename  = "$BackupDir/".$month.$mday."_openwb_backup.tar.gz";;\
if(open(FH, ">$filename")) {\
print FH $data;;\
close(FH);; \
fhem("setreading $SELF backup $filename");;\
} else {\
fhem("setreading $SELF backup error downloading $filename");;\
}\
} \
}) \
\
}\
} \
})\
})
attr doif.openWB.Backup userattr openWbUrl backupDir
attr doif.openWB.Backup backupDir ././backup
attr doif.openWB.Backup do always
attr doif.openWB.Backup openWbUrl http://openwb


Viel Spaß damit
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

betateilchen

So eine Menge Code ist m.E. in einer Funktion der 99_myUtils.pm besser aufgehoben als im DEF irgendeines FHEM devices.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEMAN

Zitat von: betateilchen am 16 Mai 2023, 18:28:39So eine Menge Code ist m.E. in einer Funktion der 99_myUtils.pm besser aufgehoben als im DEF irgendeines FHEM devices.

Warum?
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Damian

Zitat von: FHEMAN am 16 Mai 2023, 22:01:36
Zitat von: betateilchen am 16 Mai 2023, 18:28:39So eine Menge Code ist m.E. in einer Funktion der 99_myUtils.pm besser aufgehoben als im DEF irgendeines FHEM devices.

Warum?

Den Code im DEF einzugeben hat in diesem Fall sogar einen Vorteil, denn das Modul macht unmittelbar einen einfachen Syntax-Check und gibt dem User ein Feedback. Wenn der Syntaxcheck nicht erfolgreich ist, lässt sich die Definition erst gar nicht erstellen und muss angepasst werden. Und das Editieren mit codemirror ist fast genauso komfortabel wie mit einem Programmeditor.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Torxgewinde

Dazu kommt noch der Vorteil, dass der Code nicht auf eine 99_myUtils.pm und das DOIF-Device verteilt ist, sondern alles an einem Ort zu finden ist. Das Gute ist ja, dass man es sich aussuchen kann. Als Snippet ist es so schön kompakt und leicht zu kopieren.