LightScene Modul mit configdb -- Szenen nach FHEM Neustart verschwunden

Begonnen von Ziton, 17 September 2022, 16:36:01

Vorheriges Thema - Nächstes Thema

Ziton

Hallo Zusammen,

mir ist nach meinem gestrigen FHEM Update und dem damit verbundenen Neustart aufgefallen, dass zwar meine angelegten LightScene Devices mit den entsprechend zugeordneten Geräten noch vorhanden sind, diese aber keinerlei gespeicherte Szene mehr enthalten.
Ich habe mich daraufhin auf die Suche gemacht nach dem Configfile LightScenes.save des LightScene Moduls. Die Datei soll nach meiner Recherche in fhem/log abgelegt werden.
Jedoch ist die Datei auf meiner Installation nicht zu finden. Auch in meinem FHEM Backup vor dem Update gibt es die Datei nicht.

Ich muss dazu sagen, ich weiß nur das ich die Lichtszenen erst im Frühjahr diesen Jahres erstellt habe. Ich weiß weder wann ich zuvor das letzte FHEM Update oder den letzten FHEM Neustart durchgeführt habe.

Ich habe daraufhin einfach eine beliebige neue Szene erstellt und gespeichert. Auch das hat nicht dazu geführt, dass die Datei LightScenes.save angelegt wurde. Nach einem Neustart war auch diese
zuvor angelegte Szene verschwunden.

Nun habe ich in den Release Notes gelesen, dass im April diesen Jahres im Modul die Anbindung an configdb (welche ich Nutze) ergänzt wurde, habe aber ansonsten keinerlei Dokumentation darüber entdeckt. Ich vermute also, dass die Lichtszenen eigentlich in der Datenbank gespeichert werden sollten. Kann dies aber weder in der Datenbank feststellen noch bekomme ich beim anlegen eine neuen Szene eine Fehlermeldung im Logfile (verbose Level 5 im LightScene Device) die auf einen "Speicherfehler" hinweist.

Was ich beim Speichern einer Szene bekomme ist folgende Fehlermeldung:
2022.09.17 16:29:38 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/31_LightScene.pm line 482.

Ich hoffe es kann mir jemand von euch weiterhelfen.
Wenn noch weitere Informationen benötigt werden, liefere ich diese gerne nach.

Gruß Ziton

justme1968

#1
da ich configdb nicht verwende kann ich dir gerade nicht wirklich weiter helfen. frag mal bitte bei Beta-User nach. der hatte den patch gebaut.

edit: ich habe ihm gerade schon eine nachricht geschickt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Beta-User

Hmm, bei configDB wird die LightScene-Konfiguration in der DB gespeichert, wenn du also Szenen angelegt hattest, müßte da auch was zu finden sein.

Dabei wird (soweit ich mich entsinne) die vorhandene Konfiguration auch aus dem filesystem gelesen, falls keine in der DB zu finden ist, erst danach geht es mit der DB weiter.

Da hier anscheinend gar keine Konfiguration im Filesystem zu finden war, wurde auch nichts übernommen. Komisch ist allerdings, dass die .save nicht in der DB zu finden sein soll. Das dürfte auch nichts mit dem Warning zu tun haben, das vermutlich eine Folge aus dem "undef"-default in Zeile 478 ist. Vermutlich wäre an der Stelle ein '' geschickter?

Ansonsten habe ich im Moment keine Idee, ich hatte es mit und ohne vorhandener .save getestet und dabei keine Probleme festgestellt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ziton

Die einzigen .save Dateien sind die <uuid>.fhem.save Dateien die automatisch beim Speichern der Konfiguration erzeugt werden.

Ich habe grade nochmal ein komplett neues LightScene Device angelegt und eine Szene gespeichert auch dabei wurde kein configFile in die Datenbank geschrieben.

Ich habe ansonsten auch keinerlei Probleme im Zusammenhang mit der Datenbank.
Gibt es noch Dinge die ich ausprobieren kann um das Problem einzugrenzen? Das Log scheint ja diesbezüglich keine Hilfe zu sein.

Beta-User

Hmm, was wird denn im Internal CONFIGFILE angezeigt?
Und in einem list sind auch SCENES vorhanden?

