[Aufruf] Dringender Test sql 1.6.4

Bitter aller die testen können, hier melden.
Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 17.02.2018, 17:13

Hallo,

wenn man den sql-Adapter neu startet, dann kommt, wenn bis dahin kein Datenpunkt geschrieben wurde immer:

Code: Alles auswählen

Please wait till next data record is logged and reload.
Geht man im Browser auf reload, dann sind die Daten sofort da.
Das gleiche glit auch für float Grafiken. Zuerst leer, wenn einmal geschrieben (irgendwin Datenpunkt von den vielen angezeigten)
oder reload über Browser, dann ist wieder alles da.

Ist das bei euch auch so?

PS: 1.7.1
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 17.02.2018, 17:17

Hallo,

was sollen mir die Infos sagen:

Code: Alles auswählen

sql.0	2018-02-17 17:15:43.140	info	init timed Relog: disable relog because state not set so far for hm-rpc.0.MEQ0381249.0.AES_KEY: null
sql.0	2018-02-17 17:15:42.070	info	init timed Relog: disable relog because state not set so far for hm-rpc.1.CUX9104011.2.STATE: null
sql.0	2018-02-17 17:15:31.123	info	init timed Relog: disable relog because state not set so far for hm-rpc.1.CUX2801001.1.STATE: null
sql.0	2018-02-17 17:15:17.958	info	init timed Relog: disable relog because state not set so far for hm-rpc.1.CUX9104010.4.STATE: null
sql.0	2018-02-17 17:15:16.586	info	init timed Relog: disable relog because state not set so far for hm-rpc.0.MEQ0381127.0.AES_KEY: null
sql.0	2018-02-17 17:15:12.178	info	init timed Relog: disable relog because state not set so far for hm-rpc.1.CUX4000001.11.PRESS_SHORT: null
sql.0	2018-02-17 17:15:12.023	info	init timed Relog: disable relog because state not set so far for hm-rpc.1.CUX9104007.2.STATE: null
sql.0	2018-02-17 17:15:10.461	error	Please wait till next data record is logged and reload.
sql.0	2018-02-17 17:15:10.460	warn	For getHistory for id tankerkoenig.0.stations.9.diesel.feed: Type empty. Need to write data first. Index = undefined
sql.0	2018-02-17 17:15:10.460	error	Please wait till next data record is logged and reload.
sql.0	2018-02-17 17:15:10.460	warn	For getHistory for id tankerkoenig.0.stations.6.diesel.feed: Type empty. Need to write data first. Index = undefined
sql.0	2018-02-17 17:15:10.460	error	Please wait till next data record is logged and reload.
sql.0	2018-02-17 17:15:10.460	warn	For getHistory for id tankerkoenig.0.stations.5.diesel.feed: Type empty. Need to write data first. Index = undefined
sql.0	2018-02-17 17:15:10.460	error	Please wait till next data record is logged and reload.
sql.0	2018-02-17 17:15:10.460	warn	For getHistory for id tankerkoenig.0.stations.2.diesel.feed: Type empty. Need to write data first. Index = undefined
sql.0	2018-02-17 17:15:10.460	error	Please wait till next data record is logged and reload.
sql.0	2018-02-17 17:15:10.460	warn	For getHistory for id tankerkoenig.0.stations.1.diesel.feed: Type empty. Need to write data first. Index = undefined
sql.0	2018-02-17 17:15:10.460	error	Please wait till next data record is logged and reload.
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
apollon77
guru
Beiträge: 5232
Registriert: 10.04.2015, 12:27

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von apollon77 » 17.02.2018, 21:20

Die Meldungen sagen folgendes:
Wenn Du für einen Datenpunkt das "gleiche Werte loggen nach x Sekunden" einschaltest verssucht der Adapter das auch zu tun wenn innerhalb der Zeit kein neuer Wert kam. Er sucht dann im Zweifel dafür den zuletzt gespeicherten Wert raus.
Wenn es aber keinen gibt - und bei einigen HM-States kann das durchaus passieren - und damit keinerlei "State-Wert" existiert dann kann er auch nichts loggen (NULL loggen macht da keinen Sinn weil es kein echter Wert wäre). Aus dem Grund wird das zeitliche "gleicher Wert loggen" temporär ausgeschaltet. Genau das sagt die Meldung.

Falls für so einen State ein neuer Wert käme dann würde ab dann automatisch das "gleiche Werte loggen" wieder eingeschaltet werden.

Zu der Frage wegen:

Code: Alles auswählen

For getHistory for id tankerkoenig.0.stations.9.diesel.feed: Type empty. Need to write data first. Index = undefined
Wenn das direkt nach dem Start des Adapters passiert, so kann es sein das deine Grafiken "zu schnell" waren.
Beim Start des Adapters wird nach dem Verbindung und "Initialisierung" der Datenbanktabellen alle Datenpunkte, typen und Indizes ausgelesen und gespeichert. Ein "Index=undefined" wie in der Meldung oben könnte darauf hinweisen das die History-Daten abgefragt wurden BEVOR die Daten gelesen wurden. Das würde solche meldungen direkt nach dem Start erklären.
Ich könnte jetzt was einbauen was das im Zweifel behebt und auch das bei getHistory vorher rausliesst ... Nötig? :-)
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel

Benutzeravatar
ruhr70
guru
Beiträge: 2264
Registriert: 24.02.2015, 19:40

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von ruhr70 » 18.02.2018, 04:20

Ich hab auch noch ein kleines Problem mit dem SQL Adapter 1.6.9.

Situation:

- Javascript: DP über Skript angelegt
- Monitoring eingeschaltet -> SQL
- Monitoring deaktiviert und dann den Datenpunkt gelöscht
- neuen DP (Name geändert) über Skript angelegt
- Monitoring aktiviert

Nun wird das Log mit Errors vollgeschrieben, Beispiel:

Code: Alles auswählen

ql.0	2018-02-18 04:13:23.408	error	Cannot insert INSERT INTO `iobrokerng2`.ts_string (id, ts, val, ack, _from, q) VALUES(875, 1518923603385, 'CALL 2 Free', 0, 11, 0);: Error: ER_DUP_ENTRY: Duplicate entry '875-1518923603385' for key primary'
Beim überfliegen der Fehlermeldungen würde ich sagen, es handelt sich durchgängig um die Duplicate entry Meldungen.

Ich sehe den Zusammenhang zwar noch nicht. Kann es sein, dass die Zeit zwischen "Logging deaktivieren" und in den Objekten den Datenpunkt per Hand löschen, zu kurz war?
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
apollon77
guru
Beiträge: 5232
Registriert: 10.04.2015, 12:27

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von apollon77 » 18.02.2018, 07:46

Hm, wüsste nicht wie das zu „duplicate key“ führen sollte. Das ist an sich eher das zum gleichen zeitstempel schon ein wert in der dB existiert.

Starte mal sql Adapter neu dann sollten pot Probleme vom manuellen löschen weg sein.
Wenn immer noch duplicate key dann bräuchte ich Debug log.
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 18.02.2018, 14:23

apollon77 hat geschrieben:Die Meldungen sagen folgendes:
Wenn Du für einen Datenpunkt das "gleiche Werte loggen nach x Sekunden" einschaltest verssucht der Adapter das auch zu tun wenn innerhalb der Zeit kein neuer Wert kam. Er sucht dann im Zweifel dafür den zuletzt gespeicherten Wert raus.
Wenn es aber keinen gibt - und bei einigen HM-States kann das durchaus passieren - und damit keinerlei "State-Wert" existiert dann kann er auch nichts loggen (NULL loggen macht da keinen Sinn weil es kein echter Wert wäre). Aus dem Grund wird das zeitliche "gleicher Wert loggen" temporär ausgeschaltet. Genau das sagt die Meldung.

Falls für so einen State ein neuer Wert käme dann würde ab dann automatisch das "gleiche Werte loggen" wieder eingeschaltet werden.

Zu der Frage wegen:

Code: Alles auswählen

For getHistory for id tankerkoenig.0.stations.9.diesel.feed: Type empty. Need to write data first. Index = undefined
Wenn das direkt nach dem Start des Adapters passiert, so kann es sein das deine Grafiken "zu schnell" waren.
Beim Start des Adapters wird nach dem Verbindung und "Initialisierung" der Datenbanktabellen alle Datenpunkte, typen und Indizes ausgelesen und gespeichert. Ein "Index=undefined" wie in der Meldung oben könnte darauf hinweisen das die History-Daten abgefragt wurden BEVOR die Daten gelesen wurden. Das würde solche meldungen direkt nach dem Start erklären.
Ich könnte jetzt was einbauen was das im Zweifel behebt und auch das bei getHistory vorher rausliesst ... Nötig? :-)
Hallo,
nein. Ich habe jetzt die Punkt ausgenommen vom "gleicher Wert loggen"
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 18.02.2018, 17:36

Hallo.

immer noch Duplicate Keys:

Code: Alles auswählen

<li>2018-02-18 14:42:19 Alarmstatus: im Haus/Lüften</li>
<li>2018-02-18 12:26:32 Alarmstatus: OFF</li>
<li>2018-02-15 21:41:40 Alarmstatus: Haus alles gesichert</li>
Das Ereignis wird einmal in eine Variable geschrieben (siehe manuelles Protokoll), aber:
sql12.JPG
In der Datenbank wird es 3x geschrieben:
sql11.JPG
Was mich wundert ist, das er so lange braucht, bis er in die DB Schreibt.
Und warum er überhaupt doppelt schreibt,
a) ist entprellen auf 1 Sekunde gesetzt.
b) sollen nur Änderungen geschrieben werden
sql13.JPG
Wie ist denn der Ablauf des SQL-Adapters?

Beim starten sollte er sich alle Werte für Datenpunkte + ts aus der DB holen. -> Wertecache
Bei jeder Änderung sollte er
Das muss Atomar sein:
a) prüfen ob aktueller ts - Entprell-Intervall > letzter ts
b) prüfen ob aktueller Wert <> alter Wert aus DB (bei nur Änderungen)
c) Wenn er denn schreiben möchte, dann Cache aktualisieren
Jetzt kann parallelisiert werden
d) schreiben
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
apollon77
guru
Beiträge: 5232
Registriert: 10.04.2015, 12:27

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von apollon77 » 18.02.2018, 23:19

Um die Duplicates zu verstehen bräuchte ich Debug Log bitte.

Die genaue Logik zu beschreiben ist sehr umfangreich. Ganz grob (ohne spezielle Startlogik):
Sämtliche Abarbeitung ist atomar weil nur ein Prozess läuft. Alles asynchrone bei JS wird am Ende auch nur sequenziell abgearbeitet.

- Werteänderung kommt rein
- prüfen ob je nach einstellungen geloggt werden soll oder nicht (vergleich mit letztem geloggten Wert)
- Wenn nein, geskippten Wert intern zusätzlich sichern
- Wenn ja, Wert sichern und diesen als Referenzwert speichern

Wie die Duplicates zustandekommen weiss ich gerade nicht. Ich finde in deinem Screenshot nur nteressant das der timestamp in der Query und die in der Fehlermeldung unterschiedlich sind.
Ich weiss aber das es sonderlogik für "Duplicates" gibt die das ganze mit +1ms Timestamp nochmals schreibt. Die ist schon ewig drin ...

Ingo
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel

Benutzeravatar
ruhr70
guru
Beiträge: 2264
Registriert: 24.02.2015, 19:40

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von ruhr70 » 19.02.2018, 06:19

apollon77 hat geschrieben:Hm, wüsste nicht wie das zu „duplicate key“ führen sollte. Das ist an sich eher das zum gleichen zeitstempel schon ein wert in der dB existiert.
Starte mal sql Adapter neu dann sollten pot Probleme vom manuellen löschen weg sein.
Nach einem Neustart des SQL-Adapters sind die Meldungen weg.
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 20.02.2018, 08:21

apollon77 hat geschrieben:Um die Duplicates zu verstehen bräuchte ich Debug Log bitte

Ingo
Hallo,

Leider tritt der Fehler nur sporadisch auf und der SQL-Adapter schreibt im debug solche Massen an Logdaten, dass ich den nicht für längere Zeit aktivieren möchte.
Es ist scheinbar meistens eine Datenpunkt der vom JavaScript-Adapter ausgelöst/geschrieben wird.
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
apollon77
guru
Beiträge: 5232
Registriert: 10.04.2015, 12:27

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von apollon77 » 20.02.2018, 08:45

Hm ... dann ist es echt schwierig dem auf die Spur zu kommen ... :-(
Ist es immer der gleiche Datenpunkt?
Wenn ja vllt zweite ssql-Instanz in Debug Log aufsetzen in zweite DB schreiben und nur wenige Datenpunkte dort aktivieren (die halt wo sowas passiert). Ich kann es aktuell nicht nachvollziehen. Ich brauche aber die Info was passiert wenn es das erste mal passiert
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 24.02.2018, 08:51

apollon77 hat geschrieben:Hm ... dann ist es echt schwierig dem auf die Spur zu kommen ... :-(
Ist es immer der gleiche Datenpunkt?
Wenn ja vllt zweite ssql-Instanz in Debug Log aufsetzen in zweite DB schreiben und nur wenige Datenpunkte dort aktivieren (die halt wo sowas passiert). Ich kann es aktuell nicht nachvollziehen. Ich brauche aber die Info was passiert wenn es das erste mal passiert
War die Woche auf Dienstreise, werde das mal ausprobieren. Habe ja noch einen 2. Server der die DB schon installiert hat und vor sich hinläuft.
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 17.03.2018, 12:12

sql14.JPG
sql14.JPG (101.62 KiB) 313 mal betrachtet
Wie verhext. Reload im Browser und die Daten sind da.

Ist das vlt. ein Timeout?
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
apollon77
guru
Beiträge: 5232
Registriert: 10.04.2015, 12:27

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von apollon77 » 17.03.2018, 13:21

welche sql.Adapter Version? Ehrlich noch die 1.6.4?
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 17.03.2018, 17:26

sissiwup hat geschrieben:sql14.JPG

Wie verhext. Reload im Browser und die Daten sind da.

Ist das vlt. ein Timeout?
1.7.1
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
apollon77
guru
Beiträge: 5232
Registriert: 10.04.2015, 12:27

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von apollon77 » 17.03.2018, 22:38

Hm ... wann vorher neu gestartet?
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 18.03.2018, 09:04

apollon77 hat geschrieben:Hm ... wann vorher neu gestartet?
Jede Nacht um 4:00.

Ist aber der erste Aufruf von vis.
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
sissiwup
professional
Beiträge: 501
Registriert: 27.07.2015, 11:53

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von sissiwup » 22.03.2018, 11:33

Folgendes Script:

Code: Alles auswählen

setState("vEreignissAkt","------------ NEUSTART ------------");
führt beim Neustart zu:

Code: Alles auswählen

 error: sql.0 Cannot insert INSERT INTO `iobroker`.ts_string (id, ts, val, ack, _from, q) VALUES(1617, 1521256587638, '------------ NEUSTART ------------', 0, 13, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1617-1521256587638' for key 'PRIMARY'
2018-03-17 04:16:28	
 error: sql.0 Cannot insert INSERT INTO `iobroker`.ts_string (id, ts, val, ack, _from, q) VALUES(1617, 1521256587637, '------------ NEUSTART ------------', 0, 13, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1617-1521256587637' for key 'PRIMARY'
 error: sql.0 Cannot insert INSERT INTO `iobroker`.ts_string (id, ts, val, ack, _from, q) VALUES(1617, 1521256587638, '------------ NEUSTART ------------', 0, 13, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1617-1521256587638' for key 'PRIMARY'
 error: sql.0 Cannot insert INSERT INTO `iobroker`.ts_string (id, ts, val, ack, _from, q) VALUES(1617, 1521256587637, '------------ NEUSTART ------------', 0, 13, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1617-1521256587637' for key 'PRIMARY'
Das sieht so aus als würde er beim Neustart das Skript 2x starten?
Alle anderen Datenpunkte mit den duplicates sind auch aus ähnlichen Aktion.
Meistens ist der Datenpunkt aus dem yr.0 Adapter: yr.0.forecast.day0.pressure
MfG

Sissi

-------------------------------------------
1 CCU2 1 LanGateway 1 Pi-Gateway 1 Zoatec AD02 für ioBroker/MySQL
--------------------------------------------

Benutzeravatar
apollon77
guru
Beiträge: 5232
Registriert: 10.04.2015, 12:27

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von apollon77 » 22.03.2018, 12:01

Debug Log?
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel

Benutzeravatar
foxriver76
professional
Beiträge: 108
Registriert: 11.03.2018, 12:22

Re: [Aufruf] Dringender Test sql 1.6.4

Beitrag von foxriver76 » 24.03.2018, 14:41

Habe auch mal eine Frage. Nutze den Adapter jetzt entsprechend mittels SQLite - läuft auch soweit. :) Nur beim Neustart loggt er mir haufenweise

Code: Alles auswählen

Cannot queue new requests, because more than 100
Ich schätze mal, dass er den alten Status nicht mehr kennt und versucht sämtliche abonnierte DPs auf ein mal in die DB zu schreiben, was die SQLite DB überfordert? Kann ich dem irgendwie entgegenwirken?

beste Grüße

fox
Adapter:
DENON/Marantz AVR - Support | GitHub

Antworten