configDB bei zwei FHEM Instanzen

Begonnen von PSI69, 04 März 2025, 14:32:36

Vorheriges Thema - Nächstes Thema

PSI69

Moin!
Ich wieder zum gleichen Thema...

Beide FHEM Instanzen sind nun getrennt in zwei Verzeichnissen, ich habe Softlinks benutzt:
Hauptinstanz:
pi@fhem:~ $ ls -l /opt/fhem
total 2404
-rw-r--r--  1 fhem dialout    193 Feb 26 14:03 AlarmFILE
drwxr-xr-x  2 fhem dialout   4096 Mar  3 23:05 backup
drwxr-xr-x  4 fhem dialout   4096 Mar 25  2024 cache
drwx--x--x  3 fhem dialout   4096 Feb  3 10:32 certs
-rw-r--r--  1 fhem dialout 441431 Mar  3 08:35 CHANGED
-rw-r--r--  1 fhem dialout     96 Mar  4 14:05 configDB.conf
-rw-r--r--  1 fhem dialout 182272 Mar  4 14:07 configDB.db
-rw-rw-rw-  1 fhem dialout  46886 Jan 28  2024 configDB.pm
drwxrwxrwx 51 fhem dialout  20480 Mar 22  2024 contrib
-rw-r--r--  1 fhem dialout     17 Mar  4 13:50 cookies.lwp
drwxrwxrwx  3 fhem dialout   4096 Mar 22  2024 demolog
drwxrwxrwx  4 fhem dialout  12288 Mar 22  2024 docs
drwxrwxrwx  6 fhem dialout  73728 Feb 28 08:24 FHEM
-rw-r--r--  1 fhem dialout 849907 Mar  3 14:38 fhem.cfg
-rw-rw-rw-  1 fhem dialout  21936 Jan 28  2024 fhem.cfg.demo
-rwxrwxrwx  1 fhem dialout 174974 Jan  2 08:42 fhem.pl
-rw-r--r--  1 fhem dialout  18092 Mar 22  2024 GPL_V2.txt
drwxrwxrwx  3 fhem dialout   4096 Mar 22  2024 lib
drwxrwxrwx  2 fhem dialout  61440 Mar  3 00:00 log
drwxr-xr-x  2 fhem dialout  90112 Mar  3 00:00 log-archive
-rw-rw-rw-  1 fhem dialout  47157 Feb  3 11:57 MAINTAINER.txt
drwxr-xr-x  2 fhem dialout   4096 Mar 23  2024 mp3
-rw-rw-rw-  1 fhem dialout    935 Jan 28  2024 README_DEMO.txt
-rw-r--r--  1 fhem dialout  69268 Nov 23  2021 regSave.cfg
drwxr-xr-x  4 fhem dialout   4096 Mar 23  2024 restoreDir
drwxr-xr-x  3 fhem dialout   4096 Mar 25  2024 sbfspot
drwxr-xr-x  2 fhem dialout  12288 Mar  4 13:32 temp_radolan_data_CDCOpenData
drwxr-xr-x  3 fhem dialout   4096 Mar 22  2024 tmp
drwxrwxrwx 10 fhem dialout   4096 Mar 29  2024 www
-rw-r--r--  1 fhem dialout 262144 Oct 27 09:52 ZWDongle.bin
Zweitinstanz:
pi@fhem:~ $ ls -l /opt/fhem2
total 44
lrwxrwxrwx 1 fhem dialout    16 Mar  3 14:20 backup -> /opt/fhem/backup
lrwxrwxrwx 1 fhem dialout    15 Mar  3 14:23 cache -> /opt/fhem/cache
lrwxrwxrwx 1 fhem dialout    15 Mar  3 14:23 certs -> /opt/fhem/certs
lrwxrwxrwx 1 fhem dialout    17 Mar  4 14:03 CHANGED -> /opt/fhem/CHANGED
-rw-r--r-- 1 fhem dialout    97 Mar  4 12:14 configDB.conf
-rw-r--r-- 1 fhem dialout 18432 Mar  4 12:10 configDB.db
lrwxrwxrwx 1 fhem dialout    21 Mar  4 14:00 configDB.pm -> /opt/fhem/configDB.pm
lrwxrwxrwx 1 fhem dialout    17 Mar  3 14:23 contrib -> /opt/fhem/contrib
lrwxrwxrwx 1 fhem dialout    21 Mar  4 14:03 cookies.lwp -> /opt/fhem/cookies.lwp
lrwxrwxrwx 1 fhem dialout    14 Mar  3 14:23 docs -> /opt/fhem/docs
lrwxrwxrwx 1 fhem dialout    14 Mar  3 14:23 FHEM -> /opt/fhem/FHEM
-rw-r--r-- 1 fhem dialout 20469 Feb  7 08:34 fhem2.cfg
lrwxrwxrwx 1 fhem dialout    17 Mar  3 14:29 fhem.pl -> /opt/fhem/fhem.pl
lrwxrwxrwx 1 fhem dialout    13 Mar  3 14:23 lib -> /opt/fhem/lib
lrwxrwxrwx 1 fhem dialout    13 Mar  3 14:24 log -> /opt/fhem/log
lrwxrwxrwx 1 fhem dialout    21 Mar  3 14:24 log-archive -> /opt/fhem/log-archive
lrwxrwxrwx 1 fhem dialout    24 Mar  4 14:01 MAINTAINER.txt -> /opt/fhem/MAINTAINER.txt
lrwxrwxrwx 1 fhem dialout    13 Mar  3 14:24 mp3 -> /opt/fhem/mp3
lrwxrwxrwx 1 fhem dialout    20 Mar  3 14:24 restoreDir -> /opt/fhem/restoreDir
lrwxrwxrwx 1 fhem dialout    13 Mar  3 14:24 tmp -> /opt/fhem/tmp
lrwxrwxrwx 1 fhem dialout    13 Mar  3 14:24 www -> /opt/fhem/www
Die beiden Files für die configDB habe ich jeweils kopiert UND für /opt/fhem2 natürlich den Pfad angepasst:
%dbconfig= (
connection => "SQLite:dbname=/opt/fhem2/configDB.db",
user => "",
password => ""
);
Interessant war für mich, das auch im Verzeichnis der Hauptinstanz beide Files (also configDB.db & conf) vorhanden sein mussten, damit ein 'reload 98_configdb' ohne Fehlermeldung im Webinterface der zweiten Instanz aus /opt/fhem2/ durchgelaufen ist.
Noch interessanter war für mich, dass ein 'configdb migrate' im WI der zweiten Instanz ausgeführt, meiner Meinung nach alles in die DB der Hauptinstanz geschrieben hat, also nach /opt/fhem/configDB.db:
pi@fhem:~ $ ls -l /opt/fhem/configDB.db
-rw-r--r-- 1 fhem dialout 182272 Mar  4 14:07 /opt/fhem/configDB.db
pi@fhem:~ $ ls -l /opt/fhem2/configDB.db
-rw-r--r-- 1 fhem dialout 18432 Mar  4 12:10 /opt/fhem2/configDB.db
Obwohl von der Ausgabe her wohl die Daten von fhem2 migriert worden:
Starting migration...
Processing: database initialization
Processing: save config
Processing: save state
Processing: fileimport
importing: ./log/eventTypes2.txt
importing: ./www/gplot/template.gplot
importing: ./www/gplot/templateDB.gplot
importing: ./FHEM/template.layout
importing: ./FHEM/FhemUtils/uniqueID
Migration completed

