Hallo zusammen,
ich habe manchmal at-Devices (automatisch) definiert, welche mit VOLATILE=1 angelegt werden.
D.h. diese Definition wird in der fhem.save gesichert.
Im DEF der Devices ist ein kleiner Perl-Code definiert wie z.B.:
2022-06-09T01:15:00 {
my $dev = "SynFile";
my $folder = "/FHEM-Prod/%Y_%m_";
my $folderres = strftime "$folder", localtime(time-1728000); # heute - 20 Tage
for my $d (1..31) {
my $d = sprintf "%02d", $d;
my $fstr = $folderres.$d;
my $fstr1 = $folderres.$d."_Full";
CommandSet (undef, qq{$dev deleteRemoteObject "$fstr"});
CommandSet (undef, qq{$dev deleteRemoteObject "$fstr1"});
}
}
Beim Start von FHEM erscheint dann die Meldung:
Messages collected while initializing FHEM:./log/fhem.save: Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command for, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command CommandSet, try help.
Unknown command CommandSet, try help.
Unknown command }, try help.
Unknown command }, try help.
Die at-Definition wird dennoch völlig korrekt angelegt, aber die Meldung stört doch.
Ich bin nun der Meinung, dass in fhem.pl die sub WriteStatefile() evtl. ergänzt werden müsste.
Es werden dort bereits die ";" escaped mit
$def =~ s/;/;;/g;
Müssten nicht auch die Zeilenumbrüche mit "\" escaped werden damit am Ende so etwas in die fhem.save geschrieben wird ?:
2022-06-09T01:15:00 {\
my $dev = "SynFile";;\
my $folder = "/FHEM-Prod/%Y_%m_";;\
my $folderres = strftime "$folder", localtime(time-1728000);; # heute - 20 Tage\
\
for my $d (1..31) {\
my $d = sprintf "%02d", $d;;\
my $fstr = $folderres.$d;;\
my $fstr1 = $folderres.$d."_Full";;\
CommandSet (undef, qq{$dev deleteRemoteObject "$fstr"});;\
CommandSet (undef, qq{$dev deleteRemoteObject "$fstr1"});;\
}\
}
Vielleicht liege ich falsch, aber in der fhem.cfg werden solche Strukturen in dieser Form abgelegt. Bei fhem.save fehlt das "\".
Schöne Pfingsten !
Heiko
ZitatMüssten nicht auch die Zeilenumbrüche mit "\" escaped werden ...
Doch, habs eingebaut, mit deinem Beispiel getestet und eingecheckt.
Danke Rudi :)