NEWS
Test Adapter History 2.0.0
Test Adapter History 2.0.0
-
Veröffentlichungsdatum 14.04.2020 ?
-
So @apollon77 hier, wie gewünscht der Reminder bzgl. iobroker.sql 2.0

DAAANKEEEE !!!
-
Aktuelle Test Version 2.0.0 Veröffentlichungsdatum 14.04.2022 Github Link https://github.com/ioBroker/ioBroker.history Hallo lieber Tester,
ich habe mit in den letzten Tagen mal die Zeit genommen und so ein paar Themen bei den History-Adaptern anzuschauen und in dem Zuge habe ich jetzt ein seeeehr großes Update für History zum testen für Euch. Wenn das soweit passt wird das "gleiche" auch für sql und InfluxDB noch kommen.
Diese neue (Major!) Version des History Adapters räumt einige Dinge auf und sorgt bei einigen Themen für mehr transparent und Klarheit und bringt noch dazu einige Features mit. Der Adapter wird sich an einigen Stellen was die aufgezeichneten Daten angeht künftig anders verhalten als bisher!
Ebenso haben sich Einstellungen geändert - es sollten die Einstellungen der alten Version übernommen werden und sollten auch bei einem Downgrade noch vorhanden sein wie vorher eingestellt, dennoch ist diese Version ein Breaking change. Also stellt bitte sicher Backups der Datenfiles und des Systems zu haben!Da dies jetzt einiges an Änderungen ist starten wir erst einmal mit einem Alpha Test von GitHub. Bitte als im Admin den Expertenmodus aktivieren und vom GitHub installieren.
Bei Fehlern bitte ggf hier schreiben und dann GitHub Issues anlegen.
Auf die wichtigsten Änderungen will ich gern jetzt noch genauer eingehen.
Wichtige Änderungen erklärt
Konfiguration ausschliesslich in der neuen Admin UI verfügbar!
Die Konfiguration ist ausschliesslich in der neuen Admin5 UI verfügbar
Debounce vs "Aufzeichnung zeitlich blockieren"
In der Konfiguration kann man eine sog. "Debounce-Zeit" angeben. Debounce bedeutet an sich, dass ein neuer Wert erst dann als "stabil" gilt wenn er sich für die angegebene Zeit nicht geändert hat. So war es auch (von komischen Effekten mit "Nur Änderungen aufzeichnen mal abgesehen", dazu später mehr) implementiert. Leider hat die Readme davon gesprochen das der Wert sofort geloggt wird aber dann für die angegebene Zeit kein weiterer Wert. Hier herrschte also Verwirrung.
Mit dieser Version gibt es jetzt zwei Werte die man setzen kann:
- Debounce-Zeit: Der Wert wird wirklich erst aufgezeichnet, wenn er sich für die hier angegebene Zeit nicht geändert hat! Wird hier also ein Wert eingetragen der höher ist als die übliche Änderungsfrequenz des States, dann wird faktisch NIE etwas geloggt! Also Achtung hier!
- Block-Zeit: Dieser Wert entspricht dem was die Doku bisher zum "Debounce" gesagt hat und erlaubt es, erst frühestens nach Ablauf dieser Zeit neue Werte zu loggen. Wichtig hier ist das die obige "Debounce-Zeit" vorher geprüft wird, und auch das ein "Gleiche Werte nochmals loggen" diesen Check nicht macht.
Aus Kompatibilitätsgründen wird der frühere "debounce"-Wert als "Block-Wert" übernommen. Also bitte die Einstellungen prüfen falls dies keinen Sinn macht!
"Nur Änderungen aufzeichnen" vs "Debounce"
In dieser Kombination hatten sich einige Bugs und Effekte eingeschlichen, welche dafür gesorgt haben das teilweise Werte geloggt wurden die nicht den Regeln entsprachen. Dies ist jetzt aufgeräumt.
"Nur Änderungen aufzeichnen" und Aufzeichnung zusätzlicher Werte zur besseren Grafischen Darstellung
Ein weiterer großer Verwirrungspunkt war öfters, warum denn noch zusätzliche Werte aufgezeichnet werden, die an sich durch die Regeln (vor allem "Minimale Differenz") gar nicht hätten aufgezeichnet werden dürfen. Dies kam daher, dass der Adapter versucht die Werte so aufzuzeichnen das eine Grafische Darstellung sinnvoll möglich ist, weil in vielen Fällen die Werte nur zur grafischen Darstellung genutzt werden. Vor allem dabei ist es aber ein potentiell größerer Unterschied ob ein Wert der sich mit 1h Abstand geändert hat sich zu einem Zeitpunkt schlagartig geändert hat oder über die gesamte Zeit langsam geändert hat. Die automatisch gewählten zusätzlichen Werte stellen hier eine bessere Darstellung sicher.
Die neue Version nutzt diese darstellungsoptimierte Aufzeichnung immer noch standardmäßig, kann allerdings pro Datenpunkt deaktiviert werden! Dann werden nur wirklich die Werte aufgezeichnet die laut den angegebenen Regeln definiert waren.
Neue Features
Zusätzlich zu den oben genannten Änderungen gibt es einige neue Features in der neuen Version:
- Mittels zwei neuer Einstellungen pro Datenpunkt ("Nicht loggen wenn kleiner als" und "Nicht loggen wenn größer als") können noch besser Fehlerwerte ausgeklammert werden. Die Einstellung "Nicht loggen wenn kleiner als" ersetzt das vor kurzem hinzugefügte "Keine Werte kleiner als 0 loggen", die Einstellung wird aber automatisch konvertiert.
- Eine Einstellung pro Datenpunkt ist dazugekommen, mit der man angeben kann auf wie viele Stellen nach dem Komma die Werte beim lesen (GetHistory) gerundet werden.
- Neue Aggregationsmethoden "percentile" und "quartile" wurden hinzugefügt, um das n-te Percentile bzw. das 0.x Quartile zu ermitteln. Ohne weitere Infos wird das 50er Percentile bzw. das 0.5er Quartile (Mean) zurückgegeben, was ein besserer Average ist.
- Neue Aggregationsmethode "integral" wurde hinzugefügt, um das Integral (Fläche unter den Werten) zu errechnen. Im Standard ist die Integral-Unit 1s und eine schrittweise Interpolation wird genutzt (also quasi keine, weil die werte für die ganze Zeit konstant berechnet werden). Alternativ kann eine lineare Interpolation genutzt werden. Mit einem Integral und zB Unit von 3600s kann man aus einem Stromverbrauch in Watt die Wh ermitteln,
- Standardmäßig ermitteln die Aggregationsmethoden immer auch zwei Randwerte und geben diese im Ergebnis zurück um die grafische Darstellung zu optimieren. Mittels der neuen Option "removeBorderValues" bei einem GetHistory Aufruf können die zurückgegebenen Werte so limitiert werden wie Sie per step bzw. count angefordert wurden und diese Randwerte entfernt werden. Dies ist vor allem Hilfreich wenn ein Skript die Daten verarbeiten soll. Mit dem (kommenden!) Admin 5.3.8 ist auch die Darstellung der Werte bei den Datenpunkt-Einstellungen wieder korrekt, wenn man Zeitbereiche von mehr als 24 gewählt hat und mehr als 500 Werte in dem Zeitraum geloggt wurden.
- Da das schreiben von Debug Logs vor allem bei schwächeren Systemen ziemlich auf die performance drückt und auch ein Debug Log immer sehr unübersichtlich wurde, weil alles oder nichts geloggt wurde, kann nun zusätzliches Debug pro Datenpunkt aktiviert werden! Dies wird aber nur dann ausgegeben wenn der Loglevel der Instanz auch auch Debug steht.
- Bei storeState kann nun mittels dem Parameter "rule=true" festlegen das die Daten nicht direkt geloggt werden sondern alle Rules angewendet werden wie für jeden normalen Wert - inkl. Debounce u.ä. Bitte vorsichtig nutzen das nicht unabsichtlich Werte nicht geschrieben werden!
- Die Aufbewahrungszeit kann nun neben vorgegebenen Optionen auch als eigene Dauer in Tagen angegeben werden
Die neuen Aggregationsmethoden sind (natürlich) noch nicht in flot oder echarts verfügbar und können daher nur in Skripten genutzt werden. Hierzu müssten, wenn alles geht dann noch Issues an den relevanten Stellen angelegt werden.
Die neuen Optionen für getHistory sind in https://github.com/ioBroker/ioBroker.history/blob/master/docs/en/README.md#access-values-from-javascript-adapter auch alle erklärt
Weitere Änderungen
Weiterhin gibt es folgende relevante Änderungen im Verhalten
- GetHistory-Anfragen müssen nun bei start/end Angaben in ms erfolgen! Zeitangaben in Sekunden werden nicht mehr umgerechnet! Bitte sicherstellen das alle UIs und Charting-Adapter aktuell sind!
- Die Objekt-ID wird nun immer wenn angefordert mit in den Ergebnissen von GetHistory zurückgegeben
- Spezielle Behandlung von früher aufgezeichneten Daten mit Timestamps in Sekunden bzw. Logiken die verhindert haben Werte vor 1.1.2010 zu verarbeiten wurden entfernt.
Neue Aufzeichnungslogik erklärt
Am Ende gilt jetzt folgende Reihenfolge der Checks:
- Ein Wert ist erst nach Debounce-zeit stabil. Unstabile werte werden nicht aufgezeichnet
- Wenn die Blockzeit seit dem zuletzt regulär aufgezeichneten Wert nicht erreicht ist, wird der Wert nicht aufgezeichnet
- Wenn "Null-Werte" ignoriert werden und der Wert 0 ist, dann wird der Wert nicht aufgezeichnet
- Wenn Grenzen der Werte definiert sind (Nicht loggen wenn kleiner/größer als) und der Wert ist ausserhalb der Grenzen, wird der Wert nicht aufgezeichnet
- Wenn "Nur Änderungen aufzeichnen" definiert ist:
- Wenn der Wert seit letzter Aufzeichnung unverändert war und "gleichen Wert aufzeichnen" deaktiviert ist, wird der Wert nicht aufgezeichnet. Der Wert wird ggf. erinnert für spätere Aufzeichnung zur Darstellungsoptimierung.
- Wenn der Wert seit letzter Aufzeichnung unverändert war und "gleichen Wert aufzeichnen" aktiviert ist und das angegebene "Nochmals Aufzeichnen Interval" noch nicht erreicht ist, wird der Wert nicht aufgezeichnet. Der Wert wird ggf. erinnert für spätere Aufzeichnung zur Darstellungsoptimierung.
- Wenn der Wert eine Zahl ist und eine "Minimale Differenz" definiert ist, diese aber nicht erreicht ist, wird der Wert nicht aufgezeichnet. Der Wert wird ggf. erinnert für spätere Aufzeichnung zur Darstellungsoptimierung.
Der zuletzt erinnerte Wert wird geschrieben sobald auch der nächste reguläre Wert geschrieben wird, allerdings mit seinem alten Zeitstempel - und nur wenn die Darstellungsoptimierung nicht deaktiviert wurde..
Vielen Spass beim testen und vielen Dank für Euer Feedback und Eure Erfahrungen,
Ingo
-
-
Nachdem ich jetzt auch genötigt wurde auf 2.0 zu gehen
habe ich auch die neue Edit Funktion testen wollen:

