FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Mirko_2013 am 26 März 2018, 18:54:06

Titel: keine Verbindung mit DBLog
Beitrag von: Mirko_2013 am 26 März 2018, 18:54:06
Hallo zusammen,

Ich habe auf einer externen Synology eine DB laut Wiki angelegt.

Allerdings kann keine Verbindung aufgebaut werden.

Der Config Check gibt folgende Rückmeldung:

Result of DbLog version check

Used DbLog version: 3.9.0
Recommendation: Your running version may be the current one. Please check for updates of DbLog periodically.

Result of configuration read check

Connection parameter store type: file
Connection parameter: Connection -> mysql:database=fhem;host=xxx.xxx.xxx.xxx;port=3306, User -> fhemuser, Password -> read o.k.

Result of connection check

Connection to database was not successful.


Im Logfile zum Verbindungsversuch steht folgende Meldung:
2018.03.26 18:48:31 2: DbLog myDbLog - DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3306','fhemuser',...) failed: Malformed packet at ./FHEM/93_DbLog.pm line 2396.
2018.03.26 18:48:31 5: DbLog myDbLog -> DbLog_Push Returncode:
2018.03.26 18:48:31 3: DbLog myDbLog - Creating Push-Handle to database mysql:database=fhem;host=xxx.xxx.xxx.xxx;port=3306 with user fhemuser
2018.03.26 18:48:41 2: DbLog myDbLog - Error: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3306','fhemuser',...) failed: Malformed packet at ./FHEM/93_DbLog.pm line 2331.
2018.03.26 18:48:41 4: DbLog myDbLog - Trying to connect to database
2018.03.26 18:48:41 4: DbLog myDbLog - Waiting for database connection
2018.03.26 18:48:42 4: DbLog myDbLog -> ################################################################
2018.03.26 18:48:42 4: DbLog myDbLog -> ###              start of new Logcycle                       ###
2018.03.26 18:48:42 4: DbLog myDbLog -> ################################################################
2018.03.26 18:48:42 4: DbLog myDbLog -> number of events received: 7 for device: S10
2018.03.26 18:48:42 4: DbLog myDbLog -> check Device: S10 , Event: sunwatt: 17
2018.03.26 18:48:42 5: DbLog myDbLog -> parsed Event: S10 , Event: sunwatt: 17
2018.03.26 18:48:42 4: DbLog myDbLog -> added event - Timestamp: 2018-03-26 18:48:42, Device: S10, Type: MODBUSATTR, Event


Das System ist auch sehr langsam und fast nicht bedienbar.

Evtl. könnt Ihr mir hier weiterhelfen.

Gruß
Mirko
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: DS_Starter am 26 März 2018, 19:07:49
Hallo Mirko,

Wie ja zu sehen ist funktioniert der Connect zur DB prinzipiell nicht.

Google bringt raus:

Zitat
a malformed package error almost always means that you are trying to connect to some other service (which uses a different protocol), but not a MySQL server. Check address and port to make sure. Also try the command line client and see if that can connect.

Falls du MariaDB 10 auf Synology benutzt, ist es der Port 3307 statt 3306.

Grüße,
Heiko

Titel: Antw:keine Verbindung mit DBLog
Beitrag von: Mirko_2013 am 26 März 2018, 19:38:09
Hallo DS_Starter,

Leider nein.

Der Port der DB läuft auf 3306.
Hier ist auch bereits ein Kodi DB Problemlos am laufen.

Die Fehlermeldung mit Port 3307 sieht wie folgt aus:


