config files in fhem editieren

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

Vorheriges Thema - Nächstes Thema

justme1968

wie bekommt man am besten die möglichkeit ein config file in fhem zu editieren?

problem: für alexa-fhem ist ein (minimales) config file nötig das unter umständen vom anwender noch etwas angepasst werden muss.

eigentlich gibt es in fhem schon fast alles um das relativ komfortabel zu lösen, leider scheitert es an ein paar 'kleinigkeiten':
- das file muss in .../FHEM liegen
- es gibt keine möglichkeit .json als extension zu vergeben damit codemirror schön funktioniert

zusätzlich: wo sollte so ein config file liegen? aktuell schreibe ich es dorthin wo auch das fhem config file liegt, wenn fhem dort nicht schreiben darf landet es dort wo das statefile landet.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

CoolTux

Ich denke mal da wo auch fhem.cfg liegt ist es gut aufgehoben. Die configdb Config liegt ja z.B. auch da.
Aber eventuell sollten wir überlegen ein Verzeichnis zu benennen wo alle Dateien rein dürfen die über FHEMWEB editiert werden dürfen. Ich vermisse es meine Heizprofile einfach über FHEMWEB zu editieren. Die Herausforderung ist das diese in einer configdb liegen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

betateilchen

Zitat von: CoolTux am 05 Januar 2019, 20:56:25
Die Herausforderung ist das diese in einer configdb liegen.

Es ist völlig egal, ob die Dateien in configdb oder im Dateisystem liegt. Solange FHEM in der Lage ist, die Dateiendung zu "kennen" und damit zu wissen, in welchem Pfad die Datei liegt, arbeiten FileRead() und FileWrite(), die für das Bearbeiten per "Edit files" verwendet werden, völlig transparent.

Ein Unterverzeichnis, in dem Konfigurationsdateien liegen, per "Edit files" verfügbar zu machen, fände ich auch eine grundsätzlich sinnvolle Idee.

Das Thema ".json Files für codemirror" ist davon weitgehend unabhängig zu betrachten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: CoolTux am 05 Januar 2019, 20:56:25
Ich denke mal da wo auch fhem.cfg liegt ist es gut aufgehoben.

Nein.

Zitat von: CoolTux am 05 Januar 2019, 20:56:25
Die configdb Config liegt ja z.B. auch da.

Das ist ein Ausnahmefall, den ich seinerzeit ausführlich mit Rudi diskutiert hatte.
Die Konfigurationsdatei zur configDB muss zu einem sehr frühen Zeitpunkt gelesen werden, zu dem es noch keinerlei Attribute (z.B. moddir) gibt. Zu diesem Zeitpunkt kann fhem.pl deshalb nur Dateien im gleichen Verzeichnis finden, in dem sich auch fhem.pl selbst befindet. Das ist der gleiche Grund, warum auch configDB.pm in diesem Pfad liegt. Das ist besonders deshalb wichtig, damit das Ganze auch auf Systemen funktioniert, die eine grundsätzlich andere Verzeichnisstruktur verwenden, wie z.B. NAS Systeme.

Für Konfigurationsdateien, die während des Systemstarts von FHEM für einzelne Modultypen bzw. devices benötigt werden, stehen dann schon die globalen Attribute und damit eine "bekannte" Verzeichnisstruktur bereit. Solche config-Dateien können deshalb "irgendwo" liegen, solange der Pfad per Attribut oder sonstwie bekanntgemacht ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

Zitat von: betateilchen am 05 Januar 2019, 21:20:49
Das Thema ".json Files für codemirror" ist davon weitgehend unabhängig zu betrachten.

ja. aber...

files mit der endung .json werden nicht automatisch gefunden, wenn man editFileList verwendet überschritt man alle defaults.

ein addToEditFileList und removeFromEditFileList könnte hier helfen. wenn bei den so hinzugefügten files die prüfung auf .../FHEM entfällt wäre vermutlich der sofware teil erledigt.

