FHEM globale Variable für den FHEM Install Path???

Begonnen von CoolTux, 10 April 2019, 09:34:42

Vorheriges Thema - Nächstes Thema

CoolTux

Gibt es eine globale Variable welche mir den FHEM Install Path aus gibt?
Wenn nicht, kennt jemand weitere Möglichkeiten ausser, pwd, wie ich den Path ausfindig machen kann?



Grüße
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

Thorsten Pferdekaemper

Hi,
ich benutze dafür

$main::attr{global}{modpath}

Da steht bei mir zwar "." drin, aber das funktioniert zumindest für mich.
Gruß,
   Thorsten

FUIP

CoolTux

Ok da hätte ich etwas präziser sein sollen. Ich muss rausfinden ob

/home/user/user.db

unterhalb des FHEM Install Paths liegt. Der Punkt hilft mir da glaube ich nicht.


Grüße
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

justme1968

#3
was genau meinst du denn mit 'install path'?

unterschiedliche teile der fhem installation und auch das fhem.pl executable können prinzipiell auf komplett unterschiedliche pfade verteilt sein. wo diese pfade sind lässt sich über die verschiedenen global attribute (backupdir, configfile, logdir, modpath, statefile, ...) festlegen bzw. auslesen. diese pfade können absolut oder relativ sein.

relative pfade sind relativ zum current workgin directory. wie ein/der absolute
pfad dorthin ausschaut hängt unter umständen davon ab ob man pwd, cwd, getcwd oder andere wege verwendet um diesen aufzulösen. gleiches gilt für den pfad zum fhem executable.

es ist nicht in allen fällen möglich diese umwandlung/bestimmung in beide richtungen eindeutig (oder überhaupt) vorzunehmen.

ach ja: man muss auch noch unterscheiden ob die pfade gemeint sind die fhem selber 'sieht' oder die pfade die ein installer verwendet hat um fhem zu installieren. das müssen nicht die gleichen sein.

und dinge wie pfad randomzation die auf betriebssystem ebene passieren sind hier noch ganz aussen vor...


die frage nach 'dem' fhem install path ist vermutlich die falsche frage :) und die 'richtige' frage hängt davon ab was genau du machen möchtest.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

CoolTux

Im Grunde möchte ich wissen ob der Path welcher in einer Variablen steckt der selbe ist wie der Path wo fhem installiert ist und das backup die Daten sichert.
Es geht um die Sicherung der sqlite db Datei. Sie kann ausserhalb des Backup pathes liegen das muss sie mit uns Backup oder innerhalb dann wird sie eh mit gesichert.
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

justme1968

das ist anhand eines reinen pfad vergleiches nicht zuverlässig möglich. selbst wenn man die pfade vorher normalisiert.

eine zuverlässiger weg (zumindest wen man schreiben darf) wäre in einem der beiden pfade ein temporäres file anzulegen und zu schauen ob es im anderen auftaucht.

vielleicht ist ein attribut um das zu konfigurieren eine gute idee.


ps: vor dem sichern der db muss man sicherstellen das sie nicht in verwendung ist. und eventuell sollte man einen (komprimierten) dump sichern statt der db direkt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

CoolTux

Dann werde ich mal schauen wie ich das am besten hinbekomme.

Danke Andre.
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

DS_Starter

Nur zur Info.
Zur Sicherung einer SQlite DB im laufenden Betrieb (also geöffneten) Zustand gibt es bereits im DbRep einen Setter der mit der Backup API arbeitet und ebenfalls einen komprimierten Dump erlaubt. Auf Wunsch auch mit einer internen Versionsverwaltung und FTP(s) Transfer.

Grüße
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

Loredo

#8
In Meta::GetModuleFilepath() verwende ich die Informationen aus %INC, um den Pfad für eine bestimmte Moduldatei zu ermitteln. Das funktioniert für FHEM interne Module wie für normale Perl Module.
Meta::ModuleIsInternal() nutzt diese Funktion wiederum, um auf mehrere Arten festzustellen, ob eine Moduldatei zu FHEM gehört oder nicht.

Das bringt dir natürlich nur für Perl Dateien etwas :-)

modpath kann unterschiedlich zur fhem.pl sein. Wenn du wissen willst, in welchem Verzeichnis fhem.pl liegt, kannst du das so abfragen:


use Cwd;
my $fhemDir = getcwd();



Anschließend kannst du die Pfade ja vergleichen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

CoolTux

Danke schön. Ich denke ich werde mir da was basteln.
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

justme1968

nein... genau das funktioniert leider nicht! das vergleichen meine ich.

das geht schief sobald ein symlink im spiel ist von dem der anwender nichts weiss. beispiel:
auf synology systemen wird nach /volume1/@appstore/fhem installiert. das ist auch was getcwd zurück liefert. der anwender sieht und verwendet aber /usr/local/fhem... und setz die attribute bei absoluten pfaden auch darauf. d.h. obwohl beides identisch ist kann man nicht einfach die pfade vergleichen.


nebenbei: der pfad zu fhem.pl muss nicht identisch zum current working directory sein.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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