Bin im Moment etwas ratlos...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ziton

Im Internal CONFIGFILE steht jeweils LightScenes.save

Hier mal ein Beispiel, Szenen sind vorhanden.

Internals:
   CONFIGFILE LightScenes.save
   DEF        MQTT2_zigbee_bedroom Sz.Di.00_Dim
   FUUID      632836b8-f33f-9d63-fce6-8eb68985e3fc982a
   HAS_DataDumper 1
   HAS_JSON   1
   NAME       Sz.Sz.00
   NR         10885
   NTFY_ORDER 50-Sz.Sz.00
   STATE      Initialized
   TYPE       LightScene
   eventCount 57
   mayBeVisible 1
   CONTENT:
     MQTT2_zigbee_bedroom 1
     Sz.Di.00_Dim 1
   SCENES:
     AllesAn:
       Sz.Di.00_Dim on
       MQTT2_zigbee_bedroom:
         icon       dim50%
         state:
           brightness 135
           color 8001FF
     AllesAus:
       Sz.Di.00_Dim off
       MQTT2_zigbee_bedroom:
         icon       off
         state      off
     TV:
       Sz.Di.00_Dim off
       MQTT2_zigbee_bedroom:
         icon       dim50%
         state:
           brightness 135
           color 8001FF
   devices:
     MQTT2_zigbee_bedroom
     Sz.Di.00_Dim
Attributes:
   DbLogExclude .*
   alias      Szenen Schlafzimmer
   room       Services
   verbose    5

Beta-User

Hmm, bei mit steht das Internal auf
./log/LightScenes.save

Demnach ist bei dir das stateFile in global nicht gesetzt, oder?

(Kann sein, dass man das bei configDB nicht braucht, bei mir ist es - warum auch immer - halt gesetzt).
Falls das der Fall ist (also nicht gesetzt), müßte man am Code an ein paar Stellen Kleinigkeiten umstellen.

EDIT: Bitte mal mit der angehängten Version testen. Nach einem Neustart sollte dann auch bei configDB der obige default angezeigt und die Save- und Load-Anweisungen nicht vorzeitig verlassen werden.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ziton

Zitat von: Beta-User am 19 September 2022, 13:31:16
Demnach ist bei dir das stateFile in global nicht gesetzt, oder?

Das ist korrekt!

Scheint so, dass der Parameter bei configDB nicht gebraucht wird. Habe stateFile jetzt nachträglich auf log/fhem.save gesetzt und einen Neustart durchgeführt. Hat auf das stateFile keine Auswirkung da
weiterhin configdb das sagen hat.
Für Lightscenes wurde aber jetzt CONFIGFILE  automatisch auf log/LightScenes.save geändert und das Configfile in der Datenbank gesichert.

Damit ist mein Problem gelöst. Stellt sich die Frage ob man dennoch abfangen sollte falls stateFile nicht gesetzt ist in Verbindung mit configdb.

Danke für deine Unterstützung  :)

Ziton

Zitat von: Beta-User am 19 September 2022, 13:31:16
EDIT: Bitte mal mit der angehängten Version testen. Nach einem Neustart sollte dann auch bei configDB der obige default angezeigt und die Save- und Load-Anweisungen nicht vorzeitig verlassen werden.

Sorry dafür war ich jetzt zu langsam und du zu schnell  ;D
Aber ich gehe nochmal einen Schritt zurück und teste das.

Beta-User

Zitat von: Ziton am 19 September 2022, 13:54:18
Sorry dafür war ich jetzt zu langsam und du zu schnell  ;D
Aber ich gehe nochmal einen Schritt zurück und teste das.
Super, Danke! Dann muss ich das Attribut nicht selbst mal löschen ;D  ...

Zitat
Danke für deine Unterstützung  :)
Danke für die Mithilfe beim Finden des eigentlichen Auslösers!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ziton

Mit deiner Version wird jetzt beim erstellen eines LightScene Devices CONFIGFILE auf ./log/LightScenes.save gesetzt auch wenn statefile nicht gesetzt ist.