-----------------------------------------------------------------
 configDB Database Information
-----------------------------------------------------------------
 d:$Id: configDB.pm 27887 2023-08-23 20:13:34Z betateilchen $
 c:unknown
-----------------------------------------------------------------
 dbconn: SQLite:dbname=/opt/fhem/configDB.db
 dbtype: SQLITE
 dbsize: 178.00 KB
-----------------------------------------------------------------
 loaded:       d23705823bdae4ab9014a64470de785a
 lastReorg:   
 config:       286 entries

 Ver 0 saved: Tue Mar  4 14:07:41 2025 def: 34 attr: 206
 Ver 1 saved: Sat Jun  1 10:00:24 2019 def: 5 attr: 5
-----------------------------------------------------------------
 filesave: 6 files stored in database
-----------------------------------------------------------------

Ist da noch irgendwo fest /opt/fhem/ verdrahtet?

Ich breche jetzt erst einmal ab und betreibe weiter die fhem(2).cfg bis zur Klärung. Ich befürchte, ein kopieren/verschieben der DB nach fhem2 hilft mir nicht ...

Gruß Peter

[EDIT]
Ich befürchte, die Ursache ist 'mein' Softlink Konstrukt...
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...

betateilchen

Und welchen Sinn hat es jetzt, dazu einen zweiten Thread aufzumachen?
Für mich keinen...

