NEWS
Test Adapter e3dc-rscp v0.0.x GitHub
-
@arnod
Da dürften bei 3 Instanzen auch die Skripte alle dreifach laufen.
Den Sinn von drei javaskript-Instanzen musst du jetzt mal erklären. -
@arnod said in Test Adapter e3dc-rscp v0.0.x GitHub:
Wenn ich das aber mit einer besseren Hardware lösen kann, ist es für mich auch in Ordnung
Uli auf welcher Hardware läuft dein ioBroker ?PC mit Ryzen 5 3600 und Win 10
Der läuft 24x7 und beherbergt neben ioBroker (in einer Ubuntu-VM) und der InfluxDB (für die E3DC - Zeitreihen) auch meine private Cloud mit allen möglichen Diensten inkl. Mail, DMS, Fotogalerie, Streaming, Backup etc. -
@arnod Ich hab auf meiner Synology die CPU Probleme nicht, aber ich hab auch nur eine JS Instanz.0. Warum sollte man denn mehrere laufen lassen?
-
Der Adapter ist ja der Hammer. Großes Lob am den Entwickler @ujok
-
@thomas-braun
Die drei Instanzen sind nicht das Problem, auch wenn nur eine Installiert ist bleibt das Problem dasselbe, habe es nur mit einer dritten ohne Scripte getestet um sicher zu sein das die Scripte keinen Einfluss haben. ( javascript.0 und javascript.1 waren während dem Test gestoppt)
Ich habe immer zwei Instanzen vom Javascript Adapter, da ich eine zum Testen oder erstellen von neuen Scripten verwende. -
@matis
Da bei dir der ioBroker nicht einfriert, wenn du den Adapter e3dc.rscp mit dem Abfrageintervall kurz auf 1 s laufen lässt,
könntest du mal den Adapter e3dc.rscp stoppen und dann dir diese beiden Werte ansehen:
system.adapter.javascript.0.inputCount
system.adapter.javascript.0.outputCountDanach auch den Adapter e3dc.rscp starten um zu sehen wie weit diese Werte ansteigen:
system.adapter.javascript.0.inputCount
system.adapter.javascript.0.outputCount
system.adapter.e3dc-rscp.0.inputCount
system.adapter.e3dc-rscp.0.outputCountWürde mich mal interessieren wie weit sich das bei dir aufschaukelt.
-
CPU-IoBroker: 9,5% bei 30 sek.
8,8% bei e3dc-rscp off
23,5% bei 1 sek.ed3dc-rscp off:
system.adapter.javascript.0.inputCount: 1000/15sek
system.adapter.javascript.0.outputCount: 400/15seke3dc.rscp 1 sek:
system.adapter.javascript.0.inputCount: 4000/15sek
system.adapter.javascript.0.outputCount: 300/15sek
system.adapter.e3dc-rscp.0.inputCount: 66/15sek
system.adapter.e3dc-rscp.0.outputCount: 6325/15sekMit einer Sekunde läuft zwar alles noch, doch teilweise brauchen die iobroker-Seiten lange für den Aufbau.
Nach ca. 5 Minuten (so lange hatte ich bisher nie gewartet) waren keine VIS-Anzeigen-Updates mehr möglich. Iobroker lief aber noch.
Die Instanz konnte ich nicht mehr per GUI anhalten.
Kill e3dc-rscp.0 hat funktioniert. Danach lief Iobroker auch wieder gut erreichbar und ich konnte mit 30sek. wieder die Instanz starten. -
@arnod
mit 5 sek läuft noch alles sehr stabil und bedienbar:system.adapter.javascript.0.inputCount: 2400/15sek
system.adapter.javascript.0.outputCount: 480/15sek
system.adapter.e3dc-rscp.0.inputCount: 24/15sek
system.adapter.e3dc-rscp.0.outputCount: 2003/15sek -
ok danke, wie sind die Werte vom der Javascript.0 Instanz ohne e3dc-rscp Instanz ?
Vermute mal wesentlich niedriger.
Was passiert wenn du 1 sek. einstellst? -
@arnod Siehe eins weiter oben!
-
@matis ok Danke, hatte ich überlesen
Das bedeutet das du mit 1 sek. auch Probleme hast.@ujok
Man könnte mal versuchen nur die wichtigsten Werte im 1 sek. Takt abzufragen wie
TAG_EMS_REQ_POWER_PV
TAG_EMS_REQ_POWER_BAT
TAG_EMS_REQ_POWER_HOME
TAG_EMS_REQ_POWER_GRID
TAG_EMS_REQ_POWER_ADDund den Rest alle 10 sek.
-
Ich habe jetzt mal versucht wie viele Werte mit 1 sek. Abgerufen werden können ohne das man ein Problem mit der CPU Auslastung bekommt.
Mit 11 Werten ist es noch im grünen Bereich bei unter 40% und nur ein paar spitzen bis 88%.
Ich habe diese Werte mit "RefreshPeriod": "short" eingestellt:
REQ_POWER_BAT
REQ_POWER_HOME
REQ_POWER_GRID
REQ_POWER_ADD
REQ_MODE (kann man diskutieren, ob man diesen Wert wirklich live benötigt)
REQ_STATUS
REQ_ALIVE
REQ_STATE
REQ_AC_POWER
REQ_AC_VOLTAGE
REQ_AC_CURRENTMit diesen Werten sieht die CPU Auslastung auch über einen längeren Zeitraum auf der Synology so aus:
-
@arnod
@ujokWoran kann ich denn nun sehen, welcher Wert kurz, mittel, lang ist?
Ich finde es gut, dass es drei Abstufungen gibt.
Die 12 kurzen sind auch alle auf modbus und man bekommte die dort einfach auch im 1 Sek. Takt.
Dafür hätte ich gerne andere vielleicht nicht nur in Minuten oder gar Stunden.Ich fände es besser, wenn man selbst entscheiden kann, wie lang die Stufen sind,
d.h. alle drei in Stufen in Sekunden und man kann selbst einstellen.
Mal 60 o. 3600 bekommt man sicher noch hin -
Danke für die Last-Analyse! Ich habe das eingebaut: mit dem "kurzen" Intervall werden jetzt nur noch die genannten elf Felder abgefragt. Damit pendelt sich die CPU-Last der ioBroker-Instanz auf meinem Entwicklungs-Notebook (i7-1065G7) bei ca. 1,5% ein, wenn ich "Abfrageintervall kurz" = 1 sec setze.
Zusätzlich kann man jetzt ganze Namespaces nach Bedarf ausblenden.
https://github.com/git-kick/ioBroker.e3dc-rscp/tree/v0.0.12-beta
0.0.12-beta
- New in configuration panel: select namespaces to query - use it to reduce CPU load (and transmitted data volume)
- Polling interval: only 11 most important parameters left in "short" class, according to @ArnoD's analysis
-
-
@matis sagte in Test Adapter e3dc-rscp v0.0.x GitHub:
Woran kann ich denn nun sehen, welcher Wert kurz, mittel, lang ist?
Ich finde es gut, dass es drei Abstufungen gibt.
Die 12 kurzen sind auch alle auf modbus und man bekommte die dort einfach auch im 1 Sek. Takt.Sehen kann man es nur im Adapterverzeichnis, indem man sich die RscpTags.json ansieht.
Die Frage, ob man sich diese Werte über Modbus holt, habe ich mir auch schon gestellt, andererseits hat es natürlich auch einen Charme alles mit einem Adapter hinzubekommen und sich die Ressourcen für den zweiten Adapter zu sparen. Kann aber sein, dass man noch darauf zurückgreifen muss, wenn jetzt noch weitere Werte dazukommen.
Ich denke, man muss sich nur gut überlegen, was man wirklich als live Ansicht benötigt. Alle Werte wo ich nicht mit einer Steuerung sofort darauf reagieren will, muss ich auch nicht jede sek. Aktualisieren. Träge Werte wie Temperaturen sicher auch nicht.
Das gute ist erstmal das alles so weit funktioniert und man es sich nach Belieben einstellen kann.
Übrigens, die Zeiten können auch als 0.5 für 30 sek. im Minutenfeld eingegeben werden. -
@arnod sagte in Test Adapter e3dc-rscp v0.0.x GitHub:
Übrigens, die Zeiten können auch als 0.5 für 30 sek. im Minutenfeld eingegeben werden.
Prima, ich hab mal wieder den Fehler gemacht und es mit Komma versucht
Sehr cool, die 0.0.12!
-
Uli 0.0.12 läuft ohne Fehler
Vielleicht eine optische Verbesserung für eine Anzeige in VIS.
Wenn man eine Namespace abwählt, sollten die Werte auch gelöscht werden, da sonst die Anzeigen beim alten Wert hängen bleiben und man in Vis eventuell nicht mitbekommt, dass es alte eingefrorene Werte sind.
Aber wie gesagt nur eine reine optische Korrektur. -
@arnod said in Test Adapter e3dc-rscp v0.0.x GitHub:
Vielleicht eine optische Verbesserung für eine Anzeige in VIS.
Wenn man eine Namespace abwählt, sollten die Werte auch gelöscht werden, da sonst die Anzeigen beim alten Wert hängen bleiben und man in Vis eventuell nicht mitbekommt, dass es alte eingefrorene Werte sind.Ja, es wäre kein Problem, den jeweiligen Hauptast im Objektbaum zu löschen. Aber dann verschwinden alle Werte, auch z.B. Modellnamen, die sich nie ändern. Ich dachte vielleicht ist es ganz praktisch, die Werte einmal einzuslesen und dann die Aktualisierung zu stoppen. Aber ich stimme auch zu, dass (nicht erkennbar) veraltete Werte unschön sind.
Nicht so einfach ist es, die Werte "zurückzusetzen": erstens müsste ich dann die Werte einzeln anfassen, zweitens ist nicht immer eindeutig, was der "nicht-definiert-Wert" eigentlich ist, womöglich abhängig vom Update-Intervall (short/medium/long). Kurz: das wäre mir zu viel Aufwand/Komplexität für den (nur optischen) Effekt.Gibt es noch Wortmeldungen zu der Frage:
Wenn man einen Namespace abschaltet,
A) alles so einfrieren wie es ist oder
B) den Objekt-Teilbaum komplett löschen
?? -
@arnod said in Test Adapter e3dc-rscp v0.0.x GitHub:
Nachtrag:
Komisch ist die Rückmeldung von e3dc-rscp.0.EMS.MODE.
Wenn SET_POWER_MODE = 0 ist MODE = 0
Wenn SET_POWER_MODE = 1 ist MODE = 0
Wenn SET_POWER_MODE = 2 ist MODE = 1
Wenn SET_POWER_MODE = 3 ist MODE = 2
Wenn SET_POWER_MODE = 4 ist MODE = 2Hier stimmt noch was nicht.
Ich habe mir dazu nochmal die Tag-Liste angesehen: die Werte für MODE sind dort nicht definiert - ich hatte einfach angenommen, dass sie denen von SET_POWER_MODE entsprechen. Diese Annahme war offenbar falsch.
Wäre es also sinnvoll MODE so zu übersetzen?
0 = IDLE
1 = DISCHARGE
2 = CHARGE(Allerdings wäre mir dann immer noch nicht klar, was sie SET_POWER_MODE Werte genau bedeuten, speziell die Unterschiede NORMAL/IDLE und CHARGE/GRID_CHARGE).