[gelöst]Frage zu DBLog/fhem.cfg

Begonnen von hugomckinley, 22 März 2020, 09:07:58

Vorheriges Thema - Nächstes Thema

hugomckinley

Hi,

ich habe FHEM in einer FreeNAS Jail laufen und habe die jail jetzt in den letzten beiden Jahren zweimal neu installiert und dabei ein Backup von FHEM zurückgespielt. (Das eigentlich nur der Vollständigkeit halber, da es glaube ich nichts mit FreeBSD oder Jails zu tun hat)

Da ich dokumentieren wollte, welche Pakete mein FHEM benötigt, habe ich FHEM immer neu gestartet und im Logfile nachgesehen, welche Module fehlen. Das hat auch letztendlich funktioniert und mein FHEM läuft wieder.

Aber mir ist etwas sehr merkwürdiges jetzt das zweite Mal aufgefallen:
Wenn die Module für SQLite fehlen, werden die Definitionen in der fhem.cfg gelöscht!
Ich hatte plötzlich ein FHEM das zwar normal funktionierte, aber kein Logdevice mehr. (Mir ist es an den fehlenden Graphen als erstes aufgefallen.)
Was mich dann gewundert hat war, dass es keine Fehlermeldungen im log gab. Die Lösung war, dass es die Definition in fhem.cfg gar nicht mehr gab.
Ein Installieren der Datenbankmodule (hier: p5-DBI und p5-DBD-SQLite) und das Zurückspielen der fhem.cfg führte wieder zum Normalbetrieb.

Nun meine Frage: Warum ist das so und ist das beabsichtigt?

Danke!

Hugo
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...

DS_Starter

#1
Morgen Hugo,

danke für den Hinweis. Es ist nicht beabsichtigt, dass keine Meldung im Log geschrieben wird wenn DBI fehlt.
Zur Zeit wird im FHEMWEB ein Fehler angezeigt, wenn DbLog definiert werden soll und dieses DB-Modul fehlt.
Das bringt aber in den von dir beschriebenen Fällen nichts.
Ist DBI vorhanden und fehlt nur das DB-Spezifische DBD, gibt es auf jeden Fall Fehlermeldungen im Logfile sobald
Werte in die DB geschrieben werden sollen. Aber an diese Stelle kommst du in deinem Fall nicht, weil DbLog nicht geladen wird.

ABER ... aus der fhem.cfg verschwindet die Definition generell nicht einfach. Erst wenn ein "save" durchgeführt wird. Wenn das nicht bewußt gemacht wird, auch mal das global Attribut "autosave" anschauen und ggf. auf "0" setzen.

Ich baue eine Logmeldung bei fehlendem DBI ein. Neue Version ist morgen früh im update enthalten.

LG,
Heiko
Proxmox+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

hugomckinley

Hallo Heiko,

das ist ja das komische. Autosave ist definitiv nicht aktiv (und nie gewesen).
Was mir aber jetzt im Nachhinein merkwürdig erscheint: Irgendwo habe ich die Meldung gesehen, dass autosave nicht aktiviert ist. Ich habe mir aber nichts dabei gedacht und daher nicht darauf geachtet. Es war aber definitiv diese Meldung, denn ich habe mir noch gedacht, dass ich das nie einschalten würde, da mir das zu gefährlich wäre.
Diese Meldungen habe ich im Log gehabt(bevor ich das Modul installiert habe):
2020.03.21 14:09:50 1: define logdb DbLog ./db.conf .*:.*: Error: Perl module DBI is missing.
        Install it on Debian with: sudo apt-get install libdbi-perl
2020.03.21 14:09:51 1: reload: Error:Modul 93_DbRep deactivated:
Can't locate DBI/Const/GetInfoType.pm in @INC (you may need to install the DBI::Const::GetInfoType module) (@INC contains: . /usr/local/lib/perl5/site_perl/mach/5.30 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.30/mach /usr/local/lib/perl5/5.30 ./FHEM ./FHEM/lib) at ./FHEM/93_DbRep.pm line 49, <$fh> line 2465.
BEGIN failed--compilation aborted at ./FHEM/93_DbRep.pm line 49, <$fh> line 2465

und etwas später noch das:
2020.03.21 14:09:52 1: Including ./log/fhem.save
2020.03.21 14:09:52 1: configfile: Error: Perl module DBI is missing.
        Install it on Debian with: sudo apt-get install libdbi-perl
Please define logdb 5c54ab77-f33f-faac-b9d5-189aba9922717b02 first
Cannot load module DbRep
Please define DBReport 5c54ab78-f33f-faac-debd-c433251e092ed845 first
Cannot load module DbRep