Zitat von: PSI69 am 04 März 2025, 14:32:36Interessant war für mich, das auch im Verzeichnis der Hauptinstanz beide Files (also configDB.db & conf) vorhanden sein mussten

Die configDB.db muss da liegen, wo sie laut zugehöriger configDB.conf gesucht wird.

Zitat von: PSI69 am 04 März 2025, 14:32:36Ist da noch irgendwo fest /opt/fhem/ verdrahtet?

Der Pfad ist innerhalb von configDB nirgendwo fest angegeben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

PSI69

Sinn, na ja, der erste war schon als erledigt geschlossen. War so für mich sinnvoller...

ZitatDie configDB.db muss da liegen, wo sie laut zugehöriger configDB.conf gesucht wird.
Korrekt, so habe ich das verstanden. Und so ist es auch so. Unter /opt/fhem und opt/fhem2 liegen zwei korrekte Paarungen von configDB.db & configDB.conf.

... aber eben unter /opt/fhem2 nur softlinks auf /opt/fhem/configDB.pm und /opt/fhem/FHEM etc. Beim reload von 98_configdb im FHEM System ./fhem2 scheint für mich durch den softlink das Basisverzeichnis das von /opt/fhem zu werden. Jedenfalls klappt ein 'reload 98_configdb' aus /fhem2 heraus nur, wenn unter /fhem auch die beiden configDB files liegen. Und - wie schon geschrieben - ein 'configdb migrate' aus /fhem2 schreibt - trotz korrekter DB cfg unter /fhem2 in die DB unter /fhem.

Ich hoffe, ich habs verständlich ausgedrückt.

Ich gehe fest davon aus, das bei korrekten zwei sauberen Installationen (also ohne softlinks) das Thema erledigt ist, aber eben mit dem Pferdefuß (für mich) zwei völlig getrennte Installationen zu betreiben/zu aktualisieren. Obwohl das - eigentlich - so nicht nötig ist.

Aber ja, der Aufwand dafür hält sich ja doch in Grenzen und ich bin gerade am 'fummeln'...
Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...

PSI69