Muss man da noch einen Zauberspruch aufsagen, oder klappt das einfach nur nicht?
(Möglich dass es an meinen 45GB History-Daten liegt
??)--- /opt/iobroker/iobroker-data ---------------------------------------------------------------------------------------------------------------------------- /.. 44,9 GiB [##########] /history -
Nachdem ich jetzt auch genötigt wurde auf 2.0 zu gehen
habe ich auch die neue Edit Funktion testen wollen:

Muss man da noch einen Zauberspruch aufsagen, oder klappt das einfach nur nicht?
(Möglich dass es an meinen 45GB History-Daten liegt
??)--- /opt/iobroker/iobroker-data ---------------------------------------------------------------------------------------------------------------------------- /.. 44,9 GiB [##########] /history@homoran sagte in Test Adapter History 2.0.0:
Muss man da noch einen Zauberspruch aufsagen, oder klappt das einfach nur nicht?
Was meinst du? Du musst da auch "löschen" klicken ... dann wird es gelöscht ... oder check die Checkbox dann fragt er ne weile nicht mehr nach
-
@homoran sagte in Test Adapter History 2.0.0:
Muss man da noch einen Zauberspruch aufsagen, oder klappt das einfach nur nicht?
Was meinst du? Du musst da auch "löschen" klicken ... dann wird es gelöscht ... oder check die Checkbox dann fragt er ne weile nicht mehr nach
@apollon77 sagte in Test Adapter History 2.0.0:
Du musst da auch "löschen" klicken ... dann wird es gelöscht
eben nicht
-
@apollon77 sagte in Test Adapter History 2.0.0:
Du musst da auch "löschen" klicken ... dann wird es gelöscht
eben nicht
-
@homoran debug log vom Adapter mal an und bitte log von so nem löschen zeigen. Dran hab ich nix geändert. Muss man schauen
@apollon77 Hab ich (oder du) ein Problem.
Das debug müllt das log zu.
ich erkenne nicht was zum löschen gehörtWie lange dauert das Ganze?
fängt an mit:
2022-04-27 14:53:18.765 - debug: history.0 (4085778) Redis Objects: Use Redis connection: 0.0.0.0:9001 2022-04-27 14:53:18.794 - debug: history.0 (4085778) Objects client ready ... initialize now 2022-04-27 14:53:18.799 - debug: history.0 (4085778) Objects create System PubSub Client 2022-04-27 14:53:18.800 - debug: history.0 (4085778) Objects create User PubSub Client 2022-04-27 14:53:18.801 - debug: history.0 (4085778) Objects client initialize lua scripts 2022-04-27 14:53:18.816 - debug: history.0 (4085778) Objects connected to redis: 0.0.0.0:9001 2022-04-27 14:53:18.822 - debug: history.0 (4085778) objectDB connected 2022-04-27 14:53:18.823 - debug: history.0 (4085778) Redis States: Use Redis connection: 0.0.0.0:9000 2022-04-27 14:53:18.832 - debug: history.0 (4085778) States create System PubSub Client 2022-04-27 14:53:18.833 - debug: history.0 (4085778) States create User PubSub Client 2022-04-27 14:53:18.844 - debug: history.0 (4085778) States connected to redis: 0.0.0.0:9000 2022-04-27 14:53:18.845 - debug: history.0 (4085778) statesDB connected 2022-04-27 14:53:19.057 - debug: history.0 (4085778) Plugin sentry Initialize Plugin (enabled=true)Hab's nochmal versucht und finde:
2022-04-27 14:59:41.657 - debug: history.0 (4085778) sendTo "getHistory" to system.adapter.web.0 from system.adapter.history.0 2022-04-27 14:59:50.596 - debug: history.0 (4085778) deleteState 1 items 2022-04-27 14:59:50.597 - warn: history.0 (4085778) States system pmessage io.messagebox.system.adapter.history.0 {"command":"delete","message":[{"state":{"ts":1651063995440},"id":"Messwerte.0.Stromzaehler.Summenwerte.Tagesendverbrauch"}],"from":"system.adapter.admin.0","callback":{"message":[{"state":{"ts":1651063995440},"id":"Messwerte.0.Stromzaehler.Summenwerte.Tagesendverbrauch"}],"id":325,"ack":false,"time":1651064390595},"_id":70540713} file is not defined 2022-04-27 14:59:50.604 - warn: history.0 (4085778) ReferenceError: file is not defined at /opt/iobroker/node_modules/iobroker.history/main.js:1552:59 at Array.forEach () at _delete (/opt/iobroker/node_modules/iobroker.history/main.js:1505:15) at deleteState (/opt/iobroker/node_modules/iobroker.history/main.js:1628:17) at processMessage (/opt/iobroker/node_modules/iobroker.history/main.js:326:9) at Object.message (/opt/iobroker/node_modules/iobroker.history/main.js:233:25) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5634:41) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:232:37) at processImmediate (internal/timers.js:464:21) -
@apollon77 Hab ich (oder du) ein Problem.
Das debug müllt das log zu.
ich erkenne nicht was zum löschen gehörtWie lange dauert das Ganze?
fängt an mit:
2022-04-27 14:53:18.765 - debug: history.0 (4085778) Redis Objects: Use Redis connection: 0.0.0.0:9001 2022-04-27 14:53:18.794 - debug: history.0 (4085778) Objects client ready ... initialize now 2022-04-27 14:53:18.799 - debug: history.0 (4085778) Objects create System PubSub Client 2022-04-27 14:53:18.800 - debug: history.0 (4085778) Objects create User PubSub Client 2022-04-27 14:53:18.801 - debug: history.0 (4085778) Objects client initialize lua scripts 2022-04-27 14:53:18.816 - debug: history.0 (4085778) Objects connected to redis: 0.0.0.0:9001 2022-04-27 14:53:18.822 - debug: history.0 (4085778) objectDB connected 2022-04-27 14:53:18.823 - debug: history.0 (4085778) Redis States: Use Redis connection: 0.0.0.0:9000 2022-04-27 14:53:18.832 - debug: history.0 (4085778) States create System PubSub Client 2022-04-27 14:53:18.833 - debug: history.0 (4085778) States create User PubSub Client 2022-04-27 14:53:18.844 - debug: history.0 (4085778) States connected to redis: 0.0.0.0:9000 2022-04-27 14:53:18.845 - debug: history.0 (4085778) statesDB connected 2022-04-27 14:53:19.057 - debug: history.0 (4085778) Plugin sentry Initialize Plugin (enabled=true)Hab's nochmal versucht und finde:
2022-04-27 14:59:41.657 - debug: history.0 (4085778) sendTo "getHistory" to system.adapter.web.0 from system.adapter.history.0 2022-04-27 14:59:50.596 - debug: history.0 (4085778) deleteState 1 items 2022-04-27 14:59:50.597 - warn: history.0 (4085778) States system pmessage io.messagebox.system.adapter.history.0 {"command":"delete","message":[{"state":{"ts":1651063995440},"id":"Messwerte.0.Stromzaehler.Summenwerte.Tagesendverbrauch"}],"from":"system.adapter.admin.0","callback":{"message":[{"state":{"ts":1651063995440},"id":"Messwerte.0.Stromzaehler.Summenwerte.Tagesendverbrauch"}],"id":325,"ack":false,"time":1651064390595},"_id":70540713} file is not defined 2022-04-27 14:59:50.604 - warn: history.0 (4085778) ReferenceError: file is not defined at /opt/iobroker/node_modules/iobroker.history/main.js:1552:59 at Array.forEach () at _delete (/opt/iobroker/node_modules/iobroker.history/main.js:1505:15) at deleteState (/opt/iobroker/node_modules/iobroker.history/main.js:1628:17) at processMessage (/opt/iobroker/node_modules/iobroker.history/main.js:326:9) at Object.message (/opt/iobroker/node_modules/iobroker.history/main.js:233:25) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5634:41) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:232:37) at processImmediate (internal/timers.js:464:21) -
@apollon77 Aber immer wieder gerne

