t4qjXH8N / ioBroker.gardena

An ioBroker adapter for Gardena Smart System.
MIT License
12 stars 4 forks source link

Hohe Belastung bei Datenabfrrage #6

Closed Fuma2013 closed 5 years ago

Fuma2013 commented 6 years ago

Hallo

Ich nutze diesen Adapter für meinen Sileno und einen Bodenfeuchtesensor. Vorweg, ich finde diesen Adapter super! Nun habe ich den Abfrageintervall von 600 s auf 60 Sekunden reduziert, da ich relativ online sehen wollte, was den mein Robby macht bzw. wenn die Sprinkler an sind der Robby brav nach Hause fährt.

Hierbei ist mir Aufgefallen, dass jedesmal wenn die Abfrage des Adapters starten keinerlei Skripte mehr funktionieren und mein javascript adapter abschmiert. d.h. es werden keine Skripte Ausgeführt.

Hab dann im TOP geschaut. Bei laufender Abfrage liegt die %CPU Auslastung zum teil bei >100%.

PID USER PR NI VIRT RES __ SHR S %CPU %MEM TIME+ COMMAND 6527 root 20 0 1270224 147076 21924 R 103,6 3,6 6:21.32 iobroker.js-con 7144 root 20 0 1138648 148164 21520 R 99,3 3,6 3:27.37 io.javascript.0 7395 root 20 0 1115376 56500 22012 S 75,5 1,4 0:06.63 io.gardena.0 6537 root 20 0 1242932 110648 21640 S 48,3 2,7 2:08.88 io.admin.0

Dauert dann ca. 30 Sekunden dann bekomme ich im LOG: javascript.0 2018-08-24 00:56:31.449 warn Reconnection to DB. Dannach gehen die Skripte wieder Liegt wahrscheinlich daran, dass der Adapter relativ lange benötigt um die Datenmenge zu verarbeiten.

Selbst wenn ich alle Skripte deaktiviere ist der Zustand laut TOP der selbe. Liegt es an den extrem vielen Datenpunkten die abgefragt werden bzw. kann jemand anders dieses Problem nachvollziehen? Habe jetzt erstmal den Abfrageintervall wieder auf 600s Sekunden gesetzt, damit das Problem minimiert ist.

Gruß Thomas

t4qjXH8N commented 6 years ago

Hallo Thomas,

das Problem habe ich auch gerade. Es liegt definitiv an der schieren Anzahl an Datenpunkten. Ich habe dafür noch keine Richtige Lösung parat. Vielleicht sollte man, ähnlich wie beim Viesmann-Adapter das refresh Intervall Datenpuntgenau steuern können? Zudem sind viele Datenpunkte nutzlos, da ließe sich vielleicht einiges zusammenfassen. Ich setzte mich in den kommenden Wochen mal dran.

Fuma2013 commented 6 years ago

Hallo t4qjXH8N

Besten dank für deine Rückmeldung. Ja viele Datenpunkte sind nutzlos. Wäre super wenn du da was zaubern könntest. Gib gerne bescheid wenn ich was soll.

Gruß Thomas

tp1de commented 6 years ago

Hallo Christian,

ich hatte das gleiche Problem mit hoher Systembelastung und habe mir deshalb unter Node-Red einen Flow erstellt, der alle 30 Sekunden die Stati abfragt, welche mich interessieren. (siehe meinen github Eintrag). Der läuft ohne Probleme.

Bei mir läuft ioBroker im Docker auf einer Synology DS716+II mit 8 GB Hauptspeicher als Master einer Multihost-Umgebung. Darauf laufen ca. 30 Adapter und sehr viele Node-red Flows. Insgesamt habe ich nur 1,5% CPU Belastung inkl. der Node-Red Abfrage der Gardena Smart Installation alle 30 Sekunden.

Wenn ich nun den Gardena-Adapter mit 60 Sekunden Polling laufen lasse, dann steigt die CPU-Belastung um Faktor 4-5 auf 6-7%.

Ohne Gardena Adapter habe ich bei 30 aktiven Instanzen ca. 680-700 State Changes / Minute. Mit Gardena Adapter (alle 60 Sekunden) habe ich ca. 2.500 State-/ Objekt-Changes pro Minute

Der Gardena Adapter ist übrigens der Einzige, der bei mir Objekt-Changes erzeugt. Sehr viele davon sind aus der Status Report History. Diese würde ich auf jedem Fall ausblenden.