Auch nicht erfolgreich... Ich habe nun zwei 'echte' parallele FHEM Verzeichnisse (die wenigen softlinks sollten keine Relevanz haben):
pi@fhem:~ $ ls -l /opt/fhem2
total 816
drwxr-xr-x  2 fhem dialout   4096 Mar  4 17:56 backup
drwxr-xr-x  2 fhem dialout   4096 Mar  4 17:57 cache
lrwxrwxrwx  1 fhem dialout     15 Mar  3 14:23 certs -> /opt/fhem/certs
-rw-r--r--  1 fhem dialout 441431 Mar  4 18:08 CHANGED
-rw-r--r--  1 fhem dialout     97 Mar  4 12:14 configDB.conf
-rw-r--r--  1 fhem dialout  18432 Mar  4 12:10 configDB.db
-rw-r--r--  1 fhem dialout  46886 Mar  4 18:08 configDB.pm
drwxr-xr-x 51 fhem dialout   4096 Mar  4 17:59 contrib
-rw-r--r--  1 fhem dialout     17 Mar  4 18:10 cookies.lwp
drwxr-xr-x  4 fhem dialout   4096 Mar  4 18:00 docs
drwxr-xr-x  6 fhem dialout  20480 Mar  4 18:01 FHEM
-rw-r--r--  1 fhem dialout  20469 Feb  7 08:34 fhem2.cfg
-rwxr-xr-x  1 fhem dialout 174974 Mar  4 18:14 fhem.pl
-rw-r--r--  1 fhem dialout  18092 Mar  4 18:13 GPL_V2.txt
drwxr-xr-x  3 fhem dialout   4096 Mar  4 18:02 lib
lrwxrwxrwx  1 fhem dialout     13 Mar  3 14:24 log -> /opt/fhem/log
lrwxrwxrwx  1 fhem dialout     21 Mar  3 14:24 log-archive -> /opt/fhem/log-archive
-rw-r--r--  1 fhem dialout  47157 Mar  4 18:15 MAINTAINER.txt
lrwxrwxrwx  1 fhem dialout     13 Mar  3 14:24 mp3 -> /opt/fhem/mp3
drwxr-xr-x  2 fhem dialout   4096 Mar  4 18:03 restoreDir
lrwxrwxrwx  1 fhem dialout     13 Mar  4 18:06 tmp -> /opt/fhem/tmp
drwxr-xr-x 10 fhem dialout   4096 Mar  4 18:07 www

pi@fhem:~ $ cat /opt/fhem2/configDB.conf
%dbconfig= (
connection => "SQLite:dbname=/opt/fhem2/configDB.db",
user => "",
password => ""
);
Die zweite Instanz wird noch immer aus der ersten per notify gestartet:
defmod nt_StartFhem2 notify global:INITIALIZED "perl /opt/fhem2/fhem.pl /opt/fhem2/fhem2.cfg"Ein 'configdb migrate' der Instanz aus /fhem2 landet noch immer in der falschen DB:

Starting migration...
Processing: database initialization
Processing: save config
Processing: save state
Processing: fileimport
importing: ./log/eventTypes2.txt
importing: ./www/gplot/template.gplot
importing: ./www/gplot/templateDB.gplot
importing: ./FHEM/template.layout
importing: ./FHEM/FhemUtils/uniqueID
Migration completed

-----------------------------------------------------------------
 configDB Database Information
-----------------------------------------------------------------
 d:$Id: configDB.pm 27887 2023-08-23 20:13:34Z betateilchen $
 c:unknown
-----------------------------------------------------------------
 dbconn: SQLite:dbname=/opt/fhem/configDB.db
 dbtype: SQLITE
 dbsize: 178.00 KB
-----------------------------------------------------------------
 loaded:       41516b27f97f112b7a6135813aab594a
 lastReorg:   
 config:       286 entries

 Ver 0 saved: Tue Mar  4 18:25:51 2025 def: 34 attr: 206
 Ver 1 saved: Sat Jun  1 10:00:24 2019 def: 5 attr: 5
-----------------------------------------------------------------
 filesave: 6 files stored in database
-----------------------------------------------------------------

... jetzt habe ich keine Idee mehr. Bekommt der beim Start per 'perl /opt/fhem2/fhem.pl /opt/fhem2/fhem2.cfg' irgendwie noch das aktuelle Verzeichnis der ersten Instanz mit? Wie bekomme ich das raus?
Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...

rudolfkoenig

ZitatBekommt der beim Start per 'perl /opt/fhem2/fhem.pl /opt/fhem2/fhem2.cfg' irgendwie noch das aktuelle Verzeichnis der ersten Instanz mit?
Ja, was denn sonst? :)

ZitatWie bekomme ich das raus?
Z.Bsp. mit
define myPwd notify global:INITIALIZED { Log 1, "My PWD IS:".`pwd` }
Ich schlage vor das Starten anzupassen:
defmod nt_StartFhem2 notify global:INITIALIZED "cd /opt/fhem2;; perl fhem.pl fhem2.cfg"

betateilchen

#5
Zitat von: rudolfkoenig am 04 März 2025, 19:16:16Ich schlage vor das Starten anzupassen:
defmod nt_StartFhem2 notify global:INITIALIZED "cd /opt/fhem2;; perl fhem.pl fhem2.cfg"

