Moin
Endlich mal wieder kaempfe ich mit dieser Datenbank. Nachdem ich eigentlich nur die Eintraege der Sat-Receiver aus den Listen fuer die Plots haben wollte, habe ich meine DB wohl irgendwie geschrottet. Da es fuer mich nicht essentiell ist, habe ich die DB geloescht, neu angelegt und fhem wieder gestartet. Soweit so gut. Die Logs laufen auch wieder ein, und die plots fuellen sich.
Aber, wiedereinmal kann ich die Daten in den plots nicht auswaehlen. Es stehen teilweise total unsinnige Dinge in der Auswahlliste, einiges ist viel mehr als einmal vorhanden, und anderes eben ueberhaupt nicht. Ich hatte das Thema schon mal irgendwie, habe es aber nicht wieder gefunden.
Ich wollte das gestern/heute Nacht nicht mehr schreiben, denn dann waere es noch spaeter als 0:45 Uhr geworden.
Meine SQLite Datenbank ist auf asysnchron eingestellt und es ist current/history ausgewaehlt. Da die Datenbank keine 24h alt ist, habe ich auch kein Problem, diese nochmal zu loeschen. Wenn sinnvoll kann ich auch eine andere, dann sogar am liebsten auf dem NAS, anlegen.
Was mich halt extrem verwundert, ist die Tatsache, dass in den Dropdowns noch alles Erdenkliche eingetragen ist. Woher holt er sich das, und wie spuele ich das? Und viel wichtiger, wie komme ich an die echten Daten zur Auswahl?
Auch kann ich die neue nicht mehr mit dem DB-Browser oeffnen, der stuerzt so ab, dass der Taskmanager von W10 den nicht mal killen kann.
Gruss Christoph
P.S.: Ach ja, ich habe auch noch eine config.db
ich nehme an du kennst https://wiki.fhem.de/wiki/DbLog ?
hast du den Abschnitt
Zitat
current
Die Tabelle current enthält für jedes zu loggende Device lediglich den letzten Wert. Falls noch kein Wert geloggt wurde, ist diese Tabelle leer. Falls der Inhalt gelöscht wird, bauen sich die Daten automatisch wieder auf. Es gehen durch das löschen der Tabelle current keine Log-Informationen verloren. Der Inhalt wird aber u.a. für die Dropdown-Felder beim Plot-Editor verwendet.
Um doppelte Einträge in der Tabelle zu vermeiden, wurden die Möglichkeit geschaffen Primary Keys zu definieren. Da in der Spalte READING u.U. bei verschiedenen Geräten gleiche Namen vorkommen können, sollte der Primary Key um den Gerätenamen erweitert werden. Der Primary Key sollte also aus DEVICE und READING bestehen. Um in der Datenbank fhem diesen PK zu setzen, kann folgender SQL Code verwendet werden:
ALTER TABLE `fhem`.`current`
CHANGE COLUMN `DEVICE` `DEVICE` VARCHAR(64) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
CHANGE COLUMN `READING` `READING` VARCHAR(64) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
ADD PRIMARY KEY (`DEVICE`, `READING`);
befolgt ?
Hallo Wzut
Nein natuerlich nicht. Mein Problem ist, dass ich vorsichtshalber nicht weiss, wo ich das einzugeben habe. Ich lese, dass es SQL Code ist, ich entnehme daraus, dass ich es dementsprechend in der Datenbak ausfuehren muss. Aber wie und wo, keinen Plan.
Ich weiss, dass ich da voellig doof bin, aber ich wollte diese vielen Logfiles loswerden und bin deswegen umgestiegen. Die Datenpflege faellt mir aber recht schwer! Zudem hilft mir das bei den doppelten Eintraegen, aber die richtigen sind trotzdem nicht da!
Danke und Gruss
Christoph
Ich bin nun auch nicht der sqlite Guru (verwende immer MySQL) , aber geh in der shell in das Dir wo deine .db. Datei liegt.
Dann sqlite eingeben , danach kannst du mittels .open <name deiner db> die DB öffnen und dein SQL eingeben
sqlite> .open "fhem.db"
sqlite> Ab hier SQL eingeben wie im Wiki beschrieben
sqlite> .exit
Wenn dir nach einiger Zeit immer noch Werte zur Auswahl fehlen , stelle sicher das sie mittels Event auch min 1x geschrieben wurden. Wichtig gerade bei Readings die mittels event-on-change-reading gefiltert werden und sich nicht sehr oft ändern. GGf einfach mal das Attr löschen und etwas warten und wieder hinzufügen. Habe auch einen Blick auf DBLogExlude
Wow
Danke, das war mal eine Anleitung, die ich haette befolgen koennen. Leider aber scheitert es daran, dass vermutlich diese depperten Haeckchen in dem Beispiel sind. So sagte es mir gerade ein Kollege. Und wenn ich das reinkopiere kommt auch ein Fehler!
error near " "; syntax error
Gruss Christoph
dann kopier doch den SQL Bandwurm erst in einen Editor und wirf alles was ` oder ' ist raus.
Bsp siehe hier -> https://www.tutorialspoint.com/sqlite/sqlite_alter_command.htm
Richtig wichtig ist wohl aber das Semikolon ; am Ende
Hallo
Ja mache ich nachher, wenn ich zu Hause bin, und sturmfreie Bude habe. Mit Handy ist das Mist!
Gruss Christoph
Hallo Wzut,
ganz bescheidene Anfrage echt... kenne mich in der Materie nicht aus.
Bist Du Dir sicher der Code auf den Du Hinweist unter SqLite angenommen wird ? Sondern nur unter MySQL ??
Mein ganz schwaches Englisch vermutet eher nicht auch ohne die Hochkommata.
Vermute auch das sich der Primärschlüssel im Nachhinein unter SqLite sich nicht einfügen lässt, vielleicht kann mir jemand bestätigen ob ich auf dem falschen Dampfer bin.
Gruß
Hans-Jürgen
Moin Hans-Juergen
Du hast leider recht:
ZitatThere is no other operation supported by ALTER TABLE command in SQLite except renaming a table and adding a column in an existing table.
Gruss Christoph
OK
Und nun die naechste Frage. Dann wechsle ich zu MySQL. Das ist insgesamt eh charmanter. Welche Probleme handele ich mir damit ein? Ist dann meine Conf.db hin, oder wie. Kann ich die conf.db auch umstellen, oder bleibt die wie sie ist. Das waere ja bloed, da zwei SQL-Server laufen.
Am liebsten haette ich ja immer noch eine DB auf meinem NAS, aber beim kurzen ueberfliegen der einschlaegigen Foren, denke ich, dass das fuer mich eher nichts ist, da es dann noch komplizierter wird.
Was immer noch im Raum steht, warum laufen die plots, aber in den dropdowns sind gar nicht die richtigen Daten auswaehlbar!?
Gruss Christoph
Hallo pc1246,
nur mal ein Schuss ins Blaue wie gesagt bin schon sehr alt und kenne mich in der Materie nicht aus.
Vielleicht stimmt Deine DEF vom SVG nicht ganz ?
Bei mir z.B. DEF myDbLog:SVG_Buerosensor:HISTORY
Eventuell steht bei Dir noch vorne für myDbLog bei mir , bei Dir was mit FileLog. so hast Du noch die alten Auswahlmöglichkeiten drin.
Gruß
Hans-Jürgen
Zitat von: pc1246 am 28 September 2017, 21:24:32
Kann ich die conf.db auch umstellen, oder bleibt die wie sie ist. Das waere ja bloed, da zwei SQL-Server laufen.
MW kannst Du den Inhalt der datenbank auslesen und in eine Textdatei schreiben. Das machst Du dann rückwärts mit mysql. Bei mysql lautet der Befehl
mysqldump -u username -p database_name > dump.sql
Aber halt, du willst ja von sqllite in mysql, richtig? Dann suche mal "Datenexport sqllite", also so etwas http://www.sqlitetutorial.net/sqlite-export-csv/ (http://www.sqlitetutorial.net/sqlite-export-csv/)
Und danach wieder Datenimport mysql.
Hallo miteinander,
ZitatAm liebsten haette ich ja immer noch eine DB auf meinem NAS, aber beim kurzen ueberfliegen der einschlaegigen Foren, denke ich, dass das fuer mich eher nichts ist, da es dann noch komplizierter wird.
@Christoph .... um dir die Bedenken etwas zu nehmen -> MySQL / MariaDB sind ausgewachsene Datenbanksysteme die nicht so schwer zu administrieren sind. Ich selbst bin ein Fan von MySQL und betreibe die DB auf einem NAS (siehe unten).
ZitatWas immer noch im Raum steht, warum laufen die plots, aber in den dropdowns sind gar nicht die richtigen Daten auswaehlbar!?
Man muss unterscheiden:
* die Werte für Plots werden aus der History-Tabelle gelesen
* die Dropdown-Liste wird aus den Werten der current-Tabelle erstellt. Die current enthält nur device/reading-Kombinationen die als Events nach dem letzten Leeren der current (mit delte from current) im System aufgetreten sind UND die die dem angegeben Regex im DEF entsprachen.
Wenn du also Werte vermisst im Dropdown oder die Daten nicht als "richtig" bezeichnest solltest du dich fragen welche Kombinationen du vermisst, ob diese Events seit dem letzten Leeren der current auftraten und ob sie dem Regex im DEF entsprachen.
Ohne konkretes Beispiel ist es sicher schwierig zu beraten und zu analysieren.
Um Daten von einer DB in eine andre DB umzuziehen, kannst du auch DbRep verwenden. Damit kannst du auch Datensätze deiner Devices Stück für Stück umziehen. WIe man das machen kann habe ich im Wiki hier beschrieben:
https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Datens.C3.A4tze_.28Devices.29_von_einer_Datenbank_in_eine_andere_umziehen_.28Export.2FImport.29
LG
Heiko
Moin Heiko
Danke, dass Du Dich noch einmal meiner annimmst. Machen wir es mal kurz.
- Wenn ich auf der Syno eine DB anlegen will, dann faengt das Problem schon an. Ich denke ich nehme phpadmin, aber allein schon der Typ der DB ist mir nicht klar.
- In der momentanen Konstellation, bin ich mir sicher, dass diverse Events geschossen wurden, um die Werte aufzufuellen.
- Speziell habe ich jetzt einen KS300 im Focus, und der hat zumindest Temperaturen gemeldet. OK jetzt habe ich mal eventonchangereading dekativiert. Mal sehen wann der wieder kommt.
- Es sind aber auch neu x doppelte Eintraege da, das war ja vorher nicht. Kann man denn in SQLite auch die Schluessel vergeben
- Wie ist nochmal die richtige Einstellung fuer die DB, current, history oder current/history? Ich verstehe, wo die entsprechenden Daten herkommen, und was sie bewirken, aber wozu kann/muss ich das einstellen?
Gruss Christoph
P.S.: KS300 hat gerade getriggert. Nix im Dropdown. Derzeit ist current/history eingestellt!
Hallo Christoph,
zu
Es sind aber auch neu x doppelte Eintraege da, das war ja vorher nicht.
Wenn periodisch neue Werte als events gesendet werden wie bei manchen Fensterkontakten, Temperatursensoren dann hast Du ja auch schon mal doppelte (gleiche)? Einträge.
Das ist ja gerade der Sinn von eventonchangereading dies zu verhindern .
Mein bescheidenes Verständnis der Dinge.
Nochmal hast Du Dir die DEF deines SVG angeschaut ?
Primärschlussel vermute ich geht nur direkt beim anlegen der Datenbank ?
Bei mir lief eigentlich in der Datenbankeinstellung auf HISTORY soweit alles, aber auch als combie HISTORY/CURRENT.
Nun gut, irgendwie ist mir das gefühlte gewurstel mit SqLite über und habe das Gefühl das die Erklärungen sich "Haupsächlich" auf MySQL beziehen und man mit einigen Inkompatiblitäten Unkenntnissen meinerseits zum Thema Datenbank mehr gegen den Baum läuft.
Werde erst mal SqLite löschen und mal sehen wieweit mein Raspi 3 da in Punkto Geschwindigkeit mitspielt mit Wechsel auf MySQL.
Habe hier einen lüfterlosen Industrieserver als Mediaserver stehen und plane sowieso den Umzug dorthin . PHPAdmin hilft eventuell auch etwas.
Gruß
Hans-Jürgen
Moin Christoph, moin zusammen,
ZitatEs sind aber auch neu x doppelte Eintraege da, das war ja vorher nicht.
Ich habe dir/euch eine neue DbLog-Version angehängt. In dieser Version werden in der Dropdown-Liste doppelte Einträge vermieden auch wenn sie wegen eines fehlenden Schlüssels in der current-Tabelle enthalten sind. Lade sie runter, benenne sie nach 93_DbLog um, fhem restart und dann sollte es passen. Wenn es bei dir/euch genauso gut klappt wie bei mir checke ich die neue Version ein.
ZitatWenn ich auf der Syno eine DB anlegen will, dann faengt das Problem schon an. Ich denke ich nehme phpadmin, aber allein schon der Typ der DB ist mir nicht klar.
Die Syno bringt alles mit was du zum Betrieb von MySQL brauchst. Zur Administration ist phpMyAdmin sehr gut geeignet und benutze ich auch. Am Anfang ist die Bedienung sicher etwas gewöhnungsbedürftig.
Was den Typ der DB betrifft .... lass dich nicht verwirren. Zunächst ist es wichtig zu wissen dass MySQL und MariaDB zumindest in unserem Kontext gleichgesetzt werden können. Das stimmt zwar nicht wirklich, aber für uns können wir sagen MySQL=MariaDB. Synology liefert MariaDB aus. Im neueren DSM gibt es die MariaDB 5 (altes Release) und MariaDB 10 (neu). Beide Versionen kann man parallel verwenden. Ich plädiere für MariaDB 10.
Achtung: In diesem Fall ändert sich der Port bei in der db.conf in 3307 (bei Synology-Verwendung) !
ZitatKann man denn in SQLite auch die Schluessel vergeben
Ja, kann man, aber wie schon Deckoffizier schrieb geht es bei SQLite nur während des Anlegens der Datenbank. MySQL ist da pflegeleichter. Einen primary Key (PK) kann man jederzeit hinzufügen/ändern/löschen.
ZitatWie ist nochmal die richtige Einstellung fuer die DB, current, history oder current/history? Ich verstehe, wo die entsprechenden Daten herkommen, und was sie bewirken, aber wozu kann/muss ich das einstellen?
Diese Dropdown-Liste ist eine Hilfestellung. Aber wenn man SVGs ein paar mal über diesen Weg erstellt hat, weiß man wie die Zeile mit der Device:Reading-Kombination editiert werden muss. Manchmal ist es auch notwendig, zum Beispiel falls man dort Regex mit einfließen lassen möchte oder die gewünschte Device:Reading-Kombi in der Dropdown nicht vorhanden ist. Dann ist es hilfreich die Verwendung der current-Tabelle abzuschalten, denn nur in diesem Fall ist die Zeile "offen". Man wählt somit nur "history" im Attribut DbLogType aus.
Ein Nebeneffekt ist, dass die current dann nicht mehr beschrieben wird was zur Performancesteigerung beitragen kann. Aus diesem Grund ist sie per default auch nicht eingeschaltet.
Die Kombi current/history erklärt sich von selbst ... es wird in beide Tabelle geschrieben.
Nur das Attr DbLogType=current zu setzen ist im Allgemeinen nicht sinnvoll, weil in diesem Fall nichts mehr geloggt wird, d.h. die Tabelle "history" wird nicht mehr beschrieben. Möglicherweise möchte man aber für einen gewissen Zeitraum das Logging mal ausschalten, dann wäre dieses Attribut eine Möglichkeit von weiteren (disable, Regex ändern, etc. )
Wenn du dir den Inhalt der current Tabelle mal anschauen bzw. kommunizieren willst kannst du in deinem
DbRep-Device auch eingeben:
set <name> sqlCmd select Timestamp,Device,Reading from current;
Dann wird dir der gesamte Inhalt der current ausgegeben. Mit dem Attr sqlResultFormat=table wird der Inhalt als gut lesebare Tabelle erstellt.
Wenn du auf MySQL/MariaDB der Synology wechseln möchtest (ich würde es empfehlen), würde ich folgendes Verfahren vorschlagen:
1. Installiere die Pakete MariaB 10 und phpMyadmin auf der Syno. Schau dass du mit phpAdmin dich anmelden kannst und mache dich etwas mit dem Handling vertraut.
2. Erstelle die DB und die Tabellen mit Hilfe der Scripte aus ./contrib/dblog bzw. mit Hilfe v. Wiki:
Melde dich auf der Syno im Linux an und rufe das Commandline-Tool für MySQL auf:
mysql -h <Syno-IP> --port=3307 -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 769
Server version: 10.0.30-MariaDB Source distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Jetzt kannst du folgende Beispielskripts ausführen und die DB mit Tabellen/Index erstellen:
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(64), UNIT varchar(32));
CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(64), UNIT varchar(32));
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';
CREATE INDEX Search_Idx ON `history` (DEVICE, READING, TIMESTAMP);
Willst du den Primary Key auf beiden Tabellen noch anlegen führst du aus:
ALTER TABLE `fhem`.`history` ADD PRIMARY KEY(TIMESTAMP, DEVICE, READING);
ALTER TABLE`fhem`. `current` ADD PRIMARY KEY (DEVICE, READING);
Dann hast du eine frische, leere Datanbank.
3. Erstelle dir auf dem FHEM-Rechner eine neue Konfig, z.b. maria10.conf und passe sie an. Installiere dir die benötigten MySQL-Perl-Dateien. In der neuesten 93_DbLog findest du mit "help 93_DbLog" gleich am Anfang die benötigten Angaben dazu.
4. Erstelle die ein weiteres/neues DbLog-Device und logge dir zunächst erstmal nur ein Device über die Angabe im Regex z.B.
define LogMaria DbLog ./maria10.conf (KS300):.*
5. Versuche damit "warm" zu werden und mit phpAdmin die Tabellen/Daten anzuschauen, SVGs zu erstellen, das Backup mit den Synology-Tools (oder DbRep) einzurichten, etc. Vielleicht auch mal ein Restore zu machen damit man einfach ein Gefühl für die DB und das Handling bekommt.
6. als nächsten Schritt kannst du die Daten nach und nach mit DbRep in die neue DB migrieren und das Logging erweitern, die SVGs umstellen.
Für diesen ganzen Umstellungsprozess auf die Syno würde ich dir aber empfehlen einen neuen Thread im Forum "Automatisierung" aufzumachen weil das nicht mehr zum Thema passt. Und ganz wichtig ... nicht verzagen ! Irgendwann platzt der Knoten und dann wirst du (vermutlich) Freude daran haben dass alles funktioniert :D
PS: Bitte testet die neue Version und gebt Feedback.
Grüße
Heiko
Moin Heiko
Vielen Dank fuer die ausfuehrliche Antwort. Ich hoffe ich habe heute noch Zeit das zu probieren.
Kurz noch zum Anlegen der DB mitphpadmin, wenn man eine neue DB anlegen will, dann soll man eine collation (?) auswaehlen, und da scheitere ich dann, da ich nicht weiss, was ich da von den wenigen Moeglichkeiten auswaehlen soll!
Kurz noch an Hans-Juergen, das mit den doppelten Eintraegen passiert in den dropdowns der SVGs und durch das Eintragen von den eventon... usw. wuerden es hoechstens weniger werden, aber sie wuerden nicht verschwinden.
Ich glaube ich habe beim erstenmal Erstellen irgendein Tutorial verwendet, wo warscheinlich die Keys schon implementiert waren!?
Gruss Christoph
Hallo Christoph,
Zitat..wenn man eine neue DB anlegen will, dann soll man eine collation (?) auswaehlen...
Nimm "utf8_bin", ist quasi der Standard.
Das ist dann gleichbedeutend mit dem Script:
Zitat
CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
...
Grüße
Heiko
Hallo Heiko
Danke, ich meinte das auch irgendwo gesehen zu haben, hatte aber gestern dann keine Lust mehr. Jetzt kommen ja ein paar freie Tage. Morgen kurz meinen Sohn nach Ilmenau verfrachten, und dann habe ich Zeit.
Gruss Christoph
ZitatMorgen kurz meinen Sohn nach Ilmenau verfrachten ...
Na dann grüß Ilmenau ... meinem alten Studienort :)
LG
Heiko
Hallo Heiko,
Prima Erklärung und gut Verständlich Geschrieben ganz Großes DANKE!
Vorweg Deine neue Version macht weiterhin Problemlos.
Warum ich so spät antworte....
Der Wechsel,Kampf mit Maria :-) auf meinem Raspberry3 hat sich bald 10 Stunden hingezogen.
Nix mit einfach nur apt-get install mariadb.
Upgrade auf jessie und und und,es fehlte immer irgendwas und Hauptproblem richtiger Eintrag in apt sources list für mariadb.
Wichtig dran zu denken erst als root die fhem Datenbank,Tabellen in MariaDB anzulegen, hatte erst versucht es Nutzer nun gut meine Dummheit.
PHPAdmin macht sich soweit auch ganz gut.
Jetzt geht es erstmal wieder auf Anfang in Punkto Feintuning Log Reduzierung.
Plots für Heizung etc. liefen ja soweit weiter und mussten nicht neu angelegt werden.
Alles Gute und Grüße
Hans-Jürgen
ZitatPrima Erklärung und gut Verständlich Geschrieben ganz Großes DANKE!
gerne :)
ZitatVorweg Deine neue Version macht weiterhin Problemlos.
sehr schön, danke für die Rückmeldung.
Dann checke ich die Version auch mal ein ...
Grüße
Heiko
Hallo Jungs
Die Ilmenau Reise war eigentlich problemlos, aber 3,5Stunden eine Richtung sind ja auch mal kein Pappenstiel.
BTW: Gruesse zurueck an Heiko.
Nun musste ich aber leider erst einmal andere Primaten setzen, da mein Geschirrspueler meinte, er duerfe mal eben nach 17 Jahren den Geist aufgeben.
Morgen geht es dann aber frisch ans Werk, und wenn Deckoffizier das geschafft hat, dann muss ich das auch hinbekommen!
Danke nochmals und schoenen Feiertag
Gruss Christoph
ZitatBTW: Gruesse zurueck an Heiko.
vielen Dank :D
ZitatMorgen geht es dann aber frisch ans Werk, und wenn Deckoffizier das geschafft hat, dann muss ich das auch hinbekommen!
Klar, kriegst du hin ! Wir lassen doch niemanden hängen :)
wünschen ebenfalls einen schönen Feiertag,
LG
Heiko
Moin
Ich antworte jetzt doch mal hier! Also eigentlich war ich ganz zuversichtlich, aber der letzte Schritt schlaegt fehl!
Error on reading ./maria.conf from database!
%dbconfig= (
connection => "mysql:database=fhem;host=192.168.178.200;port=3306",
user => "fhemuser",
password => "xxx",
utf8 => 1
);
Und nun stehe ich wieder an!
Gruss Christoph
P.S.: @Deckoffizier: Ich bin weiterhin bei wheezy, ein apt-get update hat die Paketverknuepfungen aktualisiert!
Hallo Christoph,
deine Fehlermeldung deutet darauf hin dass du configDB verwendest, richtig ?
In diesem Fall musst du deine erstellte maria.conf in die configDB laden. Das machst du mit
configdb fileimport ./maria.conf
Lese dir dazu mal die Hilfe durch -> "help configDB".
Doch bevor du das tust prüfe bitte nochmal den angegebenen Post 3306. Auf Synology hat MariaDB 5 den Port 3306 und MariaDB 10 den Port 3307. Ich weiß nun nicht welche Version du benutzt.
Du kannst auch wie ich weiter vorn geschreiben habe zunächst den Connect testen mit:
mysql -h <Syno-IP> --port=3307 -u root -p
Den Befehl kannst du so auch vom FHEM-Rechner aus starten und muss die Verbindung herstellen. Port und User natürlich anpassen, als User kannst du root bzw. deinen neu auf der DB angelegten "fhemuser" verwenden.
Grüße
Heiko
Hallo Heiko
Ja ich nutze config.db. Und der Port ist richtig, da meine Syno eine Xpeno ist und ich noch auf DSM5.2 bin!
Da ich zwischenzeitlich schon festgestellt hatte, Du hattest das ja schon geschrieben, dass ich mit
mysql -h <Syno-IP> --port=3307 -u root -p
die connection testen kann, habe ich schon eine exzessive Suche hinter mir. Es geht naemlich nicht. Nicht mal lokal, nur mit
mysql -h localhost --port=3307 -u root -p
Und dann auch nur mit dem user root!
Gruss Christoph
Man bin ich ein Vollpfosten
Wer lesen kann ist glasklar im Vorteil. Eine Connection geht natuerlich auch nur mit dem richtigen Port!
Jetzt geht erstmal alles. Jetzt muss nur noch was von der KS300 kommen!
Danke und Gruss
Christoph
Oooch, jetzt hatte ich schon soviel geschrieben ... ;)
Dann lösche ich es nicht und schreibe dir trotzdem....
Ich habe dir ein Screenshot anghängt. Gehe in phpMyAdmin in die Userverwaltung. Dort siehst du für die einzelnen User unter "Hostname" von welchem Host aus sie sich verbinden können. Das "%" steht für jeden Host.
Du kannst deinen User bzw. root editieren und bei Hostname "%" eintragen. So kannst du dich von überall her verbinden. Wenn alles klappt und du etwas mehr durchsteigst kannst du es wieder beschränken (Security)
ZitatJetzt muss nur noch was von der KS300 kommen!
Ja, jetzt kommt deine Regex im DbLog-DEF ins Spiel und dass dein KS300 die Events generiert die du loggen möchtest.
Klappt denn eigentlich meine neueste Version dass die doppelten Einträge im Dropdown bei der SVG-Erstellung auch bei dir ?
Ich möchte Vorschlagen, dass das Thema ins Board Automatisierung verschoben wird. Über eine Anfängerfrage sind wir weit hinaus. Im richtigen Board dürfte sie auch ein Suchender mit gleichem Problem finden :)
Zitat von: DS_Starter am 03 Oktober 2017, 17:02:14
Ja, jetzt kommt deine Regex im DbLog-DEF ins Spiel und dass dein KS300 die Events generiert die du loggen möchtest.
Klappt denn eigentlich meine neueste Version dass die doppelten Einträge im Dropdown bei der SVG-Erstellung auch bei dir ?
Upps
Sorry, ich war so mit der DB-Fummelei beschaeftigt, dass ich gar nicht mehr geguckt habe!
Da Du geschrieben hattest, dass Du eincheckst, habe ich DbLog einfach geupdated! Sieht aber auch sehr gut aus!
Gruss Christoph
Hallo Heiko
Irgendwas ist wohl nich faul!
2017.10.03 19:04:48 3: DbLog LogMaria -> Insert into history failed (possible PK violation) - TS: 2017-10-03 19:04:48, Device: nextion, Event: cmdSent: out_t.txt="12.4 °C"
2017.10.03 19:04:48 3: DbLog LogMaria -> Insert into history failed (possible PK violation) - TS: 2017-10-03 19:04:48, Device: nextion, Event: cmdResult: empty
2017.10.03 19:07:21 3: DbLog LogMaria -> Insert into history failed (possible PK violation) - TS: 2017-10-03 19:07:21, Device: nextion, Event: cmdSent: out_t.txt="12.3 °C"
2017.10.03 19:07:21 3: DbLog LogMaria -> Insert into history failed (possible PK violation) - TS: 2017-10-03 19:07:21, Device: nextion, Event: cmdResult: empty
2017.10.03 19:12:27 3: DbLog LogMaria -> Insert into history failed (possible PK violation) - TS: 2017-10-03 19:12:27, Device: nextion, Event: cmdSent: out_ws.txt="3.6 m/s"
2017.10.03 19:12:27 3: DbLog LogMaria -> Insert into history failed (possible PK violation) - TS: 2017-10-03 19:12:27, Device: nextion, Event: cmdResult: empty
Im Async-mode kann ich sie auch nicht betreiben, dann geht der state verloren, bzw sieht, reproduzierbar, so aus:
state
��y�h�{�ׯz{l�{h�+-���y�h���
2017-10-03 19:21:20
Gruss Christoph
ZitatIrgendwas ist wohl nich faul!
Nicht unbedingt, bzw. glaube ich nicht.
Wenn du einen primary key gesetzt hast, sind das Meldungen wenn doppelte Einträge vermieden wurden, deswegen auch "(possible PK violation)".
Schau doch mal mit dem phpAdmin in die history ob die Einträge reinpurzeln.
verbose 2 ist hier dein Freund.
ZitatIm Async-mode kann ich sie auch nicht betreiben, dann geht der state verloren, bzw sieht, reproduzierbar, so aus:
Das hat mit async nichts zu tun. Manchmal habe ich diese Anzeige auch, sie beeinlusst das Logging jedoch nicht und verschwindet bei einem nächsten Synclauf -> Browserrefresh hilft auch. Vielleicht bekome ich noch raus wann der Inhalt von state so erscheint Es wird ja nur ein status dort ausgegeben.
Mach mal ein Screenshot deiner history mit phpMyAdmin oder auch ein "set .... fetchrows" in deinem DbRep-Device sofern du es schon an dein neues DbLog-Device angeschlossen hast.
Hallo Heiko
Das hatte ich auch schon bemerkt, sieht nur sehr komisch aus! Was genau moechtest Du sehen? Ich fuelle schon wieder fleissig! Gleichzeitig exclude ich das was ich gar nicht brauche, und loesche das in der DB.
Dabei ist mir aufgefallen, dass dieser KS300 in der alten DB immer noch nicht wieder aufgetaucht ist, neu ist er aber schon da.
Und eine Frage habe ich noch, die Gplot-files sind die auch in der config-DB? Weil ich finde die gar nicht. Die sind alle eher Asbach-Uralt, sofern vorhanden.
Gruss Christoph
Hi Christoph,
der Blick in die history sollte nur dazu dienen sicher zu sein dass alles funktioniert, sieht aber nach deinen Worten so aus. :)
ZitatUnd eine Frage habe ich noch, die Gplot-files sind die auch in der config-DB?
Ich denke ja, allerdings bin ich bei Fragen zur configDB nicht unbedingt der kompetente Ansprechpartner weil ich mich damit noch nicht auseinandergesetzt habe bzw. configDB momentan auch nicht einsetze.
Betateilchen ist der Maintainer und im Forum "Sonstiges" wären Fragen zur configDB richtig platziert.
LG
Heiko
Hallo Heiko
Ja ist alles so weit gut. Danke noch mal fuer Deine tolle Unterstuetzung. Na dann werde ich Udo mal aufwecken. Am liebsten wuerde ich die config.db auch aufs NAS verbannen.
Gruss Christoph
gerne :) , und gerne wieder ...
Moin
Ich hatte den Post fuer die configDB schon fast fertig. Da habe ich mir gedacht, lies doch mal vorsichtshalber die commandref, bevor Du dir das eh wieder anhoeren musst. Und ja da steht alles drin. Und ich muss sagen, das hat Udo wirklich genial gemacht! Man kann jedes file wieder zurueckholen, bearbeiten und wieder reinkopieren.
Gruss Christoph
Moin Christoph,
commandref lesen ist immer eine gute Idee ;)
Nebenbei, die Entwickler geben sich viel Mühe bei der Erstellung und das frist auch jede Menge Zeit.
LG
Heiko
wollte mich hier mal kurz einklinken...
Habe demnächst auch vor von FileLog auf DBLog umzusteigen.
Ich habe allerdings meine NAS-Freigabe (bisher Ablage für FHEM-Backup) per autofs eingebunden.
Wäre es dadurch problematisch die DB(MariaDB10) auf der NAS-Freigabe abzulegen?
Danke.
Hallo Steffen
warum so kompliziert und fehleranfällig ?
Wenn dein NAS (welches?) die MariaDB betreiben kann, dann nutze die Power der Maschine.
FHEM bzw. DbLog ist dann nur der Client der die Daten an den Server überträgt bzw. von ihm abruft.
So hat es Christoph jetzt auch umgesetzt.
Wenn du es so machst wie von dir geschrieben würde der Maria-Server auf dem fhem-Rechner laufen und die DB-Files auf dem Share ablegen. Zumindest habe ich es so verstanden. Das würde ich nicht tun weil Ärger vorprogrammiert ist und noch dazu unnötig.
LG
Heiko
Hallo Steffen
Ich kann Heiko da nur zustimmen. Das war auch der Grund warum ich urspruenglich SQLite genommen hatte. Die Performance des RPI moeglichst nicht fuer diese Aufgabe zu schmaelern. Das das Handling der SQLite-DB eher bloed ist hat mich zum Umstieg bewogen. Und mit Heikos Top-Anleitung, hier, wie auch im Wiki, ist das ein Klacks! Wenn man denn lesen kann und will!
Gruss Christoph
Hallo Christoph, Hallo Heiko,
danke für eure schnelle Antwort!
Vlt. habe ich da auch was nicht richtig verstanden oder durcheinander gebracht.
Meine Idee war schon die DB auf dem NAS(Synology DS211j) abzulegen und dachte diese müsste in einem Freigabe-Ordner liegen der dann von FHEM erreichbar ist (der bei mir per autofs eingebunden wäre).
Tatsächlich ist es wohl eher so dass ich:
- die Pakete MariaDB und phpMyadmin installiere und damit die DB auf dem NAS anlege.
- Dann eine config zb. opt/fhem/maria10.conf anlegen und konfigurieren
- wo gebe ich "help 93_DbLog" ein um die nötigen MySQL-Perl-Dateien zu finden? (apt-get update && apt-get install mysql-server mysql-client libdbd-mysql libdbd-mysql-perl) ???
- dann in FHEM mit define LogMaria DbLog ./maria10.conf .*:.* ein Device anlegen und los gehts :)
Der Zugriff läuft dann einfach über die Config-Datei sehe ich das richtig unabhängig von meinen Freigaben auf dem NAS?
Hallo Steffen
Du hast das alles richtig verstanden. Das mit dem help kann man wohl oben in die Zeile eingeben. Es geht aber auch ueber die Commandref, bzw. ueber devicespecific help. Letzteres setzt natuerlich ein angelegtes device voraus!
Gruss Christoph
Hallo Steffen,
apt-get install mysql-server
brauchst du nicht. Der Maria-Server läuft ja auf der Syno.
Grüsse
Heiko
Danke Männer!
Leider komme ich gerade nicht an mein NAS um es zu testen >:(
Weboberfläche hat nach der Installation von MariaDB10 und dem phpMyAdmin nicht mehr reagiert. Auch den Ausschaltknopf hat er komplett ignoriert. Aktivitäten waren aber keine.
Nach ein paar Stunden habe ich das Ding dann mal vom Strom getrennt und nun komme ich genauso wenig wieder dran da volle Aktivität. (vermutlich gleicht er jetzt die 2 Platten ab)
Wollte mich per SSH mit ssh <benutzername>@<ip-adresse>
einloggen aber ich bekomme nur "connection refused" zurück.
Vermute der Dienst ist nicht aktiv, sonst hätte ich mit "top" die Prozesse ansehen können.
Heißt wohl abwarten ???
jemand eine Idee warum das nicht funktioniert? :o
pi@raspberrypi:/opt/fhem $ sudo apt-get update && apt-get install mysql-client libdbd-mysql libdbd-mysql-perl
Hit http://mirrordirector.raspbian.org jessie InRelease
Hit https://deb.nodesource.com jessie InRelease
Hit http://mirrordirector.raspbian.org jessie/main armhf Packages
Hit http://mirrordirector.raspbian.org jessie/contrib armhf Packages
Hit https://deb.nodesource.com jessie/main Sources
Hit http://mirrordirector.raspbian.org jessie/non-free armhf Packages
Hit https://deb.nodesource.com jessie/main armhf Packages
Hit http://mirrordirector.raspbian.org jessie/rpi armhf Packages
Get:1 https://deb.nodesource.com jessie/main Translation-en_GB [162 B]
Get:2 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:3 https://deb.nodesource.com jessie/main Translation-en_GB [162 B]
Get:4 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:5 https://deb.nodesource.com jessie/main Translation-en_GB [162 B]
Get:6 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:7 https://deb.nodesource.com jessie/main Translation-en_GB [162 B]
Get:8 https://deb.nodesource.com jessie/main Translation-en [162 B]
Get:9 https://deb.nodesource.com jessie/main Translation-en_GB [162 B]
Ign https://deb.nodesource.com jessie/main Translation-en_GB
Get:10 https://deb.nodesource.com jessie/main Translation-en [162 B]
Ign https://deb.nodesource.com jessie/main Translation-en
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en_GB
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en
Ign http://mirrordirector.raspbian.org jessie/main Translation-en_GB
Ign http://mirrordirector.raspbian.org jessie/main Translation-en
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en_GB
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en_GB
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en
Reading package lists... Done
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
pi@raspberrypi:/opt/fhem $
Jop fehlt nach && im Befehl noch ein sudo
Oh man ja. Danke ;)
Bekomme von FHEM die Meldung:
2017.10.09 18:15:10 3: DbLog dbLogMaria -> Insert into history failed (possible PK violation) - TS: 2017-10-09 18:15:10, Device: dbLogMaria, Event: state: Failed to insert events into history. See logfile
Es werden aber schon Zeilen in die DB geschrieben. ???
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 dbLogMaria is: asynchronous
Recommendation: settings o.k.
Result of table 'history' check
Column width set in DB fhem: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Column width used by dbLogMaria: '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: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Column width used by dbLogMaria: '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 the recommended fields 'DEVICE', 'READING', 'TIMESTAMP'.
Recommendation: settings o.k.
Result of check 'Report_Idx' availability for DbRep-devices
You don't use any DbRep-device assigned to dbLogMaria. Hence an index for DbRep isn't needed.
Recommendation: settings o.k.
Internals:
CFGFN
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION ./maria10.conf
DEF ./maria10.conf .*:.*
MODE asynchronous
MODEL MYSQL
NAME dbLogMaria
NR 329
NTFY_ORDER 50-dbLogMaria
PID 13749
REGEXP .*:.*
STATE ��y�h�{�ׯz{l�{h�+-���y�h���
TYPE DbLog
UTF8 1
VERSION 2.22.5
dbconn mysql:database=fhem;host=192.168.1.120;port=3307
dbuser fhem
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
READINGCOL 64
TYPECOL 64
UNITCOL 32
VALUECOL 128
Helper:
DBLOG:
state:
dbLogMaria:
TIME 1507566782.17594
VALUE ��y�h�{�ׯz{l�{h�+-���y�h���
READINGS:
2017-10-09 18:33:17 CacheUsage 11
2017-10-09 18:33:01 NextSync 2017-10-09 18:33:31 or if CacheUsage 500 reached
2017-10-09 18:33:02 state ��y�h�{�ׯz{l�{h�+-���y�h���
cache:
index 354
memcache:
344 2017-10-09 18:33:02|dbLogMaria|DBLOG|state: ��y�h�{�ׯz{l�{h�+-���y�h���|state|��y�h�{�ׯz{l�{h�+-���y�h���|
345 2017-10-09 18:33:16|p_TV1Wifi|PRESENCE|state: absent|state|absent|
346 2017-10-09 18:33:16|p_TV1Wifi|PRESENCE|presence: absent|presence|absent|
347 2017-10-09 18:33:16|wz_tv1_poweroff|DUMMY|state: $EVTPART1|state|$EVTPART1|
348 2017-10-09 18:33:16|wz_tv1_poweroff|DUMMY|state: absent|state|absent|
349 2017-10-09 18:33:16|wz_tv1_poweroff|DUMMY|state: $EVTPART1|state|$EVTPART1|
350 2017-10-09 18:33:16|wz_tv1_poweroff|DUMMY|state: absent|state|absent|
351 2017-10-09 18:33:16|TV_Status|READINGSPROXY|absent|state|absent|
352 2017-10-09 18:33:16|TV1|PRESENCE|state: absent|state|absent|
353 2017-10-09 18:33:16|TV1|PRESENCE|presence: absent|presence|absent|
354 2017-10-09 18:33:17|updateAVRTitel|AT|state: Next: 18:33:47|state|Next|18:33:47
Attributes:
asyncMode 1
group SystemInfo
room zzSystem
Hallo Steffen,
passt alles soweit.
Zitat2017.10.09 18:15:10 3: DbLog dbLogMaria -> Insert into history failed (possible PK violation) - TS: 2017-10-09 18:15:10, Device: dbLogMaria, Event: state: Failed to insert events into history. See logfile
Die Meldung kommt wenn durch einen primary key ein doppelter Eintrag vermieden wurde.-> verbose2 einstellen.
Zusätzlich noch das Attribut "excludeDevs = TYPE=DbLog" setzen um zu vermeiden das Events von DbLog Devices selbst geloggt werden (wenn im DEF-Regex nicht ausgeschlossen).
Kannst auch gleich noch die neue Version aus: https://forum.fhem.de/index.php/topic,65860.msg695860.html#msg695860 nutzen. Die will ich heute noch einchecken.
LG
Heiko
Danke Heiko. Werde das jetzt mal verfolgen.
Bekomme auf der Hauptseite von FHEM nun die Meldung seitdem, kann das sein?
Habe sonst nichts geändert.
Messages collected while initializing FHEM:
configfile: global: unknown attribute icon. Type 'attr global ?' for a detailed list.
telnetPort: unknown attribute icon. Type 'attr telnetPort ?' for a detailed list.
Hallo Steffen,
nee, kann nichts damit zu tun haben.
So wie es dasteht ist wohl ein icon für das global device gesetzt was global offensichtlich nicht mag.
Probiers mal ohne icon.
VG
Heiko
Habe ich wieder entfernt. Danke jetzt passt es.
mal ne Frage, um die Logs etwas zurückzuhalten würde ich gerne:
event-on-change-reading .*
setzen...kann ich dann auch:
event-min-interval .*:3600
setzen für alle readings(wenn nicht nur state sondern auch humidity usw bestehen) ?
Moin zusammen
Kann es sein, dass ich jetzt irgendwie Haenger habe? Ich hatte erst gedacht, es laege an den 2 DBs, aber die alte ist schon deaktiviert. Im Log ist staendig die "possible PK violation" zu sehen. Kann das jemand bestaetigen, oder habe ich ein anderes Problem?
Danke und Gruss
Christoph
Hallo Christoph,
wenn du einen primary key gesetzt hast und irgendein zu loggendes device innerhalb einer Sekunde zwei oder mehrere Events erzeugt die den primary key erfüllen, kommt dieses Warnung. Der primary key erfüllt dadurch seine Funktion doppelte Einträge in die DB zu vermeiden.
Es wird der entsprechende Event mit Timestamp, Reading usw. im Logfile ausgeschrieben. Dieser Event mit dem gleichen Timestamp wird sich in diesem Fall in der DB finden. Kannst du mit phpMyAdmin ja mal nachschauen.
Stelle verbose 2 für das Dblog-Device ein, dann ist diese Warnung weg.
Grüße
Heiko
Hallo Heiko
Das Problem ist eher, dass fhem Haenger hat. Ich hatte schon mit apptime und perfmon geschaut, aber nichts wirklich gefunden! Es gibt aber neuerdings immer so seltsame Wellen, wo alles rasend schnell laeuft, und dann sogar timout Meldungen (cannot connect ..). Und die sind neu, allerdings kann ich nicht sagen womit die gekommen sind. Ich koennte aber mal probehalber dblog auf meinem Zweitsystem installieren.
Ich verstehe jetzt nicht, welche Events ich in der DB finden soll. Das sieht schon recht sauber aus, insgesamt. Ich habe in letzter Zeit sehr viel excluded!
Gruss Christoph
Moin Christoph,
ZitatDas Problem ist eher, dass fhem Haenger hat. Ich hatte schon mit apptime und perfmon geschaut, aber nichts wirklich gefunden!
Möglicherweise liegt das Problem nicht direkt innerhalb FHEM, sondern vllt. außerhalb. Ein verzögerte DNS-Auflösung zum Beispiel.
Die "cannot connect .." Meldungen machen mich stutzig. Hast du als MySql-Ziel einen Servernamen oder eine IP-Adresse angegeben? Ich würde eine IP verwenden wenn es nicht schon so ist. DbLog auf jeden Fall im asynchronen Mode betreiben wenn noch nicht geschehen.
Noch ein kleiner Tipp ins blaue... wenn du das globale Attribut "dnsServer" noch nicht kennst. Hier kannst du die IP deines DNS im Netz hinterlegen und eventuellen DNS-Problemen vorbeugen.
Ein paar Logauszüge wären evtl. hilfreich.
Grüße
Heiko
Hallo Heiko
Ich habe definitiv keine Netzwerkprobleme!(Ausser mein Sohn steckt zwei Netzwerkkabelenden in den gleichen "Switch". Dann kann man sogar nicht mehr Fernsehen!)
Das "connot cennect..." steht oben links im Browser wenn fhem nicht erreicht werden kann. Und das passiert immer wieder mal sporadisch aber wiederkehrend. Teilweise ist fhem gefuehlt doppelt so schnell, und dann hakt es fuer ein paar Sekunden(?). Einmal habe ich halt im Log direkt nachgesehen und da waren halt die PK Eintraege markant. Da ich krank zu Hause bin, werde ich mal ein paar Versuche machen, und eventuell dann ein Log posten.
Danke soweit
Christoph
Hallo
Eventuell habe ich gestern bereits das Problem beseitigt gehabt!? Ich hatte meine ganzen Plots noch mit CURRENT definiert, und da das im Log angemeckert wurde, habe ich die gestern umgestellt. Jetzt habe ich eben gerade noch meine beiden VU+ Zero neu angelegt, da die alle 45 Sekunden was ins Log geschmissen haben, und jetzt ist mein Log erstmal stumm.
Jetzt schaue ich mal ob die Haenger auch weg sind.
Gruss Christoph