2018.03.26 19:24:57 2: DbLog myDbLog - DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3307','fhemuser',...) failed: Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111) at ./FHEM/93_DbLog.pm line 2396.
2018.03.26 19:24:57 5: DbLog myDbLog -> DbLog_Push Returncode:
2018.03.26 19:24:57 3: DbLog myDbLog - Creating Push-Handle to database mysql:database=fhem;host=xxx.xxx.xxx.xxx;port=3307 with user fhemuser
2018.03.26 19:24:57 2: DbLog myDbLog - Error: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3307','fhemuser',...) failed: Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111) at ./FHEM/93_DbLog.pm line 2331.
2018.03.26 19:24:57 4: DbLog myDbLog - Trying to connect to database
2018.03.26 19:24:57 4: DbLog myDbLog -> ################################################################
2018.03.26 19:24:57 4: DbLog myDbLog -> ###              start of new Logcycle                       ###
2018.03.26 19:24:57 4: DbLog myDbLog -> ################################################################
2018.03.26 19:24:57 4: DbLog myDbLog -> number of events received: 1 for device: myDbLog
2018.03.26 19:24:57 4: DbLog myDbLog -> check Device: myDbLog , Event: state: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3307','fhemuser',...) failed: Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111) at ./FHEM/93_DbLog.pm line 2331.
2018.03.26 19:24:57 5: DbLog myDbLog -> parsed Event: myDbLog , Event: state: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3307','fhemuser',...) failed: Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111) at ./FHEM/93_DbLog.pm line 2331.
2018.03.26 19:24:57 4: DbLog myDbLog -> added event - Timestamp: 2018-03-26 19:24:57, Device: myDbLog, Type: DBLOG, Event: state: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3307','fhemuser',...) failed: Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111) at ./FHEM/93_DbLog.pm line 2331.
2018.03.26 19:24:57 2: DbLog myDbLog - DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3307','fhemuser',...) failed: Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111) at ./FHEM/93_DbLog.pm line 2396.
2018.03.26 19:24:57 5: DbLog myDbLog -> DbLog_Push Returncode:
2018.03.26 19:24:57 4: DbLog myDbLog - Waiting for database connection

Mit Port 3306:
2018.03.26 19:34:04 4: DbLog myDbLog -> ################################################################
2018.03.26 19:34:04 4: DbLog myDbLog -> ###              start of new Logcycle                       ###
2018.03.26 19:34:04 4: DbLog myDbLog -> ################################################################
2018.03.26 19:34:04 4: DbLog myDbLog -> number of events received: 1 for device: myDbLog
2018.03.26 19:34:04 4: DbLog myDbLog -> check Device: myDbLog , Event: state: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3306','fhemuser',...) failed: Malformed packet at ./FHEM/93_DbLog.pm line 2396.

2018.03.26 19:34:04 5: DbLog myDbLog -> parsed Event: myDbLog , Event: state: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3306','fhemuser',...) failed: Malformed packet at ./FHEM/93_DbLog.pm line 2396.

2018.03.26 19:34:04 4: DbLog myDbLog -> added event - Timestamp: 2018-03-26 19:34:04, Device: myDbLog, Type: DBLOG, Event: state: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3306','fhemuser',...) failed: Malformed packet at ./FHEM/93_DbLog.pm line 2396.
, Reading: state, Value: DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3306','fhemuser',...) failed, Unit: Malformed packet at ./FHEM/93_Db
2018.03.26 19:34:09 2: DbLog myDbLog - DBI connect('database=fhem;host=xxx.xxx.xxx.xxx;port=3306','fhemuser',...) failed: Malformed packet at ./FHEM/93_DbLog.pm line 2396.



Gruß
Mirko
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: CoolTux am 26 März 2018, 19:41:35
Mirko bitte Code oder Logausgaben in Codetags setzen. Das ist das Raute Symbol in der Werkzeugleiste des Forumeditors.
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: DS_Starter am 26 März 2018, 19:55:32
Was bringt denn ein:


mysql -u fhemuser -p -h <Syno-IP>  (anpassen)


vom RPi aus aufgerufen ?

Hast du alle benötigten Perl-Module, wie in der Commandref angegeben, auf dem RPi installiert ?
Die IP der Synology ist auch richtig ? (ist trivial, aber manchmal ...)
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: Mirko_2013 am 26 März 2018, 20:25:34
Auf den Befehl: mysql -u fhemuser -p -h <Syno-IP>  (anpassen)

Kommt folgende Meldung:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13538
Server version: 5.5.47-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


Module sind alle installiert und ja auch die IP der Synology ist richtig.
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: CoolTux am 26 März 2018, 20:32:07
Nach welcher Anleitung bist Du denn vorgegangen? Hast Du eine Datenbank erstellt und Tabellen angelegt?
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: DS_Starter am 26 März 2018, 20:45:21
Habe es jetzt mit meiner MariaDB 5 auch mal so ausgetestet.
Irgendwie sind meine Ausschriften anders als deine und habe rot markiert was mir gegenüber deinen Ausschriften aufgefallen ist:

Zitat
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 57444
Server version: 5.5.57-MariaDB Source distribution

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>


Diese Meldung "Malformed packet" deutet auf ein Protokollproblem hin.
Benutzt du MariaDB aus dem normalen Paketzentrum der Syno ?  Mach doch mal einen Screenshoot von deinem Maria-Paket im Paketzentrum.
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: Mirko_2013 am 26 März 2018, 21:49:54
Zitat von: CoolTux am 26 März 2018, 20:32:07
Nach welcher Anleitung bist Du denn vorgegangen? Hast Du eine Datenbank erstellt und Tabellen angelegt?

Auf der Synology habe ich per SQL Statement (aus dem fhem verzeichnis) die DB inklusive User angelegt).


CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword';
CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';
CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP);


Auf dem Fhem Rechner das DBI Modul per span installiert und mit apt.get folgende Module "mysql-client libdbd-mysql libdbd-mysql-perl" installiert.

die db.conf im fhem Verzeichnis angelegt, mit den entsprechenden Berechtigungen:

-rw-r--r-- 1 fhem dialout 1047 Mär 26 20:52 db.conf


Config in der db.conf sieht wie folgt aus:

%dbconfig= (
        connection => "mysql:database=fhem;host=xxx.xxx.xxx.xxx;port=3306",
        user => "fhemuser",
        password => "fhempassword",
        # optional enable(1) / disable(0) UTF-8 support (at least V 4.042 is necessary)
        utf8 => 1,
    );


Ich habe gerade die DB und die Konfiguration neu angelegt, daher die Standart Passwörter.
Leider kein unterschied
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: DS_Starter am 26 März 2018, 21:56:20
Das sieht alles soweit richtig aus.
Aber nochmal mal die Frage ... benutzt du das MariaDB 5 Paket aus dem Syno Paketzentrum ?
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: Mirko_2013 am 26 März 2018, 21:57:39
Zitat von: DS_Starter am 26 März 2018, 20:45:21
Habe es jetzt mit meiner MariaDB 5 auch mal so ausgetestet.
Irgendwie sind meine Ausschriften anders als deine und habe rot markiert was mir gegenüber deinen Ausschriften aufgefallen ist:

Diese Meldung "Malformed packet" deutet auf ein Protokollproblem hin.
Benutzt du MariaDB aus dem normalen Paketzentrum der Syno ?  Mach doch mal einen Screenshoot von deinem Maria-Paket im Paketzentrum.

Ja, ich habe die normale Maria DB aus dem Packetzentrum installiert.

Titel: Antw:keine Verbindung mit DBLog
Beitrag von: DS_Starter am 26 März 2018, 22:03:59
Hmm ... irgendwie fällt mir nun nichts mehr ein außer Google zu bemühen ...

EDIT: Doch eins fällt mir noch ein. Du hast die Perl-Module über CPAN installiert. Es wäre vllt. noch ein Versuch wert sie über apt-get zu installieren.
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: CoolTux am 26 März 2018, 22:07:01
kommst du auf der Synology auf eine Konsole? dann lass dir mal anzeigen was auf welchen port läuft