Beim speichern von Lichtszenen wird aber kein Configfile in die Datenbank geschrieben und nach einem Neustart sind die Szenen wieder verschwunden.
Das wird auch im Log dokumentiert
2022.09.19 14:09:36 1: LightScene_Load: please import your config file ./log/LightScenes.save into configDB!
2022.09.19 14:09:36 1: LightScene_Load: Cannot open ./log/LightScenes.save: Can't open ./log/LightScenes.save: No such file or directory

Beta-User

Muss mal drüber nachdenken. Das mit dem "Load" ist klar, die Datei ist ja noch nicht vorhanden, und zwar weder in der DB noch im Filesystem. Bis dahin ist also eigentlich alles korrekt.

Hast du dann ein globales save gemacht oder ein "isoliertes" save (für eine Scene)? Soweit ich das im Moment durchblicke, dürfte ein "save scene" lediglich die Internals zwischenspeichern, auf die Platte gelegt werden die erst duch ein reguläres save (egal ob configDB oder Filesystem).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ziton

Ich war der Meinung sowohl als auch.

Habe grade noch einmal global gespeichert. Jetzt wurde das configfile geschrieben. Also mein Fehler anscheinend.  ::)

Dann funktioniert deine Version würde ich sagen

EDIT: Macht es dann ggf. Sinn darauf hinzuweisen die Konfiguration global zu speichern oder kann man ggf. die Konfiguration als geändert markieren nach dem anlegen einer Szene?

Beta-User

#13
@justme1968:
Zitat von: Ziton am 19 September 2022, 14:45:36
Dann funktioniert deine Version würde ich sagen
Schaust du bitte auch nochmal kritisch drüber und checkst es ggf. dann ein?

Zitat
EDIT: Macht es dann ggf. Sinn darauf hinzuweisen die Konfiguration global zu speichern oder kann man ggf. die Konfiguration als geändert markieren nach dem anlegen einer Szene?
@justme1968: FHEMWEB ist nicht so meine Stärke, ich vermute, das würde irgendwelche Tricks erfordern. Vielleicht auch ein Doku-Thema? Habe jedenfalls die "id"-Geschichte auf die setter erweitert und bei save einen kurzen Hinweis aufgenommen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

ZitatFHEMWEB ist nicht so meine Stärke, ich vermute, das würde irgendwelche Tricks erfordern.
Ist nicht wirklich FHEMWEB (der fragt nur "save ?" ab), und den Aufruf von addStructChange($command, $device, $param) wuerde ich jetzt auch nicht unbedingt als "Trick" einordnen.

Beta-User

#15
Zitat von: rudolfkoenig am 19 September 2022, 15:18:55
Ist nicht wirklich FHEMWEB (der fragt nur "save ?" ab), und den Aufruf von addStructChange($command, $device, $param) wuerde ich jetzt auch nicht unbedingt als "Trick" einordnen.
Hmm, habe mich damit halt noch nie befasst...

Anbei eine Version, die das hoffentlich an der richtigen Stelle einfügt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ziton

Zitat von: Beta-User am 19 September 2022, 16:09:55
Anbei eine Version, die das hoffentlich an der richtigen Stelle einfügt.

Die Stelle scheint gut getroffen, funktioniert!  :)
Nach dem Speichern einer Szene erscheint nun eine ungesicherte Änderung der Konfiguration

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ziton

Zitat von: Beta-User am 19 September 2022, 16:28:54
Danke nochmal für's Testen!
Gerne, das kann ich wenigstens  ;D

Würde es der Vollständigkeit halber Sinn machen den structchange auch noch für die Commands rename und remove einzufügen?


Beta-User

#19
Zitat von: Ziton am 19 September 2022, 17:08:48
Gerne, das kann ich wenigstens  ;D

Würde es der Vollständigkeit halber Sinn machen den structchange auch noch für die Commands rename und remove einzufügen?
Na ja, Mitdenken würde ich neben dem Testen auch noch dazuzählen, guter Hinweis, here you are:
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ziton

Funktioniert ebenso!
Ich denke das sollte es jetzt aber gewesen sein.  :)

justme1968

ich habe eben die letzte version eingecheckt. danke fürs ändern und testen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968