FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Beta-User am 20 September 2021, 22:45:49

Titel: 31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 20 September 2021, 22:45:49
Hallo justme1968,

anbei patch-Vorschlag mit den zwei Aspekten aus dem Thread-Titel. Vielleicht magst du ja das eine und/oder andere verwerten...

Grüße!
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 10 Oktober 2021, 20:09:25
*push*
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: justme1968 am 26 Oktober 2021, 17:04:15
danke für den schubs. ich schaue es mir an.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 26 Oktober 2021, 17:17:13
Gerne :) .

Vielleicht noch eine Anmerkung betr. das configDB-Thema: Da die LightScene-statefile beim Start gelesen wird und beim Beenden (zusammen mit der globalen) geschrieben, gibt es eine Lücke, wenn man configDB bereits nutzt und dann das Modul (z.B. per update) aktualisiert. Eigentlich müßte man dann zu diesem Zeitpunkt die LS-statefile importieren/importiert haben.
Beim nächsten Start wird dann nämlich aus der DB gelesen, was ohne diesen Zwischenschritt nicht klappt => alle Szenen sind weg.

An sich könnte man das durch eine entsprechende automatische Erkennung (hier: mit direktem Import) verhindern, aber sowas ähnliches hatte ich mal bei weekprofile vorgeschlagen, was aber nicht gerne gesehen gewesen war.
Vielleicht sollte man das bei UPDATE deutlich vermerken (oder gar manuellen import-Code anbieten?)

"migrate" sollte dagegen stressfrei funktionieren.

Also falls jemand Ideen hat...
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: justme1968 am 27 Oktober 2021, 12:27:12
der patch an sich schaut gut und unproblematisch aus.

das potentielle verhalten beim update gefällt mir aber noch nicht. wenn man schon configdb nutzt und das modul aktualisiert sollte auf keinen fall etwas verloren gehen. ich könnte mir unterschiedliche varianten vorstellen:

- wenn configdb verwendet wird und beim starten kein lightscene config file gefunden wird, schaut das modul
  automatisch nach ob es ein echtes config file gibt und liest dieses.
- sobald es zum ersten mal in die db geschrieben wird könnte man dann das file in ...old umbenennen damit
  das nur ein mal passiert.
- ab da geht es nur noch mit configdb weiter.

falls das so passt... könntest du das mal probieren? ich verwende configdb nicht.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 27 Oktober 2021, 13:03:21
An sich ist es kein Problem, eine Erweiterung des Lese-Codes dahingehend zu machen, dass bei fehlgeschlagenem Lesen aus der DB dann aus dem filesystem gelesen und ggf. dann direkt sogar ein Import angestoßen wird.
Mein "Problem": Sowas hatte ich für weekprofile schon mal vorgeschlagen und mir deutlichste Kritik von wissender Seite zugezogen...

Andererseits: Da entstehen im laufenden Betrieb keine Probleme, hier habe ich keine Idee, wie man das nachträglich gut reparieren kann (ohne einen extra setter+code zu generieren). Von daher werde ich mal die angehängte Fassung testen und die configFile aus der DB löschen. Dann sollte es bei einem Neustart wenigstens natlos weitergehen, ohne dass die alte File gelöscht wird...
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: betateilchen am 27 Oktober 2021, 19:04:14
Es geht ja erstmal nichts verloren, die vorhandene Datei befindet sich ja nach wie vor im Dateisystem.

Man könnte nach der Feststellung, dass ein configfile fehlt, einen entsprechenden Logeintrag schreiben, in dem man den Benutzer auffordert, die Datei einmalig per "configdb filemove <dateiName>" in die Datenbank zu importieren.

Ähnliches Vorgehen hat sich in der Vergangenheit bei anderen Modulen bewährt.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 27 Oktober 2021, 20:01:06
Zitat von: betateilchen am 27 Oktober 2021, 19:04:14
Es geht ja erstmal nichts verloren, die vorhandene Datei befindet sich ja nach wie vor im Dateisystem.
Ja und nein....

Das Problem bei LightScene ist in der Hinsicht, dass der aktuelle Zustand immer mit in die jeweilige stateFile geschrieben wird, wenn alles gespeichert wird. Das verhält sich also eher wie die "globale stateFile", was soviel bedeutet wie: ab dem 2. Start ist die dann da (in der configDB), aber halt mit dem falschen (leeren) Inhalt, und - noch ungeschickter - man kann auch nicht einfach so die alte laden oder importieren. Letzteres klappt zwar, ist aber nur wirkungsvoll, wenn man dann FHEM irregulär beendet...

Falls du Ideen hast, was ich übersehen habe: her damit ;) .
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: justme1968 am 31 Oktober 2021, 09:24:33
was spricht denn gegen das einmalige automatische importieren? als nicht configdb anwender erscheint es mir nicht fehleranfällig und das was ein anwender erwartet.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 01 November 2021, 07:36:12
Es spricht "nur" dagegen, dass es bei allen anderen Modulen anders ist und man dort was aktiv importieren muss.