@Rudi: Das wird nicht dauerhaft funktionieren, wenn er gerne mit configDB arbeiten möchte... (siehe Threadtitel)

Aber zumindest, um eine Migration durchzuführen, könnte es vielleicht so funktionieren, wenn man die Pfadangaben weglässt und direkt aus dem Verzeichnis startet.

Zwei FHEM Installationen auf dem gleichen Rechner mit configDB habe ich selbst noch nie getestet.
Es gab mal die Idee, mehrere Konfigurationen auf unterschiedlichen hosts (!) in eine gemeinsame configDB zu schreiben, aber die Versuche habe ich auch wegen Nichtwartbarkeit aufgegeben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

PSI69

Moin zusammen!
Zitatdefine myPwd notify global:INITIALIZED { Log 1, "My PWD IS:".`pwd` }
Ups, so einfach ;D

Zitatdefmod nt_StartFhem2 notify global:INITIALIZED "cd /opt/fhem2;; perl fhem.pl fhem2.cfg"
Das klingt für mich sehr plausibel, aber:

Zitat@Rudi: Das wird nicht dauerhaft funktionieren, wenn er gerne mit configDB arbeiten möchte... (siehe Threadtitel)

Aber zumindest, um eine Migration durchzuführen, könnte es vielleicht so funktionieren, wenn man die Pfadangaben weglässt und direkt aus dem Verzeichnis startet.

Zwei FHEM Installationen auf dem gleichen Rechner mit configDB habe ich selbst noch nie getestet.
Es gab mal die Idee, mehrere Konfigurationen auf unterschiedlichen hosts (!) in eine gemeinsame configDB zu schreiben, aber die Versuche habe ich auch wegen Nichtwartbarkeit aufgegeben.

Was erwartest Du für Probleme?
Und - wahrscheinlich würde es mir dann auch nichts bringen, eine eigene Service Definition für systemctl zu schreiben aka fhem2.service und den Start darüber durchzuführen? Zumindest wird darin ja das Arbeitsverzeichnis vorab gesetzt...

Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...

PSI69

Moin zusammen!
Nur zur Info: beide Instanzen werden nun über systemctl verwaltet; FHEM update/backup/etc je Instanz klappt. Ich schau mir das jetzt über das WE an und danach gehts weiter mit meinen Versuchen zur configDB...
Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...

betateilchen

Inzwischen hatte ich ein bisschen Zeit, über das Thema nachzudenken.

Genaugenommen und auf das wesentliche reduziert, lautet die eigentliche Frage doch:

Zitat"Kann man FHEM mit configDB in einem anderen Verzeichnis als /opt/fhem betreiben?"

Nach einigem Überlegen kam ich zu dem Schluß, dass ich keinen Grund wüsste, warum das nicht gehen sollte. Also habe ich das mal ausprobiert, um meinen Gedanken zu belegen. Dazu habe ich temporär einen zusätzlichen Server bei AWS mit Debian 12.8 bestellt, auf dem ich die Tests machen wollte.

  • Gemäß der Anleitung zur manuellen Installation auf debian.fhem.de das aktuelle nightly installiert
  • in der fhem.cfg noch eben ein telnet device angelegt, um das Testen zu erleichtern
  • das entstandene Verzeichnis /opt/fhem in /opt/fhem2 umbenannt
  • das service-File /etc/systemd/system/fhem.service nach /etc/systemd/system/fhem2.service kopiert
  • Im service-File fhem2 das WorkingDirectory=/opt/fhem2 angepasst
  • systemctl daemon-reload ausgeführt
  • service fhem start ausgeführt

Danach konnte ich mich mit telnet localhost 7072 zum laufenden FHEM verbinden.
Ein fheminfo send debug liefert:

Zitatfheminfo send debug
{"FHEMWEB":{"noModel":1},"FileLog":{"noModel":1},"autocreate":{"noModel":1},"eventTypes":{"noModel":1},"notify":{"noModel":1},"system":{"configType":"configFile","os":"linux","perl":"5.36.0","revision":"29736","uniqueID":"cf3..."},"telnet":{"noModel":1}}

