DB-Log und SVG-plot

Begonnen von pc1246, 28 September 2017, 08:39:16

Vorheriges Thema - Nächstes Thema

pc1246

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
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Wzut

#1
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 ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

pc1246

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
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Wzut

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
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

pc1246

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
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Wzut

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
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

pc1246

Hallo
Ja mache ich nachher, wenn ich zu Hause bin, und sturmfreie Bude habe. Mit Handy ist das Mist!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Deckoffizier

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
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

pc1246

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
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

pc1246

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
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Deckoffizier

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



FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

andies

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/

Und danach wieder Datenimport mysql.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

DS_Starter

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
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

pc1246

#13
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!
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Deckoffizier

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
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus