config files in fhem editieren

Begonnen von justme1968, 05 Januar 2019, 20:39:56

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Wohl nicht ganz so trivial. Nach dem Editieren wird leider nur Dateiname an FHEMWEB zurueckgeliefert, und FW_fileNameToPath entscheidet anhand Dateiendung, wo es hingehoert, mit moddir/FHEM/Dateiname, falls sonst nirgendwo passt.
Ideen?

betateilchen

Zitat von: rudolfkoenig am 18 Januar 2019, 18:39:14
Wohl nicht ganz so trivial.

Stimmt :)

Ich arbeite gerade an dem Thema. Bin in den nächsten Tagen noch öfters auf Langstrecken mit der Deutschen Bahn unterwegs...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#17
Die Bahnfahrt heute hat sich gelohnt - und sie ist noch nicht zu Ende.


  • FHEM bekommt ein neues Verzeichnis modpath/conf
  • Die Edit Files Seite bekommt einen neuen Bereich "Config files"
  • Die Namen der config Files stehen in einem neuen hash in FHEMWEB mit dem Namen %FW_customConfFiles

Die Bearbeitung der Dateien mit dem internen Editor ist ohne weitere Besonderheiten in die vorhandene Implementierung eingebunden.

Einen ersten Patch zur Begutachtung habe ich angehängt. die beiden Beispieleinträge in den hash müssen in der Produktversion natürlich rausgenommen werden.


  • Der Wert 0 im hash hat derzeit noch keine Bedeutung, ich habe einen hash zur Ablage gewählt, um die Möglichkeit zu haben, später ggf. noch weitere Aktionen mit diesen Konfigurationsdateien ausführen zu können, an die ich jetzt noch nicht gedacht habe.
  • Aus dem gleichen Grund (evtl. spätere Erweiterung) wurde die Erzeugung der regexp für die Dateiliste in eine eigene Funktion ausgelagert.
  • Die Implementierung ist bezüglich fhem.cfg und configDB völlig transparent. Bei mir liegt die Datei "karl.august" in der configDB und "demo.conf" im Dateisystem. FHEMWEB erkennt das wie bisher automatisch, lädt die Datei von der richtigen Quelle und speichert sie auch wieder an den richtigen Speicherort ab.

Im einfachsten Fall trägt ein Modul seine eigene Konfigurationsdatei(en) einfach in den genannten hash ein, um sie in der Liste anzuzeigen. Genau so einfach wird eine Konfigurationsdatei wieder aus der Liste gelöscht, wenn sie aus dem hash entfernt wird.

Achtung: Wer testen möchte, muss darauf achten, dass die in den hash eingetragene Datei auch tatsächlich existiert, sonst wird sie in der Liste nicht angezeigt. (Diese Prüfung kommt direkt aus FHEMWEB und hat mit der jetzigen Änderung nichts zu tun)


aktualisierter patch im weiteren Verlauf des Threads
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

An der Möglichkeit, in den hash direkt eine regexp einzutragen, arbeite ich noch. Insbesondere wenn ein Modul mehrere Konfigurationsdateien benutzt, die sich per regexp zusammenfassen lassen, wäre das ein schönes feature.

Anzeigen in der Liste geht schon, die Auflösung von file to path fehlt noch.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#19
Zitat von: betateilchen am 20 Januar 2019, 19:55:18
An der Möglichkeit, in den hash direkt eine regexp einzutragen, ...

Anzeigen in der Liste geht schon, die Auflösung von file to path fehlt noch.

funktioniert jetzt. Siehe screenshot

$FW_customConfFiles{'.*.xy'}   = "0";
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Jetzt fehlt nur noch die sinnvolle Bestueckung von FW_confFiles.
Nein, ich weiss nicht, was sinnvoll ist :)

betateilchen

#21
Wir sind auf jeden Fall für Erweiterungen vorbereitet  8)
Falls keine Erweiterungen kommen, umso besser.

Mein Hauptgedanke bei der Umsetzung war, erstmal möglichst wenig invasiv in FHEMWEB zu arbeiten und möglichst vieles zu verwenden, was an Funktionalität vorhanden und bewährt ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#22
Zitat von: rudolfkoenig am 20 Januar 2019, 20:14:10
Jetzt fehlt nur noch die sinnvolle Bestueckung von FW_confFiles.

Bevor jetzt jemand auf die Idee kommt "man könnte ja den Modulnamen eintragen, um das Modul über Änderungen an "seiner" Konfigurationsdatei zu informieren" - das funktioniert auch heute schon. Beispiele sind 02_RSS.pm und 55_InfoPanel.pm, die nach Änderungen an einer Layoutdatei im Editor diese Layoutdatei automatisch neu einlesen um sie zu verwenden.

Für jede Datei, die über den Editor geändert und gespeichert wird, wird ein event global:FILEWRITE <fileName> erzeugt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#23
Die Auflösung in file2path geht noch eleganter:

nein, doch nicht...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Ich finde es ungluecklich, dass ich fuer jedes Projekt, was Konfigurationsdateien in diesem Ordner speichern will, FHEMWEB anpassen muss, alternativ faellt mir kein Regexp ein, was alle Projekte gluecklich macht und keine sonstigen FHEM Dateien matcht.
Wie waere es mit "alle Dateien" aus FW_confDir?


justme1968

ich denke die liste der konfiguration files sollte nicht fest sein sondern dynamisch aus den modul und device hashes zusammen gesucht werden. also z.b. alle $hash->{FW_configFiles} zusammen suchen. darüber hat man dann auch umgekehrt die zuordnung welches file zu welchem modul gehört
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

betateilchen

Zitat von: rudolfkoenig am 21 Januar 2019, 09:52:47
Ich finde es ungluecklich, dass ich fuer jedes Projekt, was Konfigurationsdateien in diesem Ordner speichern will, FHEMWEB anpassen muss,

Das verstehe ich nicht: "dass ich fuer jedes Projekt, was Konfigurationsdateien in diesem Ordner speichern will, FHEMWEB anpassen muss"

Wieso musst Du FHEMWEB anpassen? Die Liste ist doch komplett dynamisch und FHEMWEB muss sich um keine regexp kümmern.

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

rudolfkoenig

@justme1968: Wozu braucht man diese Zuordnung?
@betateilchen: Wenn ich deinen Patch, so wie er ist (mit karl.august & co), einchecke, gehe ich davon aus, dass nicht alle zufrieden sind.

justme1968

weil jedes modul selber sagen soll welche config files editierbar sein sollen und man dann auch jedes modul über sein config file informieren kann.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Zitatweil jedes modul selber sagen soll welche config files editierbar sein sollen
D.h. FW_confdir ist nicht noetig, und jedes Modul kann _eine_ Datei beliebig spezifizieren. Der Benutzer kann nicht alternative oder alte Konfigrationen anschauen, und fuer eine Konfigurationsdatei muss zwingend eine FHEM-Geraete-Instanz angelegt sein.
Ich bin immer noch fuer "FHEM/conf/*", ohne Modul-Mitwirkung :)

Zitatund man dann auch jedes modul über sein config file informieren kann.
Das gibt es jetzt schon per global:FILEWRITE.