Bis hierher also alles gut. FHEM läuft komplett aus /opt/fhem2. Woanders kann es auch nicht laufen, weil es auf dem Rechner das einzige Verzeichnis in /opt ist.



Nächster Schritt: Migration auf configDB.

  • das config-File für die configDB anlegen. Bei mir hat /opt/fhem2/configDB.conf folgenden Inhalt:

    %dbconfig= (
    connection => "SQLite:dbname=/opt/fhem2/sqldb/configDB.db",
    user => "",
    password => ""
    );

  • eine leere configDB.db in /opt/fhem2/sqldb/ anlegen

Danach wieder per telnet zum FHEM verbinden und configdb migrate ausführen.

Ergebnis:

Zitat
Starting migration...
Processing: database initialization
Processing: save config
Processing: save state
Processing: fileimport
importing: ./log/eventTypes.txt
importing: ./www/gplot/template.gplot
importing: ./www/gplot/templateDB.gplot
importing: ./FHEM/template.layout
importing: ./FHEM/FhemUtils/uniqueID
Migration completed

-----------------------------------------------------------------
 configDB Database Information
-----------------------------------------------------------------
 d:$Id: configDB.pm 27887 2023-08-23 20:13:34Z betateilchen $
 c:unknown
-----------------------------------------------------------------
 dbconn: SQLite:dbname=/opt/fhem2/sqldb/configDB.db
 dbtype: SQLITE
 dbsize: 24.00 KB
-----------------------------------------------------------------
 loaded:       ae8e0a5381adc561d4b117aed916d880
 lastReorg:   
 config:       30 entries

 Ver 0 saved: Sat Mar  8 10:26:02 2025 def: 6 attr: 7
 Ver 1 saved: by cfgDB_Init  def: 3 attr: 6
-----------------------------------------------------------------
 filesave: 6 files stored in database
-----------------------------------------------------------------


Also auch das hat problemlos funktioniert.



Umstellen von fhem.cfg auf configDB

  • FHEM beenden service fhem stop
  • im service-File die Umstellung auf configDB vornehmen (entsprechende Zeile ExecStart= aktivieren, Zeile mit fhem.cfg deaktivieren)
  • systemctl daemon-reload ausführen
  • service fhem start ausführen

Danach wieder per telnet zu FHEM verbinden.

Zitat
fheminfo send debug
{"FHEMWEB":{"noModel":1},"FileLog":{"noModel":1},"autocreate":{"noModel":1},"configDB":{"SQLITE":1},"eventTypes":{"noModel":1},"notify":{"noModel":1},"system":{"configType":"configDB","os":"linux","perl":"5.36.0","revision":"29736","uniqueID":"cf3..."},"telnet":{"noModel":1}}


configdb info
-----------------------------------------------------------------
 configDB Database Information
-----------------------------------------------------------------
 d:$Id: configDB.pm 27887 2023-08-23 20:13:34Z betateilchen $
 c:$Id: 98_configdb.pm 28750 2024-04-05 10:10:51Z betateilchen $
-----------------------------------------------------------------
 dbconn: SQLite:dbname=/opt/fhem2/sqldb/configDB.db
 dbtype: SQLITE
 dbsize: 24.00 KB
-----------------------------------------------------------------
 loaded:       ae8e0a5381adc561d4b117aed916d880
 lastReorg:   
 config:       30 entries

 Ver 0 saved: Sat Mar  8 10:26:02 2025 def: 6 attr: 7
 Ver 1 saved: by cfgDB_Init  def: 3 attr: 6
-----------------------------------------------------------------
 filesave: 6 files stored in database
-----------------------------------------------------------------



Fazit: Works as designed.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

PSI69

ZitatFazit: Works as designed.
Klingt gut - Du hast schneller die Zeit gefunden / Dir genommen als ich. Das Wetter ist super, die Gartensaison hat begonnen :). Dann steht ja meiner Migration überhaupt nichts mehr im Weg! Vielen Dank für den Test & ein schönes Wochenende!
Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...