netstate -tulp

ausserdem kannst du vom fhem Server mal ein Verbindungsversuch mit netcat machen

netcat -v <ip-Synology> 3307
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: Mirko_2013 am 26 März 2018, 22:12:35
Hallo zusammen,

Durch euren Hinweis, hatte ich die Maria DB und myPHPadmin aktualisiert, womit ich jetzt bei meinem neuen Versuch schonmal die Verbindung aufbauen kann.
Zum Schluss habe ich jetzt noch die Kollektion auf "utf8_gerneral_ci" eingestellt.

Jetzt klappt es super.

Logfile sieht wie folgt aus:


2018.03.26 21:59:10 4: DbLog myDbLog -> insert table history committed by autocommit
2018.03.26 21:59:10 5: DbLog myDbLog -> DbLog_Push Returncode: 0
2018.03.26 21:59:10 4: DbLog myDbLog -> ################################################################
2018.03.26 21:59:10 4: DbLog myDbLog -> ###              start of new Logcycle                       ###
2018.03.26 21:59:10 4: DbLog myDbLog -> ################################################################
2018.03.26 21:59:10 4: DbLog myDbLog -> number of events received: 1 for device: myDbLog
2018.03.26 21:59:10 4: DbLog myDbLog -> check Device: myDbLog , Event: state: connected
2018.03.26 21:59:10 5: DbLog myDbLog -> parsed Event: myDbLog , Event: state: connected
2018.03.26 21:59:10 4: DbLog myDbLog -> added event - Timestamp: 2018-03-26 21:59:10, Device: myDbLog, Type: DBLOG, Event: state: connected, Reading: state, Value: connected, Unit:
2018.03.26 21:59:10 4: DbLog myDbLog -> ################################################################
2018.03.26 21:59:10 4: DbLog myDbLog -> ###         New database processing cycle - synchronous      ###
2018.03.26 21:59:10 4: DbLog myDbLog -> ################################################################
2018.03.26 21:59:10 4: DbLog myDbLog -> DbLogType is: History
2018.03.26 21:59:10 4: DbLog myDbLog -> AutoCommit mode: ON, Transaction mode: ON
2018.03.26 21:59:10 5: DbLog myDbLog -> Primary Key used in fhem.history: none
2018.03.26 21:59:10 5: DbLog myDbLog -> Primary Key used in fhem.current: none
2018.03.26 21:59:10 4: DbLog myDbLog -> processing event Timestamp: 2018-03-26 21:59:10, Device: myDbLog, Type: DBLOG, Event: state: connected, Reading: state, Value: connected, Unit:
2018.03.26 21:59:10 4: DbLog myDbLog -> 1 of 1 events inserted into table history
2018.03.26 21:59:10 4: DbLog myDbLog -> insert table history committed by autocommit
2018.03.26 21:59:10 5: DbLog myDbLog -> DbLog_Push Returncode: 0
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: DS_Starter am 26 März 2018, 22:14:31
Na das ist doch was  :)

Und jetzt nochmal bitte ein


set <dblog> configCheck
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: Mirko_2013 am 26 März 2018, 22:20:49
Danke euch,
jetzt kann ich mich ranmachen die SVG's umzustellen und wie ich die Logfiles wieder zu sehen bekomme, sowohl auch das Zentrale Logfile. :-)
Evtl. habt Ihr da noch ein paar Tips für mich .  :D

Die Ausgabe von configCheck gibt folgendes:

Result of DbLog version check

Used DbLog version: 3.9.0
Recommendation: Your running version may be the current one. Please check for updates of DbLog periodically.

Result of configuration read check

Connection parameter store type: file
Connection parameter: Connection -> mysql:database=fhem;host=xxx.xxx.xxx.xxx;port=3306, User -> fhemuser, Password -> read o.k.

Result of connection check

Connection to database fhem successfully done.
Recommendation: settings o.k.

