Hallo, ich habe gerade angefangen in die FHEM Themen vor zu dringen.
Speziell - weil aktuell - Backup von FHEM(Raspi ) auf NAS-LW zu sichern.
manuell - Backup starten - file nach NAS kopieren .... das geht.
Ich hätte das aber gerne mit FHEM automatisiert. Code Beispiel aus dem WIKI:
http://www.fhemwiki.de/wiki/Backup (http://www.fhemwiki.de/wiki/Backup) in dem Config File und 99_myUtils
eingebaut (Kopy & Paste) Ergebniss:
Den Raum Server gibts - Backup kann ausgeführt werden... der Datei Pfad passt noch nicht aber es funzt
beim speichern der 99_myUtils Fehler: syntax error at ./FHEM/99_myownUtils.pm line 38, near "1"
auch wenn NEAR eine durchaus variable Angabe ist und das Perl Wiki befragt wurde
-> ich kann nix finden. Der Fehler bleibt.
ich hoffe es weis einer von euch Rat. Gruss Stony
99_myUtils... CODE:
#############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.
package main;
use strict;
use warnings;
use POSIX;
sub myownUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Anzeige der vorhandenen Backups im dummy
#########################################################################
SYS_Backup:* {
fhem("backup");;
opendir DIR, "/mnt/fbbackup/PIBACKUP" or die $!;;
my $mybackups = "";;
while(my $file = readdir DIR){
next if($file eq "." || $file eq "..");;
$mybackups = $mybackups."$file
";;
}
closedir DIR;;
fhem("set SYS_Backup ".$mybackups);;
}
#########################################################################
1;
Zitatsyntax error at ./FHEM/99_myownUtils.pm line 38, near "1"
Der Fehler scheint in der Datei 99_myownUtils.pm zu liegen. Nicht in der von dir geposteten 99_myUtils.pm. 8)
Warum so kompliziert? ;)
Ich habe mir ein NFS-Share an den FHEM Rechner gemaunted und in "Global" das Backupverzeichnis dorthin definiert. Damit läuft jedes Backup auf den NAS Speicher
Das gleiche gilt übrigens auch für das Logverzeichnis ;)
Viele Grüße
Rince hat natürlich recht, dass der angezeigte Fehler aus der 99_myownUtils.pm kommt.
Aber davon abgesehen ist der Wiki Artikel mMn falsch, denn der Code, der dort angegeben ist, ist für eine Notify DEF und so in der Form keine Funktion für die myUtils...
@Rudi: liest du hier mit? Der Artikel ist laut Wiki von Dir.
Zitat von: Stony am 14 Oktober 2015, 01:59:42
#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Anzeige der vorhandenen Backups im dummy
#########################################################################
SYS_Backup:* {
fhem("backup");;
opendir DIR, "/mnt/fbbackup/PIBACKUP" or die $!;;
...
Zitat von: Stony am 14 Oktober 2015, 01:59:42
...beim speichern der 99_myUtils Fehler: syntax error at ./FHEM/99_myownUtils.pm line 38, near "1" ...
Speicher die Datei doch bitte mal unter dem Namen 99_myownUtils ab.
Andernfalls schlägt auch die Initialisierung fehl
sub myownUtils_Initialize($$)
{
my ($hash) = @_;
}
Zitat von: dev0 am 14 Oktober 2015, 08:50:31
Rince hat natürlich recht, dass der angezeigte Fehler aus der 99_myownUtils.pm kommt.
Aber davon abgesehen ist der Wiki Artikel mMn falsch, denn der Code, der dort angegeben ist, ist für eine Notify DEF und so in der Form keine Funktion für die myUtils...
@Rudi: liest du hier mit? Der Artikel ist laut Wiki von Dir.
Die angesprochene Änderung (mit dem SYS_Backup:*) im Wiki ist nicht von Rudi, sondern am 14.12.2014 (http://www.fhemwiki.de/w/index.php?title=Backup&diff=prev&oldid=8855) von Docb (http://forum.fhem.de/index.php?action=profile;u=1555) gemacht worden.
Peter
OK, hab docb per pm gebeten mal diesen Thread zu schauen.
Hallo, erstmal danke für die prompten Reaktionen.
und das File 99_myownUtils.pm endstand so:
-> FHEM Editor : 99_myUtils laden
-> teile aus dem Howto in 99_myUtils einfügen (nach #enter you functions below)
-> save as 99_myownUtils.pm
dann erschien besagter fehler....
rum gesucht .... nix gefunden ... müede .. post hier.
seht mir bitte nach das ich bezüglich des Filenamens nicht mehr so den genauen Stiel eingehalten habe.
so lange die Initialisierung und der Filename stimmt ist der Name im Post und in den Komentaren ....()
ich habe natürlich Probleme mit dem SYS_Backup:* das ist schon eine geschachtelte Anweisung - wow.
könnte schon an dieser Zeile liegen:
opendir DIR, "/mnt/fbbackup/PIBACKUP" or die $!;;
da fehlen nach meiner meinung ein paar klammern. Aber da dies als Argument der SYS_Backup zu sehen ist kanns natürlich auch richtig sein.
- natürlich habe ich auch schon backups über das NAS gefahren. Aber einbinden in das FHEM?
Ich such mal in der Referenz doch .... wie geht das ?
Gruss Stony
Zitat von: Klaus Rubik am 14 Oktober 2015, 08:42:22
Warum so kompliziert? ;)
Ich habe mir ein NFS-Share an den FHEM Rechner gemaunted und in "Global" das Backupverzeichnis dorthin definiert. Damit läuft jedes Backup auf den NAS Speicher
Das gleiche gilt übrigens auch für das Logverzeichnis ;)
Viele Grüße
Hallo Klaus ... backupdir ... gefunden , danke für den Tip.
Der eigendliche Gag an dem Howto ist die Erweiterung das Backup zu einem Zeitpunkt automatisch anstoßen zu können. nur wollt ich zunächst den ersten Teil testen und dann die Automatik angehen.
Es gäbe ja auch die Möglichkeit das unter Linux zu automatisieren. da ich eh in FHEM auch den Brenner
einbeziehen wollte war der Einstieg in FHEM aber klar. Deshalb zum lernen üben-üben-üben.
Vieleicht war das zu Anfang ein zu großes Ziel. Na ja mal sehen.
Grüße Stony
Gibt es hier was neues?
Bei mir kommt der selber Fehler wenn ich diese Funktion in der 99myUtils speichern will.
Es sieht wirklich nicht so aus, als ob es eine Funktion wäre die dort definiert wird. Aber ich weiss auch nicht so recht wo man es hinkopierten soll...
Chris
Wenn Du diesen Code meinst,
#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Anzeige der vorhandenen Backups im dummy
#########################################################################
SYS_Backup:* {
fhem("backup");;
...
dann gehört das in die Definition eines notify.
Okay. Teste ich aus.
Also kommt es in die fhem.conf und nicht in die 99myUtils.pm
Sollte im Wiki korrigiert werden.
Chris
Besser ist es, wenn Du den DEF Editor des notify benutzt und nicht die fhem.cfg direkt bearbeitest.
Teste es aus und korregiere das Wiki, wenn es funktioniert.
Zitat von: dev0 am 01 Dezember 2015, 11:35:12
Besser ist es, wenn Du den DEF Editor des notify benutzt und nicht die fhem.cfg direkt bearbeitest.
Teste es aus und korregiere das Wiki, wenn es funktioniert.
Da ist meiner Ansicht nach im Wiki nichts zu korrigieren. Vor dem Passus steht eindeutig, dass es in die Konfiguration muss. Der Teil, der in die 99_myUtils.pm muss, ist ganz klar gegen den Rest abgegrenzt.
@webturtle: bitte noch mal die Informationen über "Konfiguration" und 99_myUtils im Wiki lesen.
Peter
ZitatBesser ist es, wenn Du den DEF Editor des notify benutzt
Dann aber die ; nicht verdoppeln!
Zitat von: ph1959de am 01 Dezember 2015, 11:48:26
Da ist meiner Ansicht nach im Wiki nichts zu korrigieren. Vor dem Passus steht eindeutig, dass es in die Konfiguration muss. Der Teil, der in die 99_myUtils.pm muss, ist ganz klar gegen den Rest abgegrenzt.
Der folgende Code ist in die Datei 99_myUtils.pm einzuarbeiten
#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Anzeige der vorhandenen Backups im dummy
#########################################################################
SYS_Backup:* {
fhem("backup");;
Sorry, aber auch wenn ich mir Mühe gebe, dann kann ich daraus nicht lesen, dass das
nicht in 99_myUtils.pm soll.
Edit: Zumal genau dieser Code schön öfters hier im Forum aus der myUtils gepostet wurde.
@dev0: ok, jetzt sehe ich, was gemeint ist ... und bin immer noch der Ansicht, dass der Code in die myUtils sollte - nur, dass er weder für die eine noch die andere Stelle so verwendbar ist (für "direkt in fhem.cfg/DEF" ist er eigentlich zu komplex und für myUtils fehlt das "sub xxx (..."-Drumherum.
Ich erkläre mich auch bereit, das Wiki zu überarbeiten, wenn hier die funktionierende Lösung "auftaucht".
Peter
Habe es über den DEF Editor des Notify gemacht. (Mache ich eigentlich immer)
Ist auch soweit ich weiss egal ob man dort einfache oder doppelte ";" macht. In die fhem.conf wird es immer korrekt eingetragen.
Ansonsten sehe ich auch so, dass es im Wiki falsch steht.
Und abgegrenzt ist da auch nichts. Zumal es jetzt bei mir funktioniert und ich überhaupt nichts in der 99myUtils.pm bezgl. des Backup stehen habe.
Es muss dort scheinbar auch nichts rein.
Leider weiss ich aktuell nicht wie man im Wiki etwas ändert, und bin auch nicht sicher ob ich als ersten Beitrag zum Wiki gleich einen Beitrag von Herrn König ändern soll.
Irgendwie hab ich da dann doch ein wenig Bammel.... :-)
Chris
Zitat von: ph1959de am 01 Dezember 2015, 12:16:46
@dev0: ok, jetzt sehe ich, was gemeint ist ... und bin immer noch der Ansicht, dass der Code in die myUtils sollte - nur, dass er weder für die eine noch die andere Stelle so verwendbar ist (für "direkt in fhem.cfg/DEF" ist er eigentlich zu komplex und für myUtils fehlt das "sub xxx (..."-Drumherum.
Ich erkläre mich auch bereit, das Wiki zu überarbeiten, wenn hier die funktionierende Lösung "auftaucht".
Peter
Na ja, es funktioniert in der Tat wenn man dies einfach Copy Paste im DEF Editor des Notify macht. Zumindest das könnte im Wiki so geändert werden.
Mit zu komplex meinst du aber wohl nicht die Vorgehensweise sondern die Übersichtlichkeit der config, oder.
Da habe ich schlimmeres in einigen Notify stehen.
Seit ich mir angewöhnt habe die fhem.cfg nicht mehr direkt zu bearbeiten, finde ich das auch gar nicht Schlimm.
Ist ein echt guter Skripteditor in den Notfies drin und man sieht nur was man braucht.
Chris
Hallo Zusammen,
ich bin auch drauf reingefallen, habe nun vom Kopfkratzen ein paar kahle Stellen mehr am Kopf. Viel bleibt nicht mehr zum kratzen :-)
Ich habe die Routine für das File-Listing überarbeitet:
#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Anzeige der vorhandenen Backups im dummy
#########################################################################
sub SYS_Backup {
# Directory, followed by a '/'
my $dir = "./backup/";
# List only $max Files, to disable set $max to 0
my $max=4;
my $mybackups;
my %HASH;
fhem("backup");
opendir DIR, $dir or die $!;
while(my $file = readdir DIR){
next if($file eq "." || $file eq "..");
$HASH{(stat($dir.$file))[9]}=$file;
}
my $count = keys %HASH;
$mybackups="List only $max Files of $count" if($count>$max);
foreach (sort keys %HASH) {
next if ((($count-- -$max) >0)&&$max);
$mybackups.= '</br>'.$HASH{$_};
}
fhem("set SYS_Backup ".$mybackups);
}
Ein Zeilenumbruch ist noch mit drin und es werden nur $max Files aufgelistet, wenn man will.
Der Code kann nun direkt in 99_myUtils eingebaut werden
Die def im notify ist auch anzupassen:
Internals:
CFGFN
DEF SYS_Backup:* { SYS_Backup }
NAME SYS_BackupRun
NOTIFYDEV SYS_Backup
NR 785
NTFY_ORDER 50-SYS_BackupRun
REGEXP SYS_Backup:*
STATE 2016-01-09 19:32:49
TYPE notify
@Peter, wäre nett, wenn Du das Wiki überarbeitest.
Grüße Detlev.