oder ein $hash->{editFileList} das man im modul setzen kann.

statt beliebige pfade könnte man zusätzlich zu .../FHEM auch noch .../fhem/config erlauben und per attribut in global konfigurierbar machen. so wie logdir
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

CoolTux

Das meinte ich. Einfach ein ganzes Verzeichnis erlauben. Alle Dateien die darunter liegen dürfen von FHEMWEB editiert werden. Und somit ginge dann auch configdb wie Udo bereits angemerkt hat.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Kann bitte jemand einen konkreten Vorschlag machen, ich kenne die Rahmenbedingungen nicht.

betateilchen

Zitat von: CoolTux am 05 Januar 2019, 21:34:55
Das meinte ich. Einfach ein ganzes Verzeichnis erlauben. Alle Dateien die darunter liegen dürfen von FHEMWEB editiert werden.

Zitat von: justme1968 am 05 Januar 2019, 21:31:57
statt beliebige pfade könnte man zusätzlich zu .../FHEM auch noch .../fhem/config erlauben und per attribut in global konfigurierbar machen. so wie logdir

Das Ganze ist nicht ganz so trivial wie es aussieht. Dazu müsste vermutlich ein Großteil der Logik für editFiles geändert werden.

Zitat von: justme1968 am 05 Januar 2019, 21:31:57
ja. aber...

files mit der endung .json werden nicht automatisch gefunden, wenn man editFileList verwendet überschritt man alle defaults.

Das ist schon klar. Das würde ja anderen Dateieendungen auch nicht anders ergehen. Das reine Hinzufügen einer Dateiendung, um diese als editierbar zu finden, wäre überhaupt kein Problem, solange dieser Dateityp in einem bereits bekannten Verzeichnis, z.B. ./FHEM liegt. Solche Erweiterungen wurden in der Vergangenheit ja auch schon vorgenommen.

Zitat von: rudolfkoenig am 05 Januar 2019, 21:38:54
Kann bitte jemand einen konkreten Vorschlag machen, ich kenne die Rahmenbedingungen nicht.

Auf meinen nächsten Bahnfahrten werde ich mal darüber nachdenken. Da ich bei der Entwicklung von configDB lange Zeit damit zugebracht habe, die Logik von "Edit files" zu verstehen um sie auch für configDB nutzbar zu machen, weiß ich zumindest, wie da intern grundsätzlich gearbeitet wird.

Die Diskussion über die Erweiterung dieser Funktion führen wir jetzt auch nicht zum ersten Mal. Gebt mir ein paar Tage Zeit.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

@rudfi: kurz nochmal die problemstellung aus meiner sicht:

- ein modul möchte ein oder mehrere files irgendwo im fhem verzeichnisbaum speichern
- die files müssen tatsächlich im filesystem liegen da andere externe prozesse darauf zugreifen müssen
- manche dieser files sollen vom endanwender über edit files editierter sein
- andere nicht, und sind idealer weise auch nicht 'abgreifbar'
- es wäre schön wenn diese files in der fhem backup routine mit berücksichtig werden

fragen:
- wo sollen die files genau liegen?
   vorschlag: ein neues verzeichnis unterhalb von .../fhem. pfad über global auffindbar
- sind Unterverzeichnisse erlaubt wenn ein modul mehr als ein file ablegen will?
- wie wird edit files informiert welche files mit angezeigt werden sollen?
  vorschlag: über eine add/remove routine und/oder über $hash->{editFiles}
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

betateilchen

Zitat von: justme1968 am 06 Januar 2019, 11:59:21
- die files müssen tatsächlich im filesystem liegen da andere externe prozesse darauf zugreifen müssen

Eine Datei zwingend im Dateisystem abzulegen, wird von FileRead() und FileWrite() grundsätzlich schon unterstützt.
Aber woher weiß der externe Prozess, wo er die Dateien suchen soll, wenn der Pfad über ein globales Attribut in FHEM beliebige verändert werden kann?