EDIT:
Works like a charm!
Endlich kann ich meine Charts aufräumen.
Sind natürlich jetzt unendlich viele DPs mit Dp*8 null drin
-
@apollon77 Aber immer wieder gerne

EDIT:
Works like a charm!
Endlich kann ich meine Charts aufräumen.
Sind natürlich jetzt unendlich viele DPs mit Dp*8 null drin
-
@apollon77 sagte in Test Adapter History 2.0.0:
@homoran COngrats, you forund a bug :-)) Fixed ion GitHub
ich versuche es gleich nochmal

Ich habe gerade festgestellt, dass in einem Chart eine Linie fehlte.
Beim Versuch die Daten des zuständigen Datenpunktes anzusehen scheint history abgestürzt zu sein:2022-04-28 14:41:30.041 - error: host.iobroker-VM03 Caught by controller[0]: <--- Last few GCs ---> 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[0]: [2034430:0x597ac00] 38402 ms: Mark-sweep 1862.1 (1987.9) -> 1858.1 (1990.6) MB, 1777.6 / 0.0 ms (average mu = 0.225, current mu = 0.029) allocation failure scavenge might not succeed 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[0]: [2034430:0x597ac00] 40186 ms: Mark-sweep 1874.1 (1990.6) -> 1870.1 (1993.1) MB, 1712.1 / 0.0 ms (average mu = 0.147, current mu = 0.040) allocation failure scavenge might not succeed 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[0]: <--- JS stacktrace ---> 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[0]: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[1]: 1: 0xa3aaf0 node::Abort() [io.history.0] 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[2]: 2: 0x970199 node::FatalError(char const*, char const*) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[3]: 3: 0xbba45e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[4]: 4: 0xbba7d7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[5]: 5: 0xd769e5 [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[6]: 6: 0xd7756f [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[7]: 7: 0xd853ab v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[8]: 8: 0xd88f6c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[9]: 9: 0xd4e73d v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[10]: 10: 0xd4a999 v8::internal::FactoryBase::AllocateRawArray(int, v8::internal::AllocationType) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[11]: 11: 0xd4aa54 v8::internal::FactoryBase::NewFixedArrayWithFiller(v8::internal::Handle, int, v8::internal::Handle, v8::internal::AllocationType) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[12]: 12: 0xf80ffe v8::internal::Handle v8::internal::HashTable::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[13]: 13: 0xf81cf9 v8::internal::Handle v8::internal::BaseNameDictionary::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[14]: 14: 0xf35be1 v8::internal::JSObject::MigrateToMap(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, int) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[15]: 15: 0xf556cc v8::internal::LookupIterator::Delete() [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[16]: 16: 0xf2c55b v8::internal::JSReceiver::DeleteProperty(v8::internal::LookupIterator*, v8::internal::LanguageMode) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[17]: 17: 0x10b4600 v8::internal::Runtime::DeleteObjectProperty(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, v8::internal::LanguageMode) [io.history.0] 2022-04-28 14:41:30.045 - error: host.iobroker-VM03 Caught by controller[18]: 18: 0x10b673a v8::internal::Runtime_DeleteProperty(int, unsigned long*, v8::internal::Isolate*) [io.history.0] 2022-04-28 14:41:30.045 - error: host.iobroker-VM03 Caught by controller[19]: 19: 0x1448e19 [io.history.0] 2022-04-28 14:41:30.045 - warn: host.iobroker-VM03 instance system.adapter.history.0 terminated due to SIGABRTEDIT:
Habe bei dem Datenpunkt Logging deaktiviert und neu konfiguriert.
Seitdem loggt er anscheinend wieder, aber sobald ich mir die Werte ansehen will stürzt history ab -
@apollon77 sagte in Test Adapter History 2.0.0:
@homoran COngrats, you forund a bug :-)) Fixed ion GitHub
ich versuche es gleich nochmal

Ich habe gerade festgestellt, dass in einem Chart eine Linie fehlte.
Beim Versuch die Daten des zuständigen Datenpunktes anzusehen scheint history abgestürzt zu sein:2022-04-28 14:41:30.041 - error: host.iobroker-VM03 Caught by controller[0]: <--- Last few GCs ---> 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[0]: [2034430:0x597ac00] 38402 ms: Mark-sweep 1862.1 (1987.9) -> 1858.1 (1990.6) MB, 1777.6 / 0.0 ms (average mu = 0.225, current mu = 0.029) allocation failure scavenge might not succeed 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[0]: [2034430:0x597ac00] 40186 ms: Mark-sweep 1874.1 (1990.6) -> 1870.1 (1993.1) MB, 1712.1 / 0.0 ms (average mu = 0.147, current mu = 0.040) allocation failure scavenge might not succeed 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[0]: <--- JS stacktrace ---> 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[0]: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[1]: 1: 0xa3aaf0 node::Abort() [io.history.0] 2022-04-28 14:41:30.043 - error: host.iobroker-VM03 Caught by controller[2]: 2: 0x970199 node::FatalError(char const*, char const*) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[3]: 3: 0xbba45e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[4]: 4: 0xbba7d7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[5]: 5: 0xd769e5 [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[6]: 6: 0xd7756f [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[7]: 7: 0xd853ab v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[8]: 8: 0xd88f6c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[9]: 9: 0xd4e73d v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[10]: 10: 0xd4a999 v8::internal::FactoryBase::AllocateRawArray(int, v8::internal::AllocationType) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[11]: 11: 0xd4aa54 v8::internal::FactoryBase::NewFixedArrayWithFiller(v8::internal::Handle, int, v8::internal::Handle, v8::internal::AllocationType) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[12]: 12: 0xf80ffe v8::internal::Handle v8::internal::HashTable::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[13]: 13: 0xf81cf9 v8::internal::Handle v8::internal::BaseNameDictionary::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[14]: 14: 0xf35be1 v8::internal::JSObject::MigrateToMap(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, int) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[15]: 15: 0xf556cc v8::internal::LookupIterator::Delete() [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[16]: 16: 0xf2c55b v8::internal::JSReceiver::DeleteProperty(v8::internal::LookupIterator*, v8::internal::LanguageMode) [io.history.0] 2022-04-28 14:41:30.044 - error: host.iobroker-VM03 Caught by controller[17]: 17: 0x10b4600 v8::internal::Runtime::DeleteObjectProperty(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, v8::internal::LanguageMode) [io.history.0] 2022-04-28 14:41:30.045 - error: host.iobroker-VM03 Caught by controller[18]: 18: 0x10b673a v8::internal::Runtime_DeleteProperty(int, unsigned long*, v8::internal::Isolate*) [io.history.0] 2022-04-28 14:41:30.045 - error: host.iobroker-VM03 Caught by controller[19]: 19: 0x1448e19 [io.history.0] 2022-04-28 14:41:30.045 - warn: host.iobroker-VM03 instance system.adapter.history.0 terminated due to SIGABRTEDIT:
Habe bei dem Datenpunkt Logging deaktiviert und neu konfiguriert.
Seitdem loggt er anscheinend wieder, aber sobald ich mir die Werte ansehen will stürzt history ab -
@homoran Wie lange zurück schaust Du denn? Das ist ein "Out of memory" ... Ansonsten Debug wieder an und dann mal log von so einem crash senden
@apollon77 sagte in Test Adapter History 2.0.0:
Das ist ein "Out of memory"
Hatte ich gesehen
habe 4GB RAM zugewiesen und etwa 0,5GB free und 1,5 - 2 GB available@apollon77 sagte in Test Adapter History 2.0.0:
Wie lange zurück schaust Du denn?
erst drei Tage, dann nur noch 10 Minuten.
Allerdings loggt er (???) alle 6 Sekundenscheint in Zeile 119 loszugehen
-
@apollon77 sagte in Test Adapter History 2.0.0:
Das ist ein "Out of memory"
Hatte ich gesehen
habe 4GB RAM zugewiesen und etwa 0,5GB free und 1,5 - 2 GB available@apollon77 sagte in Test Adapter History 2.0.0:
Wie lange zurück schaust Du denn?
erst drei Tage, dann nur noch 10 Minuten.
Allerdings loggt er (???) alle 6 Sekundenscheint in Zeile 119 loszugehen
-
@apollon77 sagte in Test Adapter History 2.0.0:
Das ist ein "Out of memory"
Hatte ich gesehen
habe 4GB RAM zugewiesen und etwa 0,5GB free und 1,5 - 2 GB available@apollon77 sagte in Test Adapter History 2.0.0:
Wie lange zurück schaust Du denn?
erst drei Tage, dann nur noch 10 Minuten.
Allerdings loggt er (???) alle 6 Sekundenscheint in Zeile 119 loszugehen
-
Auf GitHub sind einige Fixes hinzugekommen und auch noch zwei neue Features:
- Bei storeState kann nun mittels dem Parameter "rule=true" festlegen das die Daten nicht direkt geloggt werden sondern alle Rules angewendet werden wie für jeden normalen Wert - inkl. Debounce u.ä. Bitte vorsichtig nutzen das nicht unabsichtlich Werte nicht geschrieben werden!
- Eine Einstellung pro Datenpunkt ist dazugekommen, mit der man angeben kann auf wie viele Stellen nach dem Komma die Werte beim lesen (GetHistory) gerundet werden.
-
@homoran Ich hab mal versucht was zu optimieren, aber das ist schwierig. versuch mal GitHub version. Sonst setzen wir einfach den Heap für deinen Prozess hoch
@apollon77 ich bekomme nicht mal einen sinnvollen debug-log zustande

2022-05-01 14:31:34.235 - info: host.iobroker-VM03 stopInstance system.adapter.history.0 (force=false, process=true) 2022-05-01 14:31:38.374 - error: host.iobroker-VM03 Caught by controller[0]: <--- Last few GCs ---> 2022-05-01 14:31:38.374 - error: host.iobroker-VM03 Caught by controller[0]: [4074178:0x543dc00] 60961 ms: Mark-sweep 1870.8 (1993.1) -> 1866.8 (1995.6) MB, 1798.0 / 0.0 ms (average mu = 0.216, current mu = 0.040) allocation failure scavenge might not succeed 2022-05-01 14:31:38.374 - error: host.iobroker-VM03 Caught by controller[0]: [4074178:0x543dc00] 62792 ms: Mark-sweep 1882.7 (1995.6) -> 1878.8 (1998.4) MB, 1761.4 / 0.0 ms (average mu = 0.139, current mu = 0.038) allocation failure scavenge might not succeed 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[0]: <--- JS stacktrace ---> 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[0]: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[1]: 1: 0xa3aaf0 node::Abort() [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[2]: 2: 0x970199 node::FatalError(char const*, char const*) [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[3]: 3: 0xbba45e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[4]: 4: 0xbba7d7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[5]: 5: 0xd769e5 [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[6]: 6: 0xd7756f [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[7]: 7: 0xd853ab v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[8]: 8: 0xd88f6c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[9]: 9: 0xd4e73d v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[10]: 10: 0xd4a999 v8::internal::FactoryBase::AllocateRawArray(int, v8::internal::AllocationType) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[11]: 11: 0xd4aa54 v8::internal::FactoryBase::NewFixedArrayWithFiller(v8::internal::Handle, int, v8::internal::Handle, v8::internal::AllocationType) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[12]: 12: 0xf80ffe v8::internal::Handle v8::internal::HashTable::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[13]: 13: 0xf81cf9 v8::internal::Handle v8::internal::BaseNameDictionary::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[14]: 14: 0xf35be1 v8::internal::JSObject::MigrateToMap(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, int) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[15]: 15: 0xf556cc v8::internal::LookupIterator::Delete() [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[16]: 16: 0xf2c55b v8::internal::JSReceiver::DeleteProperty(v8::internal::LookupIterator*, v8::internal::LanguageMode) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[17]: 17: 0x10b4600 v8::internal::Runtime::DeleteObjectProperty(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, v8::internal::LanguageMode) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[18]: 18: 0x10b673a v8::internal::Runtime_DeleteProperty(int, unsigned long*, v8::internal::Isolate*) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[19]: 19: 0x1448e19 [io.history.0] 2022-05-01 14:31:38.376 - warn: host.iobroker-VM03 instance system.adapter.history.0 terminated due to SIGABRT 2022-05-01 14:31:38.376 - info: host.iobroker-VM03 instance system.adapter.history.0 terminated with code NaN ()Habe dann immer relativ schnell den debug wieder abschalten wollen um das log nicht zu groß werden zu lassen, aber anscheinend kommt nach dem Absturz erst wieder dei Meldungen vom Neustart und dann..
wobei ich da auf die Schnelle nichts finde was zu dem DP gehört, den ich öffnen will:
Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauchübrigens bei allen DPs, die im 6Sekunden-Takt loggen gleiches Problem.
@apollon77 sagte in Test Adapter History 2.0.0:
Auf GitHub sind einige Fixes hinzugekommen und auch noch zwei neue Features:
aber immer noch 2.0.0??
-
@apollon77 ich bekomme nicht mal einen sinnvollen debug-log zustande

2022-05-01 14:31:34.235 - info: host.iobroker-VM03 stopInstance system.adapter.history.0 (force=false, process=true) 2022-05-01 14:31:38.374 - error: host.iobroker-VM03 Caught by controller[0]: <--- Last few GCs ---> 2022-05-01 14:31:38.374 - error: host.iobroker-VM03 Caught by controller[0]: [4074178:0x543dc00] 60961 ms: Mark-sweep 1870.8 (1993.1) -> 1866.8 (1995.6) MB, 1798.0 / 0.0 ms (average mu = 0.216, current mu = 0.040) allocation failure scavenge might not succeed 2022-05-01 14:31:38.374 - error: host.iobroker-VM03 Caught by controller[0]: [4074178:0x543dc00] 62792 ms: Mark-sweep 1882.7 (1995.6) -> 1878.8 (1998.4) MB, 1761.4 / 0.0 ms (average mu = 0.139, current mu = 0.038) allocation failure scavenge might not succeed 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[0]: <--- JS stacktrace ---> 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[0]: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[1]: 1: 0xa3aaf0 node::Abort() [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[2]: 2: 0x970199 node::FatalError(char const*, char const*) [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[3]: 3: 0xbba45e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[4]: 4: 0xbba7d7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[5]: 5: 0xd769e5 [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[6]: 6: 0xd7756f [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[7]: 7: 0xd853ab v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [io.history.0] 2022-05-01 14:31:38.375 - error: host.iobroker-VM03 Caught by controller[8]: 8: 0xd88f6c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[9]: 9: 0xd4e73d v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[10]: 10: 0xd4a999 v8::internal::FactoryBase::AllocateRawArray(int, v8::internal::AllocationType) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[11]: 11: 0xd4aa54 v8::internal::FactoryBase::NewFixedArrayWithFiller(v8::internal::Handle, int, v8::internal::Handle, v8::internal::AllocationType) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[12]: 12: 0xf80ffe v8::internal::Handle v8::internal::HashTable::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[13]: 13: 0xf81cf9 v8::internal::Handle v8::internal::BaseNameDictionary::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[14]: 14: 0xf35be1 v8::internal::JSObject::MigrateToMap(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, int) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[15]: 15: 0xf556cc v8::internal::LookupIterator::Delete() [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[16]: 16: 0xf2c55b v8::internal::JSReceiver::DeleteProperty(v8::internal::LookupIterator*, v8::internal::LanguageMode) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[17]: 17: 0x10b4600 v8::internal::Runtime::DeleteObjectProperty(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, v8::internal::LanguageMode) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[18]: 18: 0x10b673a v8::internal::Runtime_DeleteProperty(int, unsigned long*, v8::internal::Isolate*) [io.history.0] 2022-05-01 14:31:38.376 - error: host.iobroker-VM03 Caught by controller[19]: 19: 0x1448e19 [io.history.0] 2022-05-01 14:31:38.376 - warn: host.iobroker-VM03 instance system.adapter.history.0 terminated due to SIGABRT 2022-05-01 14:31:38.376 - info: host.iobroker-VM03 instance system.adapter.history.0 terminated with code NaN ()Habe dann immer relativ schnell den debug wieder abschalten wollen um das log nicht zu groß werden zu lassen, aber anscheinend kommt nach dem Absturz erst wieder dei Meldungen vom Neustart und dann..
wobei ich da auf die Schnelle nichts finde was zu dem DP gehört, den ich öffnen will:
Messwerte.0.Solaranlage.Momentanwerte.Eigenverbrauchübrigens bei allen DPs, die im 6Sekunden-Takt loggen gleiches Problem.
@apollon77 sagte in Test Adapter History 2.0.0:
Auf GitHub sind einige Fixes hinzugekommen und auch noch zwei neue Features:
aber immer noch 2.0.0??
@homoran wo kommen denn diese massiv vielen gehHistory calls her? Das sind ja mehrere pro Sekunde???
Vor allem
Für den gleichen Datenpunkt. Weil am Ende ist’s sehr einfach: jeder der calls lädt mindestens die Daten des gesamten Tages und dann werden die auf die relevante Zeit gekürzt quasi. Ich schaue nochmal ob man das optimieren kannUnd ja. GitHub weiter auf 2.0.0