PSI69

Moin! Ich musste gestern Nachmittag doch noch 'basteln'; passt...

Nur folgendes ist mir im Zusammenhang mit der configDB aufgefallen:

defmod SYS_Backup dummy
attr SYS_Backup alias FHEM Backup ausführen
attr SYS_Backup group Backup
attr SYS_Backup room Infrastruktur->FHEM
attr SYS_Backup webCmd Ausführen

setstate SYS_Backup FHEM-20250208_225000.tar.gz\nFHEM-20250209_225000.tar.gz\nFHEM-20250210_225000.tar.gz\nFHEM-20250211_225000.tar.gz\nFHEM-20250212_225000.tar.gz\nFHEM-20250213_225002.tar.gz\nFHEM-20250214_225000.tar.gz\nFHEM-20250215_225000.tar.gz\nFHEM-20250216_225000.tar.gz\nFHEM-20250217_225000.tar.gz\nFHEM-20250218_225000.tar.gz\nFHEM-20250219_225000.tar.gz\nFHEM-20250220_225000.tar.gz\nFHEM-20250221_225000.tar.gz\nFHEM-20250222_225000.tar.gz\nFHEM-20250223_225000.tar.gz\nFHEM-20250224_225000.tar.gz\nFHEM-20250225_225000.tar.gz\nFHEM-20250226_225000.tar.gz\nFHEM-20250227_225000.tar.gz\nFHEM-20250228_225000.tar.gz\nFHEM-20250301_225000.tar.gz\nFHEM-20250302_225000.tar.gz\nFHEM-20250303_225000.tar.gz\nFHEM-20250304_225000.tar.gz\nFHEM-20250305_225002.tar.gz\nFHEM-20250306_225000.tar.gz\nFHEM-20250307_225000.tar.gz\nFHEM-20250308_225000.tar.gz\nFHEM-20250309_225001.tar.gz
setstate SYS_Backup 2025-03-09 22:50:01 state FHEM-20250208_225000.tar.gz\nFHEM-20250209_225000.tar.gz\nFHEM-20250210_225000.tar.gz\nFHEM-20250211_225000.tar.gz\nFHEM-20250212_225000.tar.gz\nFHEM-20250213_225002.tar.gz\nFHEM-20250214_225000.tar.gz\nFHEM-20250215_225000.tar.gz\nFHEM-20250216_225000.tar.gz\nFHEM-20250217_225000.tar.gz\nFHEM-20250218_225000.tar.gz\nFHEM-20250219_225000.tar.gz\nFHEM-20250220_225000.tar.gz\nFHEM-20250221_225000.tar.gz\nFHEM-20250222_225000.tar.gz\nFHEM-20250223_225000.tar.gz\nFHEM-20250224_225000.tar.gz\nFHEM-20250225_225000.tar.gz\nFHEM-20250226_225000.tar.gz\nFHEM-20250227_225000.tar.gz\nFHEM-20250228_225000.tar.gz\nFHEM-20250301_225000.tar.gz\nFHEM-20250302_225000.tar.gz\nFHEM-20250303_225000.tar.gz\nFHEM-20250304_225000.tar.gz\nFHEM-20250305_225002.tar.gz\nFHEM-20250306_225000.tar.gz\nFHEM-20250307_225000.tar.gz\nFHEM-20250308_225000.tar.gz\nFHEM-20250309_225001.tar.gz

Mich 'stören' hier die '\n'.

Gesetzt wird das durch folgendes:
defmod nt_SYS_BackupRun notify SYS_Backup:* {\
fhem("backup");;\
opendir DIR, "./backup" or die $!;;\
my @mybackups =();;\
while(my $file = readdir DIR){ \
  next if($file eq "." || $file eq "..");;\
  push(@mybackups,$file);;\
}\
closedir DIR;;\
@mybackups = join("\
", sort(@mybackups) );;\
fhem("set SYS_Backup @mybackups");;\
}
attr nt_SYS_BackupRun alias Benachrichtigung FHEM Backup ausführen
attr nt_SYS_BackupRun group Backup
attr nt_SYS_BackupRun room Infrastruktur->FHEM