Zitat von: justme1968 am 06 Januar 2019, 11:59:21
- manche dieser files sollen vom endanwender über edit files editierter sein
- andere nicht, und sind idealer weise auch nicht 'abgreifbar'

Das ließe sich vermutlich über unterschiedliche Dateiendungen steuern.

Zitat von: justme1968 am 06 Januar 2019, 11:59:21
- es wäre schön wenn diese files in der fhem backup routine mit berücksichtig werden

Wenn sich die Dateien innerhalb der FHEM Verzeichnisstruktur befinden, sollte das kein Problem sein.

Zitat von: justme1968 am 06 Januar 2019, 11:59:21
- wo sollen die files genau liegen?
   vorschlag: ein neues verzeichnis unterhalb von .../fhem. pfad über global auffindbar
- sind Unterverzeichnisse erlaubt wenn ein modul mehr als ein file ablegen will?

Es gibt jetzt schon mehrere Module, die eine Anforderung bezüglich eigener Zusatzdateien haben, z.B. RSS, InfoPanel, holiday.
Grundsätzlich bin ich auch für ein gemeinsames Config-Verzeichnis für diese Dateien, von einer weiteren Untergliederung in weitere Unterverzeichnisse halte ich allerdings wenig.

Zitat von: justme1968 am 06 Januar 2019, 11:59:21
- wie wird edit files informiert welche files mit angezeigt werden sollen?
  vorschlag: über eine add/remove routine und/oder über $hash->{editFiles}

Diese Aufgabe zu lösen, ist voraussichtlich der einfachste Teil der Aufgabe.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Risiko

Zitat von: CoolTux am 05 Januar 2019, 20:56:25
Ich vermisse es meine Heizprofile einfach über FHEMWEB zu editieren. Die Herausforderung ist das diese in einer configdb liegen.
Hallo,

die von FHEMWEB editierbaren Wochenprofile liegen bei mir (json-Datei vom Modul weekprofile) im Log-Verzeichnis.
Nicht gerade schön, aber ich wollte das Problem mit den Schreibrechten umgehen und ganz neu ist das Modul auch nicht.
Wenn es eine einheitliche Lösung gibt, schließe ich mich gerne an.

Risiko.

justme1968

Zitat von: betateilchen am 06 Januar 2019, 14:49:15
Aber woher weiß der externe Prozess, wo er die Dateien suchen soll, wenn der Pfad über ein globales Attribut in FHEM beliebige verändert werden kann?
in meinem fall wird der externe prozess aus dem fhem modul heraus gestartet.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

betateilchen

#12
Zitat von: betateilchen am 06 Januar 2019, 10:33:00
Auf meinen nächsten Bahnfahrten werde ich mal darüber nachdenken.

Grüße aus dem ICE 79 irgendwo in Niedersachsen  8)

Spräche irgendwas dagegen, den ohnehin schon vorhandenen Ordner ./FHEM/FhemUtils künftig für die Ablage von config Dateien zu verwenden? Das dort liegende Keyfile wird natürlich nicht zum Editieren angeboten.

Dieser Ordner hätte den Vorteil, dass er schon komplett in die FHEM Infrastruktur, zum Beispiel bezüglich backup, integriert ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

spontan würde ich sagen alles unter FHEM kommt per update und ist auch im svn.

die config files sollen nicht ins svn sondern sind benutzer spezifisch. eigentlich gehört das key file sich nicht dahin. und von hand editierte holiday files auch nicht. aber das hatten glaube ich schon mal.

ein mal ein ./conf verzeichnis anzulegen wäre eigentlich sauberer. wäre das für configdb ein problem?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

betateilchen

nö, für configDB ist das kein Problem.

Das mit FhemUtils war ja nur eine spontane Idee, als ich gerade über das Thema nachgedacht habe.

BTW: Der Mechanismus für die holiday Files wurde schon vor längerer Zeit umgestellt, da spielt dieser Ordner keine Rolle mehr.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!