Insgesamt sind pro Gerät eigentlich nur 20-30 Informationen interessant. Black- bzw. Whitelists könnten helfen. Nur leider ist die Gardena-Informationsstruktur alles andere als benutzerfreundlich.

Grüße Thomas

t4qjXH8N commented 6 years ago

Hallo Thomas,

an genau so einer Whitelist-Lösung arbeite ich gerade. Ich habe selber einige Gardena-Smart Geräte was zu über 7000 Datenpunkten führt. Die Lösung ist weit fortgeschritten, aber ich habe im Moment leider wenig Zeit. Vielleicht schaffe ich es heute oder morgen Abend eine Testversion zu veröffentlichen.

tp1de commented 6 years ago

Hallo Christian,

das hört sich gut an. Schau Dir mal meinen Eintrag zu Smart Power an. Vielleicht kannst Du das gleich mit einbauen …..

Viele Grüße Thomas

Von: Christian Vorholt notifications@github.com Gesendet: Dienstag, 11. September 2018 13:11 An: t4qjXH8N/ioBroker.gardena ioBroker.gardena@noreply.github.com Cc: tp1de tpetrick@gmx.de; Comment comment@noreply.github.com Betreff: Re: [t4qjXH8N/ioBroker.gardena] Hohe Belastung bei Datenabfrrage (#6)

Hallo Thomas,

an genau so einer Whitelist-Lösung arbeite ich gerade. Ich habe selber einige Gardena-Smart Geräte was zu über 7000 Datenpunkten führt. Die Lösung ist weit fortgeschritten, aber ich habe im Moment leider wenig Zeit. Vielleicht schaffe ich es heute oder morgen Abend eine Testversion zu veröffentlichen.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/t4qjXH8N/ioBroker.gardena/issues/6#issuecomment-420236767 , or mute the thread https://github.com/notifications/unsubscribe-auth/Aiyk-01nA3olowvSt1iawyMOEKXUH7gNks5uZ5pQgaJpZM4WLvC0 . https://github.com/notifications/beacon/Aiyk--9ZoRX6ztlw3vvo6HL-CRcphxnoks5uZ5pQgaJpZM4WLvC0.gif

Fuma2013 commented 5 years ago

Hallo

Wollte mal fragen, wie der aktuelle Stand ist?! Bin kein Programmierer... aber wenn ich dir irgenwie helfen kann oder ich mich anderweitig für deine Aufwände erkenntlich zeigen darf, sag gerne bescheid. Ich weiß deinen Aufwand zu schätzen.

Gruß Thomas

t4qjXH8N commented 5 years ago

Hey,

also es gibt einen Branch "datapoint_select". Dieser kann geklont werden, er ist lauffähig. Dort kann man eine "Whitelist" erstellen und der Aufwand bei der Datenabfrage ist deutlich reduziert. Die Konfiguration und die Abfragen sollten funktionieren, aber es ist noch nicht möglich Kommandos zu versenden.

Fuma2013 commented 5 years ago

Hey und danke für die Rückmeldung.

Na ja, bräuchte die commands schon auch. Ich trau mich gar nicht fragen, aber du meintest, dass du noch an dem Adapter arbeitetest?! Bist du noch am Datenabfrage fix dran bzw. kommt da noch ne neuere Version bzw. wann? Kann den Adapter aktuell nur Temporär verwenden.

Sorry für die prägnante Fragerei und mein Angebot steht. Gerne lasse ich dir für deine Aufwände eine kleine Entschädigung zukommen. Sag gerne bescheid. Sehe deinen Aufwand nicht als selbstverständlich an.

Gruß Thomas

t4qjXH8N commented 5 years ago

Bitte teste die aktuelle Version 2.0.0.

Fuma2013 commented 5 years ago

Hallo

Bekomme leider im Log diverse Fehlermeldungen

Diese nachfolgend

host.ioBroker-Rock64 2018-10-22 02:17:16.111 error instance system.adapter.gardena.0 terminated with code 0 (OK)
Caught 2018-10-22 02:17:16.110 error by controller[0]: at Decoder.add (/opt/iobroker/node_modules/socket.io-parser/index.js:251:12)
Caught 2018-10-22 02:17:16.110 error by controller[0]: at Decoder.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:133:20)
Caught 2018-10-22 02:17:16.109 error by controller[0]: at Decoder. (/opt/iobroker/node_modules/component-bind/index.js:21:15)
Caught 2018-10-22 02:17:16.109 error by controller[0]: at Manager.ondecoded (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:345:8)
Caught 2018-10-22 02:17:16.109 error by controller[0]: at Manager.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:133:20)
Caught 2018-10-22 02:17:16.108 error by controller[0]: at Manager. (/opt/iobroker/node_modules/component-bind/index.js:21:15)
Caught 2018-10-22 02:17:16.107 error by controller[0]: at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:244:12)
Caught 2018-10-22 02:17:16.107 error by controller[0]: at Socket.onack (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:319:9)
Caught 2018-10-22 02:17:16.106 error by controller[0]: at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2432:25)
Caught 2018-10-22 02:17:16.106 error by controller[0]: at /opt/iobroker/node_modules/iobroker.gardena/lib/gardenaDBConnector.js:544:25
Caught 2018-10-22 02:17:16.104 error by controller[0]: TypeError: Cannot read property 'hasOwnProperty' of undefined
gardena.0 2018-10-22 02:17:16.027 info terminating
gardena.0 2018-10-22 02:17:16.005 info cleaned everything up...
gardena.0 2018-10-22 02:17:16.002 error at Decoder.add (/opt/iobroker/node_modules/socket.io-parser/index.js:251:12)
gardena.0 2018-10-22 02:17:16.002 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:133:20)
gardena.0 2018-10-22 02:17:16.002 error at Decoder. (/opt/iobroker/node_modules/component-bind/index.js:21:15)
gardena.0 2018-10-22 02:17:16.002 error at Manager.ondecoded (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:345:8)
gardena.0 2018-10-22 02:17:16.002 error at Manager.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:133:20)
gardena.0 2018-10-22 02:17:16.002 error at Manager. (/opt/iobroker/node_modules/component-bind/index.js:21:15)
gardena.0 2018-10-22 02:17:16.002 error at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:244:12)
gardena.0 2018-10-22 02:17:16.002 error at Socket.onack (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:319:9)
gardena.0 2018-10-22 02:17:16.002 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2432:25)
gardena.0 2018-10-22 02:17:16.002 error at /opt/iobroker/node_modules/iobroker.gardena/lib/gardenaDBConnector.js:544:25
gardena.0 2018-10-22 02:17:16.002 error TypeError: Cannot read property 'hasOwnProperty' of undefined
gardena.0 2018-10-22 02:17:16.001 error uncaught exception: Cannot read property 'hasOwnProperty' of undefined
t4qjXH8N commented 5 years ago