und ab dann nur noch ohne Hinweis auf fehlende Module:
2020.03.21 14:10:19 1: No Logdevice >logdb<
2020.03.21 14:10:19 1: No Logdevice >logdb<
2020.03.21 14:10:19 1: No Logdevice >logdb<
2020.03.21 14:10:19 1: No Logdevice >logdb<
2020.03.21 14:10:19 1: No Logdevice >logdb<
2020.03.21 14:10:19 1: No Logdevice >logdb<
2020.03.21 14:10:19 1: No Logdevice >logdb<
2020.03.21 14:10:33 1: No Logdevice >logdb<
2020.03.21 14:10:33 1: No Logdevice >logdb<
2020.03.21 14:10:33 1: No Logdevice >logdb<
2020.03.21 14:10:33 1: No Logdevice >logdb<
2020.03.21 14:10:33 1: No Logdevice >logdb<
2020.03.21 14:10:33 1: No Logdevice >logdb<
2020.03.21 14:10:33 1: No Logdevice >logdb<


Ich bin mir zu 99,9% sicher, dass ich während der Inbetriebnahme nicht auf Save gedrückt habe.
Es sieht so aus, als wäre nach/zwischen dem Installieren der beiden Module dieses Device verschwunden und damit die Fehlermeldung?!? Was es noch unerklärlicher macht.

ABER: Auch wenn ich Save gedrückt hätte, hätte ich doch vorher das Device löschen müssen, oder? Das habe ich aber mit absoluter Sicherheit nicht gemacht!

Vielleicht muss ich wieder mal ein Backup zurückspielen, dann werde ich das absichtlich provozieren und melde mich.
Es steht glaube ich nicht dafür, dass man dieser Sache jetzt lange nachgeht, da ich anscheinend der einzige bin bei dem das aufgetreten ist. (dafür schon zweimal ;-)

Danke!

lg
Hugo
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...

DS_Starter

#3
Hallo Hugo,

Zitat2020.03.21 14:09:52 1: configfile: Error: Perl module DBI is missing.
        Install it on Debian with: sudo apt-get install libdbi-perl

Ja, das ist die Meldung die der User im FHEMWEB sehen würde wenn er "online" ein define macht.
Ich habe jetzt einfach noch eine ERROR-Message für das Logfile hinzugenommen, da wird es noch deutlicher.
Für DbRep gilt im Prinzip das gleiche weil es auch diese Bibliotheken braucht und ein DbLog noch dazu.

Aber deine Geschichte mit fhem.cfg bzw. save / nicht save kann ich dir nicht erklären. DbLog/DbRep verhalten sich diesbezüglich wie alle anderen Module auch und machen keinen Unterschied.
Passiert mir bei der Weiterentwicklung auch dass das Modul wegen eines Fehlers nicht geladen werden kann. Und solange ich kein "save" drücke passiert auch nichts und die Definition ist nach einem Restart (nach erledigtem Fehler) auch noch vorhanden.
Naja, schau mal ...

EDIT: Bezüglich autosave ... wenn die Commandref aktuell ist, musst du explizit das Attr = 0 setzen, per default ist es 1 !

EDIT2:

ZitatABER: Auch wenn ich Save gedrückt hätte, hätte ich doch vorher das Device löschen müssen, oder? Das habe ich aber mit absoluter Sicherheit nicht gemacht!
Nein, selbst wenn du das Device in FHEM löschst, ist das Device nach dem Restart noch in der cfg solange du kein save drückst.

LG,
Heiko
Proxmox+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: hugomckinley am 22 März 2020, 15:21:12
ABER: Auch wenn ich Save gedrückt hätte, hätte ich doch vorher das Device löschen müssen, oder?

Nein. Bei einem "save" werden nur devices gesichert, die zu dem Zeitpunkt auch im laufenden FHEM vorhanden sind. Und wenn ein device beim FHEM Start nicht angelegt werden konnte (wie in Deinem Beispiel), ist es eben nicht vorhanden und kann deshalb auch nicht gesichert werden.

Zitat von: hugomckinley am 22 März 2020, 15:21:12
und ab dann nur noch ohne Hinweis auf fehlende Module:

2020.03.21 14:10:19 1: No Logdevice >logdb<


Da geht es nicht um fehlende Module, sondern um ein fehlendes device. Ein logischer Folgefehler, meistens beim Setzen gesicherter Attribute oder readings während des FHEM Starts.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hugomckinley

ZitatNein. Bei einem "save" werden nur devices gesichert, die zu dem Zeitpunkt auch im laufenden FHEM vorhanden sind. Und wenn ein device beim FHEM Start nicht angelegt werden konnte (wie in Deinem Beispiel), ist es eben nicht vorhanden und kann deshalb auch nicht gesichert werden.
Ah, das erklärt das. Das war mir nicht bewusst.
ZitatDa geht es nicht um fehlende Module, sondern um ein fehlendes device. Ein logischer Folgefehler, meistens beim Setzen gesicherter Attribute oder readings während des FHEM Starts.
Ja das war nur unglücklich formuliert.

Danke für die Hinweise.
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...