setstate nt_SYS_BackupRun 2025-03-09 22:50:01
setstate nt_SYS_BackupRun 2025-03-10 03:32:09 state active
setstate nt_SYS_BackupRun 2025-03-09 22:50:01 triggeredByDev SYS_Backup
setstate nt_SYS_BackupRun 2025-03-09 22:50:01 triggeredByEvent Ausführen

Zur FHEM Laufzeit manuell angestoßen, wird das Reading auch sauber erzeugt:
defmod SYS_Backup dummy
attr SYS_Backup alias FHEM Backup ausführen
attr SYS_Backup group Backup
attr SYS_Backup room Infrastruktur->FHEM
attr SYS_Backup webCmd Ausführen

setstate SYS_Backup FHEM-20250209_225000.tar.gz\
FHEM-20250210_225000.tar.gz\
FHEM-20250211_225000.tar.gz\
FHEM-20250212_225000.tar.gz\
FHEM-20250213_225002.tar.gz\
FHEM-20250214_225000.tar.gz\
FHEM-20250215_225000.tar.gz\
FHEM-20250216_225000.tar.gz\
FHEM-20250217_225000.tar.gz\
FHEM-20250218_225000.tar.gz\
FHEM-20250219_225000.tar.gz\
FHEM-20250220_225000.tar.gz\
FHEM-20250221_225000.tar.gz\
FHEM-20250222_225000.tar.gz\
FHEM-20250223_225000.tar.gz\
FHEM-20250224_225000.tar.gz\
FHEM-20250225_225000.tar.gz\
FHEM-20250226_225000.tar.gz\
FHEM-20250227_225000.tar.gz\
FHEM-20250228_225000.tar.gz\
FHEM-20250301_225000.tar.gz\
FHEM-20250302_225000.tar.gz\
FHEM-20250303_225000.tar.gz\
FHEM-20250304_225000.tar.gz\
FHEM-20250305_225002.tar.gz\
FHEM-20250306_225000.tar.gz\
FHEM-20250307_225000.tar.gz\
FHEM-20250308_225000.tar.gz\
FHEM-20250309_225001.tar.gz\
FHEM-20250310_063139.tar.gz
setstate SYS_Backup 2025-03-10 06:31:39 state FHEM-20250209_225000.tar.gz\
FHEM-20250210_225000.tar.gz\
FHEM-20250211_225000.tar.gz\
FHEM-20250212_225000.tar.gz\
FHEM-20250213_225002.tar.gz\
FHEM-20250214_225000.tar.gz\
FHEM-20250215_225000.tar.gz\
FHEM-20250216_225000.tar.gz\
FHEM-20250217_225000.tar.gz\
FHEM-20250218_225000.tar.gz\
FHEM-20250219_225000.tar.gz\
FHEM-20250220_225000.tar.gz\
FHEM-20250221_225000.tar.gz\
FHEM-20250222_225000.tar.gz\
FHEM-20250223_225000.tar.gz\
FHEM-20250224_225000.tar.gz\
FHEM-20250225_225000.tar.gz\
FHEM-20250226_225000.tar.gz\
FHEM-20250227_225000.tar.gz\
FHEM-20250228_225000.tar.gz\
FHEM-20250301_225000.tar.gz\
FHEM-20250302_225000.tar.gz\
FHEM-20250303_225000.tar.gz\
FHEM-20250304_225000.tar.gz\
FHEM-20250305_225002.tar.gz\
FHEM-20250306_225000.tar.gz\
FHEM-20250307_225000.tar.gz\
FHEM-20250308_225000.tar.gz\
FHEM-20250309_225001.tar.gz\
FHEM-20250310_063139.tar.gz

Führe ich jetzt ein 'systemctl stop fhem.service' & 'systemctl start fhem.service' aus - was der Backup Job in der Nacht u.a. erledigt - dann werden die '\n' wieder (aus der configDB?) gesetzt.

Gruß Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...