Ich habe gerade ein paar Änderungen in den master branch eingecheckt, könntest Du die testen?

Fuma2013 commented 5 years ago

Hallo

Also erstmal Respekt. Das Whitelisten klappt super. Die Ausgewählten Datenpunkte werden auch übernommen und die Daten eingetragen. Die CPU und RAM last ist nicht mehr der rede Wert.

Ich habe aber mit dem intelligenten Datenpunkten Probleme. Wenn ich die Auswahlbox angewählt haben und die Smarten Datenpunkte Wähle, werden diese augenscheinlich nicht gefunden. (in den Objekten werden diese angelegt, aber nicht gefüllt) Die restlichen "nicht Smarten" Datenpunkte werden dennoch gefüllt.

Siehe nachfolgenden Log.

2018-10-22 16:51:26.564 - warn: gardena.0 Warning, state 7262bd4e-e22a-497a-97c8-7950099927e0abilities35b96d4c-fcf1-3e1e-ae90-1c4c85249179___9eb0a548-ad28-3aa3-a7b9-4b3faa8f4ad1 is present in the database but missing in the datagram from Gardena cloud.

Gruß Thomas

t4qjXH8N commented 5 years ago

Habe gerade eine neue Version abgelegt, kannst Du die bitte testen?

Fuma2013 commented 5 years ago

Hallo Christian

Also die Daten abfrage klappt super. habe die "Smarten" Datenpunkte implementiert. Diese werden nun auch gefunden und richtig aktualisiert. Keine fehlermeldungen im Log. Adapter läuft sauber. Nach wie vor ist der traffic und die dementsprechende Belastung der CPU sehr gering. Klar sind nun ja auch um einige tausend weniger Datenpunkte.

Hatte den Aktualisierungsintervall bei 6 Sekunden. Kein Problem.

Also States abfrage geht und werde morgen mal die Commands probieren.

Grüße Thomas