93_DbLog - Vorschläge zur Weiterentwicklung

Begonnen von betateilchen, 28 Februar 2014, 20:46:31

Vorheriges Thema - Nächstes Thema

betateilchen

ja, hatte ich gestern abend noch gesehen, danke.

Was meinst Du denn zu dem Vorschlag, die Verbindungsdaten nur einmal im define zu lesen, anstatt jedesmal bei einem Verbindungsaufbau? Letztendlich werden beispielsweise bei jedem plotfork und auch bei danach meist notwendigen Verbindungsaufbau die Konfigurationsparameter neu eingelesen, was meines Erachtens überhaupt nicht notwendig ist.

Ich könnte Dir dazu am Wochenende mal einen patch bauen, wie ich mir das konkret vorstelle.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

Hintergrund ist das die Daten NICHT im Klartext per List oder fhem.cfg sichtbar sind.

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

Also sorry - für mich ist diese Argumentation schlichter Unfug. Zumal Verbindungsdaten zu einem Logfile ja generell kein großartiges Geheimnis darstellen.

So zu Lasten der allgemeinen Performance zu arbeiten, finde ich absolut unsinnig. Wenn jemand seine Datenbank-Konfigurationsdatei in das Verzeichnis /FHEM legt und die Datei mit .cfg endet, wird sie sogar in FHEMWEB im Frontend zum Editieren angeboten - das kannst Du auch nicht verhindern.




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

Tobias

Die Datei liegt natürlich ausserhalb des fhem Verzeichnisses.

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

Das kannst Du als Modulautor doch gar nicht beeinflussen - die kann liegen, wo immer der Anwender das möchte und für richtig hält.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

Es muss eine Lösung gefunden werden das die connectdatei nur einmal einliest.
Ich möchte an der Auslagerung festhalten. Ist auch ein Überbleibsel vom Boris neubert. Verstehe aber auch dein Anliegen.

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

Ich habe ja nichts gegen die Auslagerung an sich - die macht durchaus Sinn.
Aber das unendlich oft erfolgende Einlesen immer wieder der gleichen Konfigurationsdatei (bzw. das Lesen immer wieder der gleichen Datenbankdaten) macht keinen Sinn.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

D.h. ins define verlagern.... und bei "set reopen" ebenfalls aufrufen.  kannst du einen Patch als Vorschlag machen?

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

patch Erstellen hatte ich ja weiter oben schon angeboten - ich werde mich am Wochenende mal dransetzen.

-----------------------
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: Tobias am 24 April 2014, 11:06:59
D.h. ins define verlagern....

erledigt.

Zitat von: Tobias am 24 April 2014, 11:06:59
und bei "set reopen" ebenfalls aufrufen.

Das macht im reopen keinen Sinn, denn das reopen macht nix weiter als "Verbindung zu. Verbindung auf."

Aber ich verstehe, was Du meinst: Du möchtest ein
"set <name> rereadcfg" - das wird genauso funktionieren wie das reopen, mit dem Unterschied, dass zwischen disconnect und connect ein readcfg durchgeführt wird.

Zitat von: Tobias am 24 April 2014, 11:06:59
kannst du einen Patch als Vorschlag machen?

Bereits in Arbeit (genauer: im Testbetrieb) Da ist übrigens auch die Änderung hier aus dem Thread enthalten, die dafür sorgt, dass bei (Noch-)Nichtverfügbarkeit der Datenbank kein Abbruch mehr erfolgt, sondern alle 5 Sekunden versucht wird, die Verbindung herzustellen (zur Umgehung der hier ausführlich diskutieren Bootreihenfolgeproblemaik).




Anmerkung:

Zu den durch plotfork verursachten Problemen mit dem Verbindungsverlust habe ich inzwischen auch einen eleganteren Lösungsansatz - den muss ich aber erst noch implementieren und ausführlich testen.
-----------------------
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: Tobias am 24 April 2014, 11:06:59
kannst du einen Patch als Vorschlag machen?

Der Patch ist fertig und befindet sich im Test gegen SQLITE und MySQL (Postgre kann ich nicht testen)

Zitat von: Tobias am 24 April 2014, 10:05:54
Hintergrund ist das die Daten NICHT im Klartext per List oder fhem.cfg sichtbar sind.

Schau mal, damit Du ruhig schlafen kannnst

So sieht das bei SQLITE aus:

(http://up.picr.de/18072664pq.png)

So sieht das bei MySQL aus:

(http://up.picr.de/18072719qb.png)

Da der connection-String und der User sogar im Log ausgegeben werden, habe ich kein Problem damit, die in den Internals zu sehen. Das Psaswort siehst Du da aber nicht ;)

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

betateilchen

Um 21:06:20 wurde fhem gestartet, der MySQL Server lief zu diesem Zeitpunkt nicht.
Um 21:07:00 wurde auf einem anderen Rechner der MySQL Server gestartet.
Um 21:07:08 hat fhem automatisch die Datenbankverbindung hergestellt, nachdem der MySQL Server verfügbar war.


2014.04.24 21:06:38 4: DbLog: Trying to connect to database
2014.04.24 21:06:38 4: Waiting for database connection
2014.04.24 21:06:43 3: Connecting to database mysql:database=fhemLog;host=rasp-nas;port=3306 with user fhem-dev
2014.04.24 21:06:43 4: DbLog: Trying to connect to database
2014.04.24 21:06:43 4: Waiting for database connection
2014.04.24 21:06:48 3: Connecting to database mysql:database=fhemLog;host=rasp-nas;port=3306 with user fhem-dev
2014.04.24 21:06:48 4: DbLog: Trying to connect to database
2014.04.24 21:06:48 4: Waiting for database connection
2014.04.24 21:06:53 3: Connecting to database mysql:database=fhemLog;host=rasp-nas;port=3306 with user fhem-dev
2014.04.24 21:06:53 4: DbLog: Trying to connect to database
2014.04.24 21:06:53 4: Waiting for database connection
2014.04.24 21:06:58 3: Connecting to database mysql:database=fhemLog;host=rasp-nas;port=3306 with user fhem-dev
2014.04.24 21:06:58 4: DbLog: Trying to connect to database
2014.04.24 21:06:58 4: Waiting for database connection
2014.04.24 21:07:03 3: Connecting to database mysql:database=fhemLog;host=rasp-nas;port=3306 with user fhem-dev
2014.04.24 21:07:03 4: DbLog: Trying to connect to database
2014.04.24 21:07:03 4: Waiting for database connection
2014.04.24 21:07:08 3: Connecting to database mysql:database=fhemLog;host=rasp-nas;port=3306 with user fhem-dev
2014.04.24 21:07:08 3: Connection to db mysql:database=fhemLog;host=rasp-nas;port=3306 established for pid 3501
2014.04.24 21:07:08 3: Connection to db mysql:database=fhemLog;host=rasp-nas;port=3306 established
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#42
Hier kommt der versprochene Patch. Erfolgreich getestet gegen SQLITE und MySQL.

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

Tobias

Hi Udo,
kannst du mir einen Gefallen tun und das Diff nochmal gegen die aktuelle DbLog VErsion von morgen erstellen? Ich würde es nächste Woche dann erstmal ins Contrib einchecken...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

welches Diff? Und wieso plötzlich contrib? Dann haben wir plötzlich zwei DbLog Modul - das macht doch keinen Sinn.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!