Result of encoding check

Encoding used by Client (connection): UTF8
Encoding used by DB fhem: UTF8
Recommendation: settings o.k.

Result of logmode check

Logmode of DbLog-device myDbLog is: synchronous
Recommendation: Switch myDbLog to the asynchronous logmode by setting the 'asyncMode' attribute. The advantage of this mode is to log events non-blocking.
There are attributes 'syncInterval' and 'cacheLimit' relevant for this working mode.
Please refer to commandref for further informations about these attributes.

Result of plot generation method check

WARNING - at least one of your FHEMWEB devices have attribute "plotfork = 1" not set. This may cause blocking situations when creating plots.
WEB: plotfork=0
WEBphone: plotfork=0
WEBtablet: plotfork=0
Recommendation: You should set attribute "plotfork = 1" in relevant devices

Result of table 'history' check

Column width set in DB fhem.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.

Result of table 'current' check

Column width set in DB fhem.current: '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.

Result of check 'Search_Idx' availability

Index 'Search_Idx' exists and contains recommended fields 'DEVICE', 'READING', 'TIMESTAMP'.
Recommendation: settings o.k.

Result of check 'Report_Idx' availability for DbRep-devices

No DbRep-device assigned to myDbLog is used. Hence an index for DbRep isn't needed.
Recommendation: settings o.k.


Gruß
Mirko
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: CoolTux am 26 März 2018, 22:25:46
Wieso willst du Logfiles sehen? Du hast doch auf db umgestellt.
Das zentrale FHEM Logfile hat im übrigen nichts mit Device Log und somit der logdb zu tun.
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: DS_Starter am 26 März 2018, 22:28:47
Wie CoolTux schon schrieb .....

Ansonsten sehr schön. Jetzt kannst du noch den Empfehlungen bzgl. 'asyncMode' und 'plotfork' folgen um Non-blocking zu arbeiten.
Dann sei noch der Hinweis auf DbRep für Auswertungen, Inhaltsmanagement  und Datenbank-Backups gestattet.

Viel Spaß damit !

Grüße,
Heiko
Titel: Antw:keine Verbindung mit DBLog
Beitrag von: Mirko_2013 am 26 März 2018, 22:31:28
Ja richtig, Frage schlecht gestellt.
Bisher konnte man das Zentrale Logfile aufrufen, die Frage war, wie ich jetzt die selbe Sicht wieder habe nur mit den Daten aus der DbLog.
Aber da werde ich jetzt erstmal das Wiki und Forum durchgraben :-)
Vor allem werde ich auf change-event umstellen müssen, jedenfalls wundere ich mich gerade das ich in dieser kurzen Zeit 15600 Einträge in der DB habe .

Daher ja, ich werde dem Hinweis
ZitatAnsonsten sehr schön. Jetzt kannst du noch den Empfehlungen bzgl. 'asyncMode' und 'plotfork' folgen um Non-blocking zu arbeiten.
Dann sei noch der Hinweis auf DbRep für Auswertungen, Inhaltsmanagement  und Datenbank-Backups gestattet.
folgen :-)

Gruß
Mirko


Titel: Antw:keine Verbindung mit DBLog
Beitrag von: DS_Starter am 26 März 2018, 22:41:25
Zitat
Bisher konnte man das Zentrale Logfile aufrufen, die Frage war, wie ich jetzt die selbe Sicht wieder habe nur mit den Daten aus der DbLog.
Aber da werde ich jetzt erstmal das Wiki und Forum durchgraben :-)

-> DbRep "fetchrows" und andere Auswertungsmöglichkeiten , doch wie CoolTux schrieb -> es landen die EVENT-Logs in der DB, das zentrale Logfile enthält die Logausgaben die der Entwickler der Module ausgeben lässt.

Zitat
jedenfalls wundere ich mich gerade das ich in dieser kurzen Zeit 15600 Einträge in der DB habe

rasant  ;)