Da hier m.E.
- gar kein befriedigendes Ergebnis mit einem nachträglichen Import zu erzielen ist, und
- alle ein Problem haben, die diese Kleinigkeit, dass man kurz noch die statefile importieren muss während/vor dem update übersehen,
macht es mAn. Sinn, diese "einmalig erforderliche Code-Sonderlocke" als dauerhaften Einbau in Kauf zu nehmen, und ggf. dann bei Version 6.3 darüber nachzudenken, die "drei Zeilen" wieder entfallen zu lassen. Denn sobald jemand die "configDB-Version" im Einsatz hatte, wird via migrate ja auch der Import angeschubst. Anders gesagt: das Problem wächst sich raus, und nur, wer nicht regelmäßig updates fährt, hat halt irgendwann ein Problem.

Nicht die reine Lehre, aber bis dato haben wir auch keinen besseren Vorschlag gehört, oder?
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: justme1968 am 15 Dezember 2021, 19:40:11
der id teil des patches ist eingecheckt. für den configdb teil würde ich gerne die automatische variante verwenden. bräuchte aber einen freiwilligen zum testen. ich verwende nirgendwo configdb.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 18 Dezember 2021, 17:53:26
So, in meiner Version von neulich war in der Tat noch ein Bug drin...

Wie folgt getestet:
- Start mit aktueller svn-Version, LightScene.save aus der configDB gelöscht.
- nach dem Start geprüft, ob wirklich die File nicht in der DB ist
- dann die angehängte Version über die svn-Version kopiert
- Neustart, (vorher kein reload)
- LightScene.save wird vom Dateisystem gelesen, alles da (ok)
- weiter keine File in configDB, auch nicht nach einem Neustart (m.E. auch ok)
- dann ein (allgemeines) "save" => File ist in configDB da. Alles erwartungsgemäß.

Will man einen Import forcieren, müßte man ab #406 auch noch einen internen Merker setzen, von wo die File kam, und das beim save dann wieder auswerten...
Fände ich nicht so intuitiv, aber wenn gewünscht, baue ich das auch noch ein...
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: justme1968 am 19 Dezember 2021, 10:40:57
das schaut für mich erst mal gut aus. wenn es keine einwände gibt würde ich das nächste woche einchecken.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 29 Januar 2022, 06:40:32
Zitat von: justme1968 am 19 Dezember 2021, 10:40:57
das schaut für mich erst mal gut aus. wenn es keine einwände gibt würde ich das nächste woche einchecken.
Gab es denn Einwände?



Hier auch noch eine HUEBridge-Fassung mit "id"-commandref.

Da sind noch ein paar Kleinigkeiten ergänzt. V.A. "updaterule" wäre einen Blick wert, und zu "eventstreamTimeout" ist mir nichts eingefallen...
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: betateilchen am 29 Januar 2022, 20:09:20
für mich klingt das irgendwie furchtbar kompliziert...

Im Moment kann ich mir die vorgeschlagene Umsetzung nicht anschauen, ich hole das aber gerne Anfang der Woche nach.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 02 Februar 2022, 04:46:45
[OT]
Hier noch das diff für HUEBridge (commandref).

Zitat von: Beta-User am 29 Januar 2022, 06:40:32
Da sind noch ein paar Kleinigkeiten ergänzt. V.A. "updaterule" wäre einen Blick wert, und zu "eventstreamTimeout" ist mir nichts eingefallen...
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: justme1968 am 02 Februar 2022, 08:52:16
ups. danke! der commandref teil ist eingecheckt.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 02 Februar 2022, 09:14:59
Danke zurück!
Und sorry für den Teil-OT; eilte ja andererseits nicht wirklich...
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 09 Februar 2022, 15:45:42
Bis dato nur die Rückmeldung "sehr kompliziert", aber immer noch keine Einwände... (Ich würde das gerne von meiner Liste nehmen. Wenn es nicht gewünscht ist, bitte einfach deutlich rückmelden, dann ist das für mich auch gegessen.)
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: justme1968 am 09 Februar 2022, 19:21:05
ich finde die logik an sich gut. auf diese art würde es komplett automatisch im hintergrund laufen. so sollte es auch sein.

ansonsten verwende ich configdb nicht und kann nicht mehr dazu sagen baue es aber gerne so ein.
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: Beta-User am 29 März 2022, 12:37:06
Zitat von: justme1968 am 09 Februar 2022, 19:21:05
baue es aber gerne so ein.
*push*

Ergänzend, aber OT: Color.pm verursacht in manchen Fällen warnings, siehe https://forum.fhem.de/index.php/topic,123614.msg1182727.html#msg1182727 (aktuell wieder: https://forum.fhem.de/index.php/topic,124773.msg1215577.html#msg1215577).
Titel: Antw:31_LightScene.pm - patch für commandref-id und configDB
Beitrag von: justme1968 am 01 April 2022, 17:55:55
dein lightscene vorschlag ist eingecheckt.

zu color melde ich mich gleich noch mal