Link für edit File im FHEMWEB außerhalb von <modpath>/FHEM/

Begonnen von DS_Starter, 20 Januar 2018, 22:27:19

Vorheriges Thema - Nächstes Thema

DS_Starter

Guten Abend zusammen,

ich würde gern das DbLog-Konfigurationsfile über das Device editierbar anbieten, so wie es Rudi kürzlich im holiday Modul gemacht hat.
Das Konfigurationsfile steht in $hash->{CONFIGURATION}.
Die Schwierigkeit, auf die ich gestoßen bin ist, dass das File immer im Pfad <modpath>/FHEM/ gesucht wird.
So habe ich es umgesetzt (gespickt bei Rudis holiday):

   my $c = $defs{$d}{CONFIGURATION};
   $ret .= FW_pH("cmd=style edit $c",
               "<div class=\"dval\">Edit $c</div>", 0, "dval", 1);

               
Dabei habe ich $c mal mit dem kompletten Pfad ($c = "/opt/fhem/ftestmaria10.conf"), mal ohne und auch nur mit dem Relativpfad "./" probiert.
Es ist gleichgültig, das File wird immer in <modpath>/FHEM/ gesucht.

Das FHEMWEB habe ich nach einem alternativen Aufruf als FW_pH durchsucht, aber nichts gefunden was mir brauchbar erschien,
oder einfach nur nicht gesehen.

Ich wäre für einen Tipp dankbar!  Das Konfigurationsfile befindet sich zumeist in /opt/fhem. Kann sich aber natürlich auch an einer anderen Stelle  befinden.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

#1
Schau Dir mal FW_style() an. Dort wird (ziemlich am Anfang der Funktion) aus dem Attribut editFileList die Liste der zum Edit anzuzeigenden Dateien aufgebaut. Dabei gibt es eine vordefinierte Liste mit Pfadangaben, wo welche Dateien gesucht werden:

gplot Dateien kommen aus $FW_gplotdir,
Styles kommen aus $FW_cssdir usw.

Deshalb weiss FHEMWEB beim "Edit files" genau, woher (in welchem Ordner) welche Dateien gelesen werden müssen und wohin sie am Ende wieder gespeichert werden sollen. Für Konfigurationsfdateien gibt es eine solche automatische Zuordnung nicht.

Zitat von: DS_Starter am 20 Januar 2018, 22:27:19
ich würde gern das DbLog-Konfigurationsfile über das Device editierbar anbieten

Bei dem was Du vorhast, bitte auch daran denken, dass es configDB Anwender gibt, bei denen das Konfigurationsfile für DbLog in der configDB liegt und von dort gelesen und danach wieder dorthin geschrieben werden muss. Bisher funktioniert das völlig problemlos und es wäre schön, wenn das auch so bliebe.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

ZitatEs ist gleichgültig, das File wird immer in <modpath>/FHEM/ gesucht.
Ist Absicht, damit man nicht auf die Idee kommt, /etc/passwd via FHEM herunterzuladen.
Siehe auch 01FHEMWEB.pm/FW_fileNameToPath()

betateilchen

Wobei ich mir im Moment die grundsätzliche Frage stelle, ob es eine wirklich gute Idee ist, diese Konfigurationsdatei zur Laufzeit bearbeiten zu können und damit ggf. ein laufendes FHEM abschießt.

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

DS_Starter

#4
Vielen Dank für die Infos Udo und Rudi, schaue ich mir an.
Naja, es geht wirklich nur um das editieren. Wenn es getan ist, muss man es ja noch mit rereadcfg wieder neu einlesen um es zu aktivieren.
An configDB denke ich dabei natürlich.
Aber soviel ich weiß bzw. bisher mitbekommen habe muss man doch ein geändertes Konfigurationsfile wieder in die configDB hineinladen ?
Hatte da letztens  so einen Fall, dass der User es einfach vergessen hatte und sich wunderte dass seine Änderungen im File nicht aktiviert wurden.

EDIT: Ist auch erstmal nur so eine Idee, mal schauen wie praxistauglich die wäre.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

#5
Zitat von: DS_Starter am 20 Januar 2018, 23:05:58
Aber soviel ich weiß bzw. bisher mitbekommen habe muss man doch ein geändertes Konfigurationsfile wieder in die configDB hineinladen ?

ja, das habe ich doch oben extra schon geschrieben.

Zitat von: betateilchen am 20 Januar 2018, 22:47:28
bei denen das Konfigurationsfile für DbLog in der configDB liegt und von dort gelesen und danach wieder dorthin geschrieben werden muss

Wenn die Konfigurationsdatei in modpath/FHEM liegt und das Attribut editFileList entsprechend konfiguriert ist, funktioniert das jetzt schon automagisch...

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

DS_Starter

Jetzt habe ich etwas recherchiert und getest und bin zu der Überzeugung/Erkenntnis gekommen, dass es nur Sinn macht eine solche Möglichkeit im Device anzubieten, wenn das Konfigurationsfile im <modpath>/FHEM/ liegt. Dann funktioniert das Speichern an der richtigen Stelle und die Kompatibilität mit configDB sollte ebenfalls gegeben sein.

Aber wie betateilchen schon anmerkte, stellt sich die Frage der Sinnhaftigkeit unter diesen Bedingungen. Andererseits ist es schon schön wenn man mit einem Klick dir Möglichkeit hat das File zu öffnen, auch wenn es vielleicht nur zur Kontrolle/Lesen ist.

Ich würde eine Version, zum Test und zur Kärung der Frage ob so eine Möglichkeit überhaupt einen Bedarf hat, ins Forum stellen.

Eine kleines "Nice to have" ist mir noch aufgefallen. Wenn man das File speichert, landet man immer auf der Seite die mit "Edit files" (links unten im Browser) ebenfalls aufgemacht wird. Das ist auch beim holiday-Device so.
Gibt es eine Möglichkeit mitzugeben/zu veranlassen das man nach der Speicherung wieder auf der Ausgangsseite (Detail-Seite des Devices) landet ?

schönen Sonntag zusammen,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Zitat von: DS_Starter am 21 Januar 2018, 11:52:39
Ich würde eine Version, zum Test und zur Kärung der Frage ob so eine Möglichkeit überhaupt einen Bedarf hat, ins Forum stellen.

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

DS_Starter

Zitatbitte nicht...

hmm ... ok, dann lasse ich das mal.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Für vielleicht eine ähnliche Aufgabenstellung zu anderer Zeit und Veranlassung wäre die Anwort auf die Frage

ZitatGibt es eine Möglichkeit mitzugeben/zu veranlassen das man nach der Speicherung wieder auf der Ausgangsseite (Detail-Seite des Devices) landet ?

trotzdem noch interressant. Vielleicht gibt es da ja etwas.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

ZitatGibt es eine Möglichkeit mitzugeben/zu veranlassen das man nach der Speicherung wieder auf der Ausgangsseite (Detail-Seite des Devices) landet ?
Da wollte ich auch, aber der Umbau-Aufwand dafuer war mir zu viel.
Wenn jemand eine elegangte Loesung hat, bitte melden.