Warum wird eigentlich die Konfiguration von LightScenes in einer extra Datei gespeichert, die unglücklicherweise auch noch im Verzeichnis für Log-Dateien landet?
Wer löscht nicht schon mal ein paar Logfiles - und schwups sind die Lightscenes auch verschwunden. Jaja ist mir so passiert, sogar schon zweimal.
Ich habe meine FHEM-Konfiguration schon länger auf DB (mySql) umgestellt. Warum die LightScenes nicht auch darin speichern?
da es LightScene gab bevor es configDb gab und weil ich configDb nicht nutze und es bis jetzt keine beschwerden gab habe ich es noch nicht umgestellt.
das LightScene save file wird in das gleiche verzeichnis geschrieben in dem auch das fhem save file landen würde.
wer von hand so unvorsichtig log files löscht sollte wissen was er tut.
wenn ich dazu komme das speichern umzustellen und du bereit bist das ganze zu testen können wir versuchen das besser zu machen.
gruß
andre
ich teste gerne - sag Bescheid
Jetzt muss ich trotzdem nochmals nachkarteln:
Warum werden LightScenes in einem Extra-File gespeichert und nicht wie alles andere in FHEM im statefile und nach einem save config in fhem.cfg bzw. in der DB?
Gibt es dafür einen Grund?
weil im state file nur readings gespeichert werden und es nicht besonders praktikabel ist eine komplette LightScene configuration in einem oder mehreren readings abzulegen. alle anderen module vorher hatten nicht den bedarf andere oder mehr daten abzulegen als über .cfg file und fhem save sinnvoll möglich ist.
fhem hat erst eine weile nach dem es configDb gab überhaupt funktionen angeboten daten transparent in einem file oder in configDb abzulegen. als LightScene entstanden ist gab es so etwas noch nicht.
einem anwender sollte es völlig egal sein wo und wie fhem oder modul irgendwelche daten intern abspeichert.
gruss
andre
Zitat von: justme1968 am 13 Juni 2015, 17:59:45
einem anwender sollte es völlig egal sein wo und wie fhem oder modul irgendwelche daten intern abspeichert.
Ja, damit magst du recht haben, aber aus Sicht eines Administrators eines Linux Servers hast du nicht recht. Und fast jeder der FHEM einsetzt ist auch Administrator seines Systems.
Das statefile und somit auch die LightScene-Config, gehören einfach nicht in ein Verzeichnis das "log" im Pfad hat. Wird aber so in der FHEM Commandref vorgeschlagen (ganz am Anfang - sozusagen auf Seite 1)
Meiner Ansicht nach dürfen in Verzeichnissen die "log" im Pfad haben, insbesondere /var/log, nur Informationen enthalten sein die < "jetzt" sind. Wenn ich log Verzeichnisse lösche, lösche ich die Vergangenheit und das muss ich ungestraft machen können.
Aber eine Konfiguration = jetzt und hat damit in einem log-Verzeichnis absolute nichts zu suchen. Zudem hat man ja auch Routinen die Logs automatisch archivieren und damit auch die Konfiguration entfernen.
wenn du dich als administrator bezeichnest und files von hand löschst solltest du wissen was du tust. und dazu gehört einem system nicht einfach files unter dem hinter weg zu ziehen. wenn du hier von hand eingreifen willst schau dir archivecmd/archivedir/nrarchive an. das ist genau dazu da.
/var/log das tatsächlich mehr oder weniger flüchtige system log files enthält mit dem fhem log verzeichnis zu vergleichen ist falsch. im fhem log verzeichnis liegen historische daten die aufgehoben werden sollen. wenn du sie löschst kannst du nicht mehr plotten. das löschen hat also einfluss auf die funktionalität.
auch aus sicht eines administrators gibt es einen unterschied zwischen einem system weiten verzeichnis und einem paket spezifischen.
darüber das in der default konfiguration statefile und logfiles liegen kann man diskutieren und auch unterschiedlicher meinung sein.
LightScene legt aber das save file nicht bei den log files ab sondern beim fhem save file. wenn du nicht möchtest das das save file bei den log files liegt dann solltest du es über das statefile attribut an eine andere stelle verlegen. das LightScene save file wird automatisch folgen.
Zitat von: justme1968 am 13 Juni 2015, 18:52:22
wenn du dich als administrator bezeichnest und files von hand löschst solltest du wissen was du tust.
seit 20 Jahren lösche ich Logfiles nun schon ungesehen wenn mir danach ist, aber noch nie hatte ich damit irgendeine Konfiguration zerstört.
Weil nochmals:
logfile < jetzt
config = jetzt
deshalb dürfen solche Dinge niemals im gleichen Verzeichnis stehen. Ok ich bin daran auch selbst schuld weil ich den statefile -Parameter entsprechend gesetzt habe. Aber es sollte dann einfach nicht so in der Doku stehen.
Und das Argument mit den paketspezifischen Verzeichnissen kann ich so auch nicht stehen lassen:
ich will dass alle Anwendungen ihre Logfiles auf meinem Server in /var/log schreiben. So außergewöhnlich ist dieser Wunsch wohl nicht, sonder eher allgemeiner Usus.
Vorschlag:
In der Commandref sollte diese Beispiel einfach geändert werden und das statefile in keinem Fall in ein log-Verzeichnis geschrieben werden. Weiter unten in der Commandref kommt da auch noch ein Beispiel /var/cache für das Statefile. Ist meiner Ansicht aber auch nicht so glücklich gewählt. Mein Vorschlag aber auch nur halbüberzeugt: /var/run.
Ich lese nun mal in die Doku und am Anfang nach der Installation von FHEM waren meine Gedanken: statefile was ist das - keine Ahnung - wird schon irgendein Logfile sein so wie es die Doku suggeriert wird ...
Muss das mal ausgraben.
Ich hab eben ein update all und danach ein shutdown restart gemacht und alle meine scenen waren weg?
Kann ich die irgendwie wieder laden, oder wie sichere ich diese?
schau mal ob ein
seit <ls> updateToJson
hilft.
gruß
andre
set WohnzimmerLights updateToJson
Hab die scenen mal wieder angelegt. soll damit dann ein json file geschrieben werden? Wenn ja wo liegt dieser
du musst das updateToJson nur ein mal machen und danach save sagen.
du hast neben dem fhem update inzwischen auch das perl json modul installiert das vorher nicht da war. LightScene verwendet json wenn es vorhanden ist. sonst gibt es einen fallback. und der wurde bei dir vorher verwendet.
Hab heute wieder ein update gemacht und alle meine Lichteinstellungen waren weg.
Das schon sehr nervig. In der fhem.cfg steht nichts von den Einstellungen nur die Grundconfig, welche Lampen beteiligt sind
bei einem update verschwindet die config nicht einfach. die lightscene configuration steht nicht in fhem.cfg sondern in in einem LightScene.save file dort wo auch fhem.save liegt.
wenn du zwischendurch auch das perl JSON modul installiert hast liegt es daran und di kannst die konfiguration mit updateToJson übernehmen. das hatte ich oben schon geschrieben.
gruss
andre
Ich habe mich da schon mal gestritten mit dem Autor des Lightscenes-Plugins:
die Konfiguration der Lightscenes wird im log-Verzeichnis gespeichert (z.B in /var/log/fhem). Das ist einfach gegen alle Konventionen. Einstellungen gehören nun mal in /etc und wenn sie in einem Log-Verzeichnis stehen können sie schon mal verloren gehen, da es nun mal Usus ist dass Log-Files archiviert oder gar gelöscht werden. Und damit ist die Konfiguration eben mal verloren oder steckt in einem Archiv.
Meiner Ansicht nach sollte dies dringend vernünftig gelöst werden, da Lightscenes an sich eine sehr nützliche Sache sind.
Ja also meine fhem.save steht in /opt/fhem/log ...
Da finde ich aber leider den File nicht. Json ist installiert, brauch ich auch für due HUE Lampen.
pi@raspberrypi /opt/fhem/log $ ls -lah
insgesamt 100M
drwxrwxrwx 2 fhem root 4,0K Sep 1 00:23 .
drwxrwxrwx 11 fhem root 4,0K Sep 19 19:40 ..
-rw-rw-rw- 1 fhem root 0 Nov 9 2014 empty_file.txt
-rw-r--r-- 1 fhem dialout 0 Apr 3 22:40 eventTypes.txt
-rw-rw-rw- 1 fhem dialout 1,8M Apr 30 23:34 fhem-2015-04.log
-rw-r--r-- 1 fhem dialout 204K Mai 31 23:59 fhem-2015-05.log
-rw-r--r-- 1 fhem dialout 2,7M Jun 30 23:48 fhem-2015-06.log
-rw-r--r-- 1 fhem dialout 119K Jul 31 19:16 fhem-2015-07.log
-rw-r--r-- 1 fhem dialout 97K Aug 31 22:24 fhem-2015-08.log
-rw-r--r-- 1 fhem dialout 783K Sep 26 17:24 fhem-2015-09.log
-rw-r--r-- 1 fhem dialout 181 Apr 3 22:40 fhem.save
-rw-r--r-- 1 fhem dialout 21M Sep 26 17:31 HM_Outdoor_Sensor-2015.log
-rw-r--r-- 1 fhem dialout 17M Sep 26 17:33 T_Wohnzimmer-2015.log
-rw-r--r-- 1 fhem dialout 58M Sep 26 17:31 WZ_Heizung-2015.log
das hue modul hat damit nichts zu tun.
was steht im log wenn du save aufrufst? zeig mal ein list vom LightScene device.
wenn das kein LightScene.save file ist kann es auch nicht geladen werden. im modul gibt es keinen code das dieses file löscht.
gruss
andrfe
Im log kommmt keine einzige Zeile.
Internals:
DEF hueBridge_HUEDevice1 hueBridge_HUEDevice2 hueBridge_HUEDevice3 RegalLight BalkonLight
HAS_DataDumper 1
HAS_JSON 1
NAME WohnzimmerLights
NR 113
NTFY_ORDER 50-WohnzimmerLights
STATE sleep
TYPE LightScene
mayBeVisible 1
Content:
BalkonLight 1
RegalLight 1
hueBridge_HUEDevice1 1
hueBridge_HUEDevice2 1
hueBridge_HUEDevice3 1
Readings:
2015-09-26 17:53:36 state sleep
Scenes:
Fernsehlicht:
BalkonLight off
RegalLight on
Huebridge_huedevice1:
icon dim50%@#ffe0c7
state bri 128 : ct 262
Huebridge_huedevice2:
icon light_question
state bri 128 : ct 262
Huebridge_huedevice3:
icon light_question
state bri 128 : ct 256
Fernsehlicht_light:
BalkonLight off
RegalLight off
Huebridge_huedevice1:
icon dim18%@#ffe0c7
state bri 50 : ct 262
Huebridge_huedevice2:
icon dim18%@#ffe0c7
state bri 50 : ct 262
Huebridge_huedevice3:
icon dim18%@#ffe2cb
state bri 50 : ct 256
Fernsehlicht_voll:
BalkonLight on
RegalLight on
Huebridge_huedevice1:
icon dim75%@#ffe0c7
state bri 205 : ct 262
Huebridge_huedevice2:
icon dim75%@#ffe0c7
state bri 205 : ct 262
Huebridge_huedevice3:
icon dim75%@#ffe2cb
state bri 205 : ct 256
Sleep:
BalkonLight off
RegalLight off
Huebridge_huedevice1:
icon off
state off
Huebridge_huedevice2:
icon off
state off
Huebridge_huedevice3:
icon off
state off
devices:
BalkonLight
RegalLight
hueBridge_HUEDevice1
hueBridge_HUEDevice2
hueBridge_HUEDevice3
Attributes:
room Wohnzimmer
und bei save wird kein .save file angelegt ?
Auch wenn das jetzt die Anfängerfrage schlecht hin ist. Ich gebe nur "save" oben rein kommt als Rückgabe "Wrote configuration to fhem.cfg "
Aber im Ordner erscheint nichts und im Log auch nicht
bitte nimm mal die angehängte version und schau was im log auftaucht wenn du save verwendest.
gruss
andre
Ersteinmal danke für deine Hilfe!
2015.09.27 20:28:49 1: LightScene_Save
2015.09.27 20:28:49 1: $statefile: ./demolog/LightScenes.save
In /demolog/ ist auch der File !!! DANKE
und wie stelle ich den dann wieder her wenn ich ein update etc mache?
das geht eigentlich automatisch. liegen deine log files auch da?
Boar ich habs gelöst ;D
Darfst gerne die Hände über Kopf schlagen, aber für alle die später hierher kommen und sich so anstellen wie ich XD
attr global statefile ./demolog/fhem.save
zu
attr global statefile ./log/fhem.save
und logdateien und auch die LightScenes.save liege im Log ordner.
Danke für die Gedult! Jetzt hoffe ich wird alles wieder hergestellt
Update:
Gerade testweise update gemacht. Und leider wieder alle Einstellungen weg. Also welche Geräte sind gesetzt aber nicht die Szenen. Trotz dateien :-(
update 2:
Datei ist leider auch leer:
cat log/LightScenes.save
#Sun Sep 27 21:17:59 2015
wann genau ist das file leer?
beim ersten speichern oder nach dem update?
Alle Dateien gelöscht ->
Update gemacht ->
Datei leer ->
Scene angelegt ->
save ->
datei wurde geschreiben im /log/ Ordner ->
update all (um zu sehen obs nun klappt) ->
2015-09-27 21:32:01 Global global nothing to do...
->
Datei noch voll und Scene da !!
O.k warten wir mal das nächste Update ab, warscheinlich einfach nur Fehlbedienung! Ich würde mich dann einfach hier melden wenns nochmal Fehler gibt
Nach länegren nochmal ein Update gemacht, war die Datei wieder leer. Hatte die aber gesichert und so wiederhergestellt
ich habe eben eine änderung eingecheckt die hoffentlich gegen die leeren save files hilft.
gruss
andre
super danke!