fhem.save und at-Devices mit VOLATILE=1 -> Messages collected bei FHEM Start

Begonnen von DS_Starter, 04 Juni 2022, 09:21:51

Vorheriges Thema - Nächstes Thema

DS_Starter

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
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

ZitatMüssten nicht auch die Zeilenumbrüche mit "\" escaped werden ...
Doch, habs eingebaut, mit deinem Beispiel getestet und eingecheckt.

DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter