NEWS
[Aufrug] sql 1.7.0 testen
-
Hi,
nachdem es bei der 1.6.x einige Diskussionen um das "NULL Werte bei Start/Ende zur Abgrenzen der geloggten Werte" gab habe ich es in der 1.7.0 konfigurierbar gemacht. Standard ist "ja". Ist über Adapterkonfiguration änderbar.
Bitte testen.
Ingo F
-
Hi Ingo,
macht es denn nicht Sinn, wenn das Null-Loggen bei manchen Objekten sinnvoll ist, das Null-Loggen beim Objekt ein- bzw. abschaltbar zu machen?
Aktuell habe ich ja mit der 1.7.0 nur die Möglichkeit, generell dafür oder dagegen zu sein Das auf Objekt-Ebene zu machen, würde ich dann gefühlt sinnvoll erachten.
Werden den neuen Adapter auch testen - aktuell aber ohne die null ;-D
VG Thorsten
-
Hi,
nachdem es bei der 1.6.x einige Diskussionen um das "NULL Werte bei Start/Ende zur Abgrenzen der geloggten Werte" gab habe ich es in der 1.7.0 konfigurierbar gemacht. Standard ist "ja". Ist über Adapterkonfiguration änderbar.
Bitte testen.
Ingo F ` die v.1.7.0 läuft bei mir bisher einwandfrei 8-) :lol:
-
Hi,
Installation über die Konsole lief durch (log unten anbei). Im 2. Konsolen-Fenster konnte ich sehen, dass die benötigen Ressourcen für das Update echt hoch sind. Da bei mir der rpi3 immer abschmiert, wenn iobroker parallel weiter läuft, gehe ich jetzt davon aus, dass dies am fehlenden RAM beim Update liegt. Kann man auch gut am 2.Screen erkennen. Nach Start von ioBroker hab ich noch 30MB frei :shock:
Version 1.7.0 teste ich dann jetzt mal
VG Thorsten
! ` > root@raspberrypi3:/opt/iobroker# sudo npm install https://github.com/ioBroker/ioBroker.sql
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN deprecated sprintf@0.1.5: The sprintf package is deprecated in favor of sprintf-js.
sqlite3@3.1.13 install /opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3
node-pre-gyp install –fallback-to-build
node-pre-gyp ERR! Tried to download(403): https://mapbox-node-binary.s3.amazonaws ... arm.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for sqlite3@3.1.13 and node@4.8.7 (node-v46 ABI) (falling back to source compile with node-gyp)
make: Entering directory '/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/build'
ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c
TOUCH Release/obj.target/deps/action_before_build.stamp
CC(target) Release/obj.target/sqlite3/gen/sqlite-autoconf-3150000/sqlite3.o
AR(target) Release/obj.target/deps/sqlite3.a
COPY Release/sqlite3.a
CXX(target) Release/obj.target/node_sqlite3/src/database.o
../src/database.cc: In static member function ‘static void node_sqlite3::Database::Work_BeginOpen(node_sqlite3::Database::Baton*)’:
../src/database.cc:144:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(),
^
../src/database.cc: In static member function ‘static void node_sqlite3::Database::Work_BeginClose(node_sqlite3::Database::Baton*)’:
../src/database.cc:230:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(),
^
../src/database.cc: In static member function ‘static void node_sqlite3::Database::Work_BeginExec(node_sqlite3::Database::Baton*)’:
../src/database.cc:525:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(),
^
../src/database.cc: In static member function ‘static void node_sqlite3::Database::Work_BeginLoadExtension(node_sqlite3::Database::Baton*)’:
../src/database.cc:625:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(),
^
CXX(target) Release/obj.target/node_sqlite3/src/node_sqlite3.o
CXX(target) Release/obj.target/node_sqlite3/src/statement.o
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginPrepare(node_sqlite3::Database::Baton*)’:
../src/statement.cc:118:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(),
^
In file included from ../src/statement.cc:6:0:
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginBind(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(), \
^
../src/statement.cc:322:5: note: in expansion of macro ‘STATEMENT_BEGIN’
STATEMENT_BEGIN(Bind);
^
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginGet(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(), \
^
../src/statement.cc:370:5: note: in expansion of macro ‘STATEMENT_BEGIN’
STATEMENT_BEGIN(Get);
^
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginRun(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(), \
^
../src/statement.cc:438:5: note: in expansion of macro ‘STATEMENT_BEGIN’
STATEMENT_BEGIN(Run);
^
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginAll(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(), \
^
../src/statement.cc:504:5: note: in expansion of macro ‘STATEMENT_BEGIN’
STATEMENT_BEGIN(All);
^
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginEach(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(), \
^
../src/statement.cc:601:5: note: in expansion of macro ‘STATEMENT_BEGIN’
STATEMENT_BEGIN(Each);
^
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginReset(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
int status = uv_queue_work(uv_default_loop(), \
^
../src/statement.cc:724:5: note: in expansion of macro ‘STATEMENT_BEGIN’
STATEMENT_BEGIN(Reset);
^
SOLINK_MODULE(target) Release/obj.target/node_sqlite3.node
COPY Release/node_sqlite3.node
COPY /opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/lib/binding/node-v46-linux-arm/node_sqlite3.node
TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/build'
iobroker.sql@1.7.0 node_modules/iobroker.sql
├── pg@6.4.2 (js-string-escape@1.0.1, packet-reader@0.3.1, pg-connection-string@0.1.3, buffer-writer@1.0.1, semver@4.3.2, pg-pool@1.8.0, pg-types@1.13.0, pgpass@1.0.2)
├── mysql@2.15.0 (safe-buffer@5.1.1, sqlstring@2.3.0, bignumber.js@4.0.4, readable-stream@2.3.3)
├── sql-client@0.7.0 (argf@0.0.1, optimist@0.6.1, inote-util@0.8.1)
├── mssql@3.3.0 (generic-pool@2.5.4, promise@7.3.1, tedious@1.14.0)
└── sqlite3@3.1.13 (nan@2.7.0)
root@raspberrypi3:/opt/iobroker# `
-
Echter freier Speicher ist „free+buffers“ … also 90mb ... und weiß gerade nicht ob cached mem auch als frei zählt. Linux cached viele Dinge wodurch speicher erstmal belegt ist. Aber sobald ein Prozess was braucht gibt das os das sofort frei.
Was ist den. Speed_test ?! Braucht auch einiges an Speicher.
-
Echter freier Speicher ist „free+buffers“ … also 90mb ... und weiß gerade nicht ob cached mem auch als frei zählt. Linux cached viele Dinge wodurch speicher erstmal belegt ist. Aber sobald ein Prozess was braucht gibt das os das sofort frei.
Was ist den. Speed_test ?! Braucht auch einiges an Speicher. ` Hi APO,
ist ein Script mit den ich regelmäßig extern meinen Internet Speed teste und den Wert logge und visualisiere
~~![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201802 ... 0aeedd.jpg">https://uploads.tapatalk-cdn.com/20180211/24fad69ad452388a4cd23b94cf0aeedd.jpg</link_text>" />
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk~~
-
Have jetzt auch nochmal wegen der Löcher in der Darstellung bei flot geschaut. Hänge das Ergebnis hier an. Ggf macht es Sinn, dass der flot Entwickler auch da auch einschaltet?
Schalte die Instanz jetzt Mal auf debug um, Mal schauen dann…~~![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201802 ... fb4ce3.jpg">https://uploads.tapatalk-cdn.com/20180211/72c47cf88fd86a7d33ccf8314ffb4ce3.jpg</link_text>" />
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk~~
-
So,
habe jetzt das log exportiert und die DOPPLUNGEN hier einmal angehangen.
Log 2:58 Uhr:
! ` > 2018-02-15 02:58:08.912 - debug: sql.0 new value received for ping.1.raspberrypi3.www_google_de, new-value=true, ts=1518659888908, relog=false
2018-02-15 02:58:08.912 - debug: sql.0 value not changed ping.1.raspberrypi3.www_google_de, last-value=true, new-value=true, ts=1518659888908
2018-02-15 02:58:20.364 - debug: sql.0 new value received for rpi2.0.temperature.soc_temp, new-value=48.31, ts=1518659900362, relog=false
2018-02-15 02:58:21.366 - debug: sql.0 Datatype rpi2.0.temperature.soc_temp: Currently: number, StorageType: Number
2018-02-15 02:58:21.367 - debug: sql.0 INSERT INTO
iobroker
.ts_number (id, ts, val, ack, _from, q) VALUES(1, 1518659900362, 48.31, 1, 1, 0);2018-02-15 02:58:33.485 - debug: sql.0 new value received for mihome.0.devices.sensor_ht_158d000149c2cc.temperature, new-value=19.33, ts=1518659913482, relog=false
2018-02-15 02:58:33.486 - debug: sql.0 Min-Delta not reached mihome.0.devices.sensor_ht_158d000149c2cc.temperature, last-value=19.28, new-value=19.33, ts=1518659913482
2018-02-15 02:58:33.489 - debug: sql.0 new value received for mihome.0.devices.sensor_ht_158d000149c2cc.humidity, new-value=59.37, ts=1518659913485, relog=false
2018-02-15 02:58:33.490 - debug: sql.0 Min-Delta reached mihome.0.devices.sensor_ht_158d000149c2cc.humidity, last-value=59.05, new-value=59.37, ts=1518659913485
2018-02-15 02:58:33.490 - debug: sql.0 Datatype mihome.0.devices.sensor_ht_158d000149c2cc.humidity: Currently: number, StorageType: Number
2018-02-15 02:58:33.491 - debug: sql.0 INSERT INTO
iobroker
.ts_number (id, ts, val, ack, _from, q) VALUES(13, 1518656416889, 59.05, 1, 7, 0);2018-02-15 02:58:33.497 - debug: sql.0 new value received for mihome.0.devices.sensor_ht_158d000149c2cc.temperature, new-value=19.33, ts=1518659913494, relog=false
2018-02-15 02:58:33.498 - debug: sql.0 value not changed mihome.0.devices.sensor_ht_158d000149c2cc.temperature, last-value=19.28, new-value=19.33, ts=1518659913494
2018-02-15 02:58:33.500 - debug: sql.0 new value received for mihome.0.devices.sensor_ht_158d000149c2cc.humidity, new-value=59.37, ts=1518659913496, relog=false
2018-02-15 02:58:33.500 - debug: sql.0 value not changed mihome.0.devices.sensor_ht_158d000149c2cc.humidity, last-value=59.37, new-value=59.37, ts=1518659913496
2018-02-15 02:58:38.954 - debug: sql.0 new value received for ping.1.raspberrypi3.www_google_de, new-value=true, ts=1518659918951, relog=false
2018-02-15 02:58:38.955 - debug: sql.0 value not changed ping.1.raspberrypi3.www_google_de, last-value=true, new-value=true, ts=1518659918951
2018-02-15 02:58:43.497 - debug: sql.0 Datatype mihome.0.devices.sensor_ht_158d000149c2cc.humidity: Currently: number, StorageType: Number
2018-02-15 02:58:43.498 - debug: sql.0 INSERT INTO
iobroker
.ts_number (id, ts, val, ack, _from, q) VALUES(13, 1518659913485, 59.37, 1, 7, 0); `Log 3:50 Uhr:
!
> 2018-02-15 03:49:57.010 - debug: sql.0 INSERT INTO
iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES(1, 1518662996005, 49.39, 1, 1, 0);2018-02-15 03:50:13.849 - debug: sql.0 new value received for ping.1.raspberrypi3.www_google_de, new-value=true, ts=1518663013845, relog=false
2018-02-15 03:50:13.850 - debug: sql.0 value not changed ping.1.raspberrypi3.www_google_de, last-value=true, new-value=true, ts=1518663013845
2018-02-15 03:50:43.900 - debug: sql.0 new value received for ping.1.raspberrypi3.www_google_de, new-value=true, ts=1518663043895, relog=false
2018-02-15 03:50:43.900 - debug: sql.0 value not changed ping.1.raspberrypi3.www_google_de, last-value=true, new-value=true, ts=1518663043895
2018-02-15 03:50:53.970 - debug: sql.0 new value received for mihome.0.devices.sensor_ht_158d000149c2cc.temperature, new-value=19.35, ts=1518663053963, relog=false
2018-02-15 03:50:53.971 - debug: sql.0 Min-Delta reached mihome.0.devices.sensor_ht_158d000149c2cc.temperature, last-value=19.28, new-value=19.35, ts=1518663053963
2018-02-15 03:50:53.971 - debug: sql.0 Datatype mihome.0.devices.sensor_ht_158d000149c2cc.temperature: Currently: number, StorageType: Number
2018-02-15 03:50:53.972 - debug: sql.0 INSERT INTO
iobroker
.ts_number (id, ts, val, ack, _from, q) VALUES(14, 1518659913494, 19.33, 1, 7, 0);2018-02-15 03:50:53.981 - debug: sql.0 new value received for mihome.0.devices.sensor_ht_158d000149c2cc.humidity, new-value=58.49, ts=1518663053968, relog=false
2018-02-15 03:50:53.982 - debug: sql.0 Min-Delta reached mihome.0.devices.sensor_ht_158d000149c2cc.humidity, last-value=59.37, new-value=58.49, ts=1518663053968
2018-02-15 03:50:53.982 - debug: sql.0 Datatype mihome.0.devices.sensor_ht_158d000149c2cc.humidity: Currently: number, StorageType: Number
2018-02-15 03:50:53.983 - debug: sql.0 INSERT INTO
iobroker
.ts_number (id, ts, val, ack, _from, q) VALUES(13, 1518659913496, 59.37, 1, 7, 0);2018-02-15 03:50:53.999 - debug: sql.0 new value received for mihome.0.devices.sensor_ht_158d000149c2cc.temperature, new-value=19.35, ts=1518663053989, relog=false
2018-02-15 03:50:54.000 - debug: sql.0 value not changed mihome.0.devices.sensor_ht_158d000149c2cc.temperature, last-value=19.35, new-value=19.35, ts=1518663053989
2018-02-15 03:50:54.005 - debug: sql.0 new value received for mihome.0.devices.sensor_ht_158d000149c2cc.humidity, new-value=58.49, ts=1518663053991, relog=false
2018-02-15 03:50:54.005 - debug: sql.0 value not changed mihome.0.devices.sensor_ht_158d000149c2cc.humidity, last-value=58.49, new-value=58.49, ts=1518663053991
2018-02-15 03:50:56.561 - debug: sql.0 new value received for rpi2.0.temperature.soc_temp, new-value=48.85, ts=1518663056559, relog=false
2018-02-15 03:50:57.563 - debug: sql.0 Datatype rpi2.0.temperature.soc_temp: Currently: number, StorageType: Number
2018-02-15 03:50:57.564 - debug: sql.0 INSERT INTO
iobroker
.ts_number (id, ts, val, ack, _from, q) VALUES(1, 1518663056559, 48.85, 1, 1, 0);2018-02-15 03:51:03.975 - debug: sql.0 Datatype mihome.0.devices.sensor_ht_158d000149c2cc.temperature: Currently: number, StorageType: Number
2018-02-15 03:51:03.976 - debug: sql.0 INSERT INTO
iobroker
.ts_number (id, ts, val, ack, _from, q) VALUES(14, 1518663053963, 19.35, 1, 7, 0);2018-02-15 03:51:03.989 - debug: sql.0 Datatype mihome.0.devices.sensor_ht_158d000149c2cc.humidity: Currently: number, StorageType: Number
2018-02-15 03:51:03.990 - debug: sql.0 INSERT INTO
iobroker
.ts_number (id, ts, val, ack, _from, q) VALUES(13, 1518663053968, 58.49, 1, 7, 0); `Hoffe, das hilft weiter…
2700_sql_dopplungen.png -
Aaaaalso … ist kein echtes Doppellogging, sieht nur so aus
Die Logik funktioniert wie folgt:
Wenn Datenpunkte nicht geloggt werden weil Sie "verworfen" werden - in deinem Fall weil sich der Wert nicht geändert hat - wird der letzte dieser "verworfenen" Werte intern gespeichert. Sobald die nächste Änderung kommt wird dieser Wert dann zusätzlich in der Db gespeichert um eine korrekte Grafik zu bekommen wenn man die Daten visualisiert. Somit hättest Du dann so lange der Wert gleich geblieben ist das auch Grafisch so dargestellt (gerade Linie) und erst danach die Änderung zum neuen Wert. Viele Diagrammtools verbinden nur die Punkte 8es sei denn man kann "Treppendarstellung" wählen.
An der Stelle ist interessant das der "mihome"-Adapter so kurz nacheinander den gleichen Wert generiert. Das wäre eher das was interessant ist.
-
Have jetzt auch nochmal wegen der Löcher in der Darstellung bei flot geschaut. Hänge das Ergebnis hier an. Ggf macht es Sinn, dass der flot Entwickler auch da auch einschaltet? `
Hier ist die Frage was für Daten im Hintergrund existieren. Also man müsste schauen was genau an "GetHistory" als Daten zurückkommen.
-
Ich habe gerade gesehen dass es eine v.1.7.1 gibt und diese Installiert.
Erneut ist mein Raspi dabei eingefroren
Ich habe mal einen ScreenShot des letzten Zustandes beim freeze angefügt, vlt ist der hilfreich?!
[EDIT] ich sehe gerade erneut den Eintrag bzgl. SQL-Lite
1917_sql_adapzer_log.jpg -
Naja, wie zuletzt gesagt: Die letzte Meldung sagt das er "sqlite" kompilieren muss und das wohl auch tut. Ich kann da nichts tun
Ein anderer user hatte erfgolg mit einem Update per Konsole indem er ioBroker vorher gestoppt hat. Scheinbar wird viel CPU/RAM bei dem Kompilieren gebraucht und es lief durch von nicht viel neben her auf dem Rechner lief. versuch das mal.
Wenn Du sqlite nicht brauchst sollte nach einem "ipbroekr upload sql" alles aktuell sein mit der 1.7.1 trotzdem
-
Naja, wie zuletzt gesagt: Die letzte Meldung sagt das er "sqlite" kompilieren muss und das wohl auch tut. Ich kann da nichts tun
Ein anderer user hatte erfgolg mit einem Update per Konsole indem er ioBroker vorher gestoppt hat. Scheinbar wird viel CPU/RAM bei dem Kompilieren gebraucht und es lief durch von nicht viel neben her auf dem Rechner lief. versuch das mal.
Wenn Du sqlite nicht brauchst sollte nach einem "ipbroekr upload sql" alles aktuell sein mit der 1.7.1 trotzdem ` Hi,
jaaa, ich habe immer das Problem beim SQL Update das der pi3 einfriert. Updates mache ich daher nur noch über die Konsole. Mache daneben eine 2. Konsole auf im mit dem Befehl TOP die Auslastung zu kontrollieren.
Wichtig ist, vorher den ioBroker zu stoppen… Ich gehe davon aus, dass der RAM das Problem ist.
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
-
Ich brauche sqlite nicht, und nach einem reboot des Raspi (Stecker zeiehn 8-) ) kommt der SQL-Adapter auch korrekt in der v.1.7.1 hoch.
Ein wenig hatte ich die Hoffnung, dass beim Update ggf. sqlite ignoriert werden kann, wenn es gar keine sqlite vorinstalltion (Konfiguration) gibt.
-
Dennoch natürlich danke für den Hinweis auf den Workaround, ich werde versuchen mir den zu merken 8-)
-
Ein wenig hatte ich die Hoffnung, dass beim Update ggf. sqlite ignoriert werden kann, wenn es gar keine sqlite vorinstalltion (Konfiguration) gibt. `
Dann müste man zwei Adapter machen. Einmal "sql mit sqlite" und einmal "sql ohne". Dadurch das sqlite in den dependecy vom Paket steht macht npm das halt immer Der Installationsprozess weiss ja nicht was Du nutzen willst.
grundsätzlich sage ich mal das einer von Euch sehr gern mal unter https://github.com/mapbox/node-sqlite3/issues ein Issue auf machen sollte das der Buildprozess auf einem RaspiX viel Speicher bla brauct … die sind die einzigen die da was checken und optimieren können.
-
grundsätzlich sage ich mal das einer von Euch sehr gern mal unter https://github.com/mapbox/node-sqlite3/issues ein Issue auf machen sollte das der Buildprozess auf einem RaspiX viel Speicher bla brauct ` Ich habe da mal ein issue erstellt, in der Hoffnung dass mein Anliegen verstanden wird 8-)
Ich will das auch gar nicht zu hoch aufhängen, womöglich betrifft das ganze Procedere gar nicht viele Anwender und es gäbe ja auch einen Workaround.
Da ich kein Programmierer bin, ist meine Vorstellung davon wo man womöglich etwas umschiffen/optimieren kann ja durchaus mitunter weit weg von der Realität