93_DbLog - Überlegungen zur Optimierung (RPI und andere Systeme)

Begonnen von JoeALLb, 27 Januar 2017, 22:16:19

Vorheriges Thema - Nächstes Thema

DS_Starter

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

DeeSPe

Zitat von: DeeSPe am 18 August 2017, 21:45:27
attr myFHEMdb_LT valueFn {if($VALUE=~/\s%$/){$VALUE=~s/\s%$//;$UNIT="%";}}

Diese valueFn hat in der letzten Nacht meine Batteriewerte der ZWave Sensoren richtig geloggt!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DS_Starter

Hallo miteinander,

habe soeben die Version 2.22.6 eingecheckt.
In der V hat sich nichts geändert außer dass ich die commandref überarbeitet habe und insbesondere die ersten Schritte vor dem Define besser verständlich strukturiert habe (hoffe ich jedenfalls).

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

Pyromane

Guten Abend,

ich setze DbLog(2.22.6) zusammen mit PostgreSQL ein, bei einem set <name> configCheck erhalte ich folgende (gekürzte) Ausgabe


........
Result of table 'history' check

Column width set in DB fhemdaten: 'DEVICE' = no esult, 'TYPE' = no esult, 'EVENT' = no esult, 'READING' = no esult, 'VALUE' = no esult, 'UNIT' = no esult
Column width used by myDbLog: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Recommendation: The relation between column width in table history and the field width used in device myDbLog don't meet the requirements. Please make sure that the width of database field definition is equal or larger than the field width used by the module. Compare the given results.
Currently the default values for field width are:

DEVICE: 64
TYPE: 64
EVENT: 512
READING: 64
VALUE: 128
UNIT: 32

You can change the column width in database by a statement like 'alter table history modify VALUE varchar(128);' (example for changing field 'VALUE'). You can do it for example by executing 'sqlCMD' in DbRep or in a SQL-Editor of your choice. (switch myDbLog to asynchron mode for non-blocking).
The field width used by the module can be done by setting attributes 'colEvent', 'colReading', 'colValue',
........



Ich denke mal bei "no esult" hat sich das R heimlich aus dem Staub gemacht.
Aus meiner Sicht wäre es besser wie folgt zu schreiben: Column width set in table 'history'

Gleiches gilt auch für den "current" Abschnitt

Grüße
Pyro

DS_Starter

Hi Pyro,

teste mal die angehängte 2.22.7 ob du das "r" nun hast.

Was ich aber prinzipiell nicht verstehe ist wieso du überhaupt "no esult" bekommst. Bei mir klappt es einwandfrei (screenshot).

Kannst du mal in deinem SQL-Editor eingeben:

select column_name,character_maximum_length from information_schema.columns where table_schema='$dbname' and table_name='history' and column_name='device'

Dabei ist $dbname deine DbLog-Datenbank.

ZitatAus meiner Sicht wäre es besser wie folgt zu schreiben: Column width set in table 'history'
Ich hatte bewußt "Column width set in DB fhemdaten" geschrieben um eindeutig gegenüber den Settings im Device (Column width used by myDbLog) abzugrenzen. Das es sich dabei um die Tabelle history bzw. current handelt steht ja im jeweiligen Abschnitt eindeutig in der Überschrift  ;)
Ich habe es jetzt so ergänzt -> "Column width set in DB fhemdaten.history" bzw. "Column width set in DB fhemdaten.current".

Teste mal bitte.

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

Pyromane

Zitat von: DS_Starter am 24 September 2017, 20:18:47Kannst du mal in deinem SQL-Editor eingeben:

select column_name,character_maximum_length from information_schema.columns where table_schema='$dbname' and table_name='history' and column_name='device'

Dabei ist $dbname deine DbLog-Datenbank.

Hallo Heiko,

mein Aufbau ist wie folgt:
Datenbankname: fhemdaten
Schema: fhem

Wenn ich jetztselect column_name,character_maximum_length from information_schema.columns where table_schema='fhemdaten' and table_name='history' and column_name='device'
ausführe erhalte ich:
Total query runtime: 20 msec0 rows retrieved.

Wenn ich allerdings das Schema abfrage:
select column_name,character_maximum_length from information_schema.columns where table_schema='fhem' and table_name='history' and column_name='device'
erhalte ich korrekt die Antwort
"device";64

Kann es sein das in deiner Testumgebung beides gleich benannt ist?


2.22.7 werde ich morgen testen.

DS_Starter

Ja, kann sein.  Versuche den Abruf mal so:

select column_name,character_maximum_length from information_schema.columns where table_name='history' and column_name='device'
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

Pyromane

Zitat von: DS_Starter am 24 September 2017, 22:00:08
Ja, kann sein.  Versuche den Abruf mal so:

select column_name,character_maximum_length from information_schema.columns where table_name='history' and column_name='device'

Ja, funktioniert:
"device";64

DS_Starter

Ok, prima ... hatte ich vermutet  :)
Ich habe hier noch eine 2.22.7a angehängt. Wenn du du die 2.22.7 testest sollte "no result" kommen und mit der 2.22.7a dann auch (hoffentlich) es richtig funktionieren.

Danke und bis morgen .. gute Nacht !

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

Pyromane

Testsystem erstellen ist schneller gegangen als gedacht:

2.22.7
Result of table 'history' check

Column width set in DB fhemdaten.history: 'DEVICE' = no result, 'TYPE' = no result, 'EVENT' = no result, 'READING' = no result, 'VALUE' = no result, 'UNIT' = no result
Column width used by myDbLog: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Recommendation: The relation between column width in table history and the field width used in device myDbLog don't meet the requirements. Please make sure that the width of database field definition is equal or larger than the field width used by the module. Compare the given results.
Currently the default values for field width are:

DEVICE: 64
TYPE: 64
EVENT: 512
READING: 64
VALUE: 128
UNIT: 32

You can change the column width in database by a statement like 'alter table history modify VALUE varchar(128);' (example for changing field 'VALUE'). You can do it for example by executing 'sqlCMD' in DbRep or in a SQL-Editor of your choice. (switch myDbLog to asynchron mode for non-blocking).
The field width used by the module can be done by setting attributes 'colEvent', 'colReading', 'colValue',



2.22.7a
Result of table 'history' check

Column width set in DB fhemdaten.history: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Column width used by myDbLog: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Recommendation: settings o.k.


Aus meiner Sicht sollte somit alles passen.
Herzlichen Dank für die schnellen Anpassungen!

Gruß und gute Nacht
Pyro

DS_Starter

Guten Morgen Pyro,

danke für dein Engagement extra noch ein zusätzliches Testsystem aufzubauen.
Sieht gut aus  :)

Werde die 2.22.7a als Version 2.22.7 heute Abend einchecken.

Guten Start in die Woche !

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

DS_Starter

#461
Hallo zusammen,

habe eine neue Version gebaut 2.22.8 gebaut. Bei dieser Version werden in der Dropdown-Liste zur SVG-Erstellung doppelte Einträge in der current (sofern dort vorhanden) bei der Ausgabe eliminiert.

Würde mich freuen wenn ihr einen Test dieser Version machen würdet.

Grüße,
Heiko

Edit: V2.22.8 ist eingecheckt
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

Pyromane

Hallo Heiko,

ich hätte eine kleine Verständnissfrage:
Aus der "current" Tabelle werden ja nur die Spalten device und reading genutzt um die SVG Erstellung zu vereinfachen.
Demnach müsste es ja möglich sein die beiden Spalten mit einer "SELECT DISTINCT" Abfrage aus der "history" Tabelle zu befüllen?
Danke!

Gruß und gute Nacht,
Pyro

JoeALLb

Hallo Pyro,

ja, das ist möglich und dafür gab es auch Tests, bei größeren Datenbanken mit mehreren 10 Mio Datensätzen dauerte diese Abfrage 17s oder teils je nach Indexe deutlich länger.
Ob man so lange zum Öffnen dieser Seite warten möchte?

beste Grüße
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Pyromane

Mahlzeit,

ich dachte eher an einen "set" Befehl(nonblocking) den man entweder ausführt wenn man neue Devices/Readings angelegt hat oder wenn man die current Tabelle regelmäßig erstellt haben möchte kann man ja ein AT definieren.

Gruß
Pyro