# Hilfe! Problem mit der Aggregation?

**URL:** <https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630>\
**Category:** Configuration\
**Created:** [25. Oktober 2021 um 17:54 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630 "2021-10-25T17:54:08Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [29. Oktober 2021 um 03:35 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/21 "2021-10-29T03:35:02Z")

</div>

@cicoub13 Ich kann deinen «&nbsp;Maximum Call Stack&nbsp;» reproduzieren, wenn ich versuche, ein Array mit 150.000 Sensorwerten zu chunken :o Das bedeutet, dass du einen Sensor hast, der mehr als 150.000 Werte gesendet hat. Aha, so einen Fall hatten wir sogar bei @Terdious nicht, interessant

 ![Screenshot 2021-10-29 at 11.33.44](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/faaa6c7217cfcbd24a8647fbb2fdfa50b5691579.png)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [29. Oktober 2021 um 03:51 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/22 "2021-10-29T03:51:07Z")

</div>

Gut, ich habe eine leistungsfähigere Implementierung gefunden als die, die wir derzeit haben, und die «&nbsp;slice&nbsp;» statt «&nbsp;splice&nbsp;» verwendet, was es ermöglicht, das Array nicht vorher klonen zu müssen, da das Array nicht mutiert wird.

Ich habe mich auf Folgendes gestützt:

[https://stackoverflow.com/questions/52750661/fast-array-chunking-in-node-js](https://stackoverflow.com/questions/52750661/fast-array-chunking-in-node-js)

Ein Leistungstest bestätigt, dass die alte Implementierung 69,6 % langsamer ist als die neue, und vor allem hat die neue keine Probleme mit dem Maximum Call Stack, da das Array nicht geklont wird.

 ![Screenshot 2021-10-29 at 11.49.14](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/05b0c948596b92d6891b9f58c388ac83c321a0bf.png)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [29. Oktober 2021 um 03:59 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/23 "2021-10-29T03:59:49Z")

</div>

Hier ist der PR für alle, die interessiert sind:

> <https://github.com/GladysAssistant/Gladys/pull/1340/files>
>
> \### Pull Request check-list
> 
> To ensure your Pull Request can be accepted as fa…st as possible, make sure to review and check all of these items:
> 
> \- \[x\] If your changes affects code, did your write the tests?
> \- \[x\] Are tests passing? (\`npm test\` on both front/server)
> \- \[x\] Is the linter passing? (\`npm run eslint\` on both front/server)
> \- \[x\] Did you run prettier? (\`npm run prettier\` on both front/server)
> \- \[\] If you are adding a new features/services, did you run integration comparator? (\`npm run compare-translations\` on front)
> \- \[\] Did you test this pull request in real life? With real devices? If this development is a big feature or a new service, we recommend that you provide a Docker image to \[the community\](https://community.gladysassistant.com/) for testing before merging.
> \- \[\] If your changes modify the API (REST or Node.js), did you modify the API documentation? (Documentation is based on comments in code)
> \- \[\] If you are adding a new features/services which needs explanation, did you modify the user documentation? See \[the GitHub repo\](https://github.com/GladysAssistant/v4-website) and the \[website\](https://gladysassistant.com).
> \- \[\] Did you add fake requests data for the demo mode (\`front/src/config/demo.js\`) so that the demo website is working without a backend? (if needed) See \[https://demo.gladysassistant.com\](https://demo.gladysassistant.com).
> 
> NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open.
> 
> \### Description of change
> 
> Please provide a description of the change here. It's always best with screenshots, so don't hesitate to add some!

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [29. Oktober 2021 um 04:35 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/24 "2021-10-29T04:35:48Z")

</div>

Ich habe den PR gemerged und einen Build auf dem Tag «&nbsp;dev&nbsp;» gestartet, damit wir sehen können, ob das dein Problem löst @cicoub13 🙂 (auf Docker wird es wie gewohnt unter `gladysassistant/gladys:dev` verfügbar sein)

Der Build ist hier:

[https://github.com/GladysAssistant/Gladys/actions/runs/1397530669](https://github.com/GladysAssistant/Gladys/actions/runs/1397530669)

Das wird etwa eine Stunde dauern 🙂

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [29. Oktober 2021 um 05:59 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/25 "2021-10-29T05:59:10Z")

</div>

> [@pierre-gilles](#):
>
> Aus Neugier, wie viele deviceFeatureState hast du in Gladys? Und wie viele pro deviceFeature?

792K deviceFeatureState  
5 Features mit 124K Einträgen - Sie sind alle mit einer Steckdose verbunden 😱 (es ist dieses Modell [Tuya TS0121\_plug control via MQTT | Zigbee2MQTT](https://www.zigbee2mqtt.io/devices/TS0121_plug.html))  
5 Features mit 15K Einträgen - Verbunden mit einem Bewegungsmelder (der auch das Licht misst)

Die Anzahl der Einträge pro Tag ist recht regelmäßig und ich habe nur 3 Monate gleitend gespeichert.

> [@pierre-gilles](#):
>
> Der Build ist da

Ich teste das heute

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [29. Oktober 2021 um 06:07 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/26 "2021-10-29T06:07:15Z")

</div>

> [@pierre-gilles](#):
>
> Kannst du vielleicht mal schauen, was die API @cicoub13 zurückgibt?

Hier ist, was die API für dieses Problem zurückgibt:

`[{"id":"c5bac8c2-5a49-4f7c-9ad8-0e367b427df8","type":"hourly-device-state-aggregate","status":"failed","progress":52,"data":{"error_type":"purged-when-restarted"},"created_at":"2021-10-28 09:14:48.379 +00:00","updated_at":"2021-10-29 06:03:07.825 +00:00"},{"id":"83bca935-43d3-4177-ba38-e51a16c36ff6","type":"monthly-device-state-aggregate","status":"success","progress":97,"data":{},"created_at":"2021-10-28 09:04:14.845 +00:00","updated_at":"2021-10-28 09:04:16.830 +00:00"},{"id":"6f15c4b3-5acb-4747-88b3-730af6fdecc4","type":"daily-device-state-aggregate","status":"success","progress":97,"data":{},"created_at":"2021-10-28 09:04:12.809 +00:00","updated_at":"2021-10-28 09:04:14.837 +00:00"},{"id":"2e0b5f3e-bf82-4a8c-a4c5-d601a209a10b","type":"hourly-device-state-aggregate","status":"failed","progress":52,"data":{"error_type":"unknown-error","error":"Error: RangeError: Maximum call stack size exceeded\n at chunk (/src/server/utils/chunks.js:11:26)\n at /src/server/lib/device/device.calculcateAggregateChildProcess.js:147:22\n"},"created_at":"2021-10-28 09:03:22.151 +00:00","updated_at":"2021-10-28 09:04:12.802 +00:00"}]`

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [29. Oktober 2021 um 06:31 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/27 "2021-10-29T06:31:26Z")

</div>

> [@cicoub13](#):
>
> 792K deviceFeatureState

Sollte man die Zigbee2Mqtt-Integration so ändern, dass sie den Wert nicht speichert, wenn er sich nicht geändert hat? Das wäre schade, denn man könnte Informationen verlieren (keine Veränderung ist auch eine Information).

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [1. November 2021 um 01:29 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/28 "2021-11-01T01:29:25Z")

</div>

> [@cicoub13](#):
>
> Ich teste das heute

Konntest du es am Ende testen? 🙂

> [@cicoub13](#):
>
> Hier ist, was die API für dieses Problem zurückgibt:

Sehr seltsam, das sieht gut aus!

> [@cicoub13](#):
>
> Sollte man die Zigbee2Mqtt-Integration so ändern, dass sie den Wert nicht speichert, wenn er sich nicht geändert hat? Das wäre schade, denn auch die Nicht-Änderung ist eine Information

Ich denke nicht, tatsächlich ist es wichtig, die Werte auch dann zu behalten, wenn sie sich nicht geändert haben.

Andererseits könnte man in der UI das Attribut «&nbsp;keep\_history&nbsp;» jedes Features anzeigen (in Form eines Schaltknopfes), um dem Benutzer eventuell die Möglichkeit zu geben, den Verlauf bestimmter zu ausführlicher Geräte nicht zu speichern und/oder wo sie den Verlauf nicht interessiert:

> <https://github.com/GladysAssistant/Gladys/blob/master/server/models/device_feature.js#L51>

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [1. November 2021 um 10:41 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/29 "2021-11-01T10:41:55Z")

</div>

> [@pierre-gilles](#):
>
> Konntest du es am Ende testen?

Ja, aber die Aggregation bleibt bei 52% stecken (anschließend verliere ich die Kontrolle über meinen RPI 3B+).  
Der CPU läuft auf 100% und der RAM ist voll. Und es endet nie.

Ich habe es versucht, indem ich die Zustände der beiden ausführlichen Geräte (die ich nicht für die Grafiken verwende) gelöscht habe, und es funktioniert. Ich denke, du kannst deine Optimierung in master lassen.  
Ich werde wirklich in einen RPI4 und eine SSD investieren müssen 😉

Vielen Dank auf jeden Fall für die Untersuchung und die Korrektur 👍

Ich habe ein Issue erstellt, um die Option keep\_history zu behalten [Zigbee2Mqtt - Add option keep\_history when adding device · Issue #1344 · GladysAssistant/Gladys · GitHub](https://github.com/GladysAssistant/Gladys/issues/1344)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [2. November 2021 um 01:21 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/30 "2021-11-02T01:21:17Z")

</div>

> [@cicoub13](#):
>
> Ja, aber die Aggregation bleibt bei 52% stecken (danach verliere ich die Kontrolle über meinen RPI 3B+).  
> Der CPU läuft auf 100% und der RAM ist voll. Und es endet nie.

Ach Mist, wenn du nur 1GB RAM hast und ein Teil bereits von anderen Dingen belegt ist, kann es sein, dass Gladys versucht, 130.000 Sensorwerte in den RAM zu laden und diese Daten stündlich zu aggregieren, was den RAM überlasten und somit nie zum Abschluss kommen kann…

Gibt es in der UI eine klare Fehlermeldung, wenn es ein RAM-Problem gibt?

> [@cicoub13](#):
>
> Ich habe es versucht, indem ich die Zustände der beiden umständlichen Geräte (die ich nicht für die Diagramme verwende) gelöscht habe, und es funktioniert.

Ok, gut! Ansonsten kannst du Gladys auch anweisen, in den Einstellungen nur die letzten drei Monate der Sensorwerte zu behalten 🙂

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [2. November 2021 um 10:45 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/31 "2021-11-02T10:45:12Z")

</div>

> [@pierre-gilles](#):
>
> Gibt es in der UI eine klare Fehlermeldung, wenn es ein RAM-Problem gibt?

Nein, es kommt nie zu einem Fehler.

> [@pierre-gilles](#):
>
> Ansonsten kannst du Gladys auch anweisen, in den Einstellungen nur die letzten drei Monate der Sensorwerte zu behalten

Ich werde das so machen, bis die Entwicklung abgeschlossen ist, die es ermöglichen wird, die Werte für diese beiden Geräte nicht zu speichern.

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [2. November 2021 um 17:40 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/32 "2021-11-02T17:40:33Z")

</div>

Falls es zu blockierend ist, ändere den keep history in der Datenbank.

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [25. November 2021 um 11:48 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/33 "2021-11-25T11:48:51Z")

</div>

Ich habe Gladys neu gestartet, um zu sehen, und habe immer noch die gleichen Fehler:

```bash
2021-11-25T12:46:18+0100 <warn> device.calculateAggregate.js:95 (Socket.<anonymous>) device.calculateAggregate stderr: TypeError: Cannot read property '0' of undefined
    at calculateTriangleArea (/src/server/node_modules/downsample/index.js:69:26)
    at LTTBIndexesForBuckets (/src/server/node_modules/downsample/index.js:662:18)
    at /src/server/node_modules/downsample/index.js:690:34
    at /src/server/lib/device/device.calculcateAggregateChildProcess.js:119:27
    at Map.forEach (<anonymous>)
    at /src/server/lib/device/device.calculcateAggregateChildProcess.js:111:35

2021-11-25T12:46:18+0100 <warn> device.calculateAggregate.js:101 (ChildProcess.<anonymous>) device.calculateAggregate: Exiting child process with code 1
2021-11-25T12:46:18+0100 <error> device.onHourlyDeviceAggregateEvent.js:22 (DeviceManager.onHourlyDeviceAggregateEvent) Error: TypeError: Cannot read property '0' of undefined
    at calculateTriangleArea (/src/server/node_modules/downsample/index.js:69:26)
    at LTTBIndexesForBuckets (/src/server/node_modules/downsample/index.js:662:18)
    at /src/server/node_modules/downsample/index.js:690:34
    at /src/server/lib/device/device.calculcateAggregateChildProcess.js:119:27
    at Map.forEach (<anonymous>)
    at /src/server/lib/device/device.calculcateAggregateChildProcess.js:111:35

    at ChildProcess.<anonymous> (/src/server/lib/device/device.calculateAggregate.js:102:23)
    at ChildProcess.emit (events.js:400:28)
    at maybeClose (internal/child_process.js:1058:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:293:5)
2021-11-25T12:46:18+0100 <info> device.calculateAggregate.js:38 (DeviceManager.calculateAggregate) Calculating aggregates device feature state for interval daily
2021-11-25T12:46:58+0100 <warn> device.calculateAggregate.js:95 (Socket.<anonymous>) device.calculateAggregate stderr: TypeError: Cannot read property '0' of undefined
    at calculateTriangleArea (/src/server/node_modules/downsample/index.js:69:26)
    at LTTBIndexesForBuckets (/src/server/node_modules/downsample/index.js:662:18)
    at /src/server/node_modules/downsample/index.js:690:34
    at /src/server/lib/device/device.calculcateAggregateChildProcess.js:119:27
    at Map.forEach (<anonymous>)
    at /src/server/lib/device/device.calculcateAggregateChildProcess.js:111:35

2021-11-25T12:46:58+0100 <warn> device.calculateAggregate.js:101 (ChildProcess.<anonymous>) device.calculateAggregate: Exiting child process with code 1
2021-11-25T12:46:58+0100 <error> device.onHourlyDeviceAggregateEvent.js:27 (DeviceManager.onHourlyDeviceAggregateEvent) Error: TypeError: Cannot read property '0' of undefined
    at calculateTriangleArea (/src/server/node_modules/downsample/index.js:69:26)
    at LTTBIndexesForBuckets (/src/server/node_modules/downsample/index.js:662:18)
    at /src/server/node_modules/downsample/index.js:690:34
    at /src/server/lib/device/device.calculcateAggregateChildProcess.js:119:27
    at Map.forEach (<anonymous>)
    at /src/server/lib/device/device.calculcateAggregateChildProcess.js:111:35

    at ChildProcess.<anonymous> (/src/server/lib/device/device.calculateAggregate.js:102:23)
    at ChildProcess.emit (events.js:400:28)
    at maybeClose (internal/child_process.js:1058:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:293:5)
2021-11-25T12:46:58+0100 <info> device.calculateAggregate.js:38 (DeviceManager.calculateAggregate) Calculating aggregates device feature state for interval monthly

```

Falls das bei der Untersuchung hilft, kann ich dir meine Datenbank senden oder besondere Analysen durchführen.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [25. November 2021 um 12:08 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/34 "2021-11-25T12:08:57Z")

</div>

@lmilcent Ich gebe zu, ich hatte diesen Bug komplett vergessen! Ich kann ihn bei mir nicht reproduzieren, aber nach deinen Logs sieht es nach einem bestimmten Datensatz aus, der die von uns verwendete Downsampling-Bibliothek (downsample auf npm) zum Absturz bringt.

Könntest du bitte ein GitHub-Issue im Gladys-Repo erstellen (sonst vergesse ich es in 10 Minuten wieder :p) und mir eine Datenbank schicken, in der das Problem tatsächlich auftritt (das wäre super zum Debuggen 🙂 )

Danke!

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [25. November 2021 um 16:16 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/35 "2021-11-25T16:16:39Z")

</div>

> <https://github.com/GladysAssistant/Gladys/issues/1379>
>
> As discussed on the forum: https://community.gladysassistant.com/t/help-probleme…-avec-lagregation/6630/33?u=lmilcent
> 
> \*\*Describe the bug\*\*
> Aggreation seems not to work correctly sometimes (my graphics seems to work though):
> 
> \`\`\`bash
> 2021-11-25T12:46:18+0100 \<warn\> device.calculateAggregate.js:95 (Socket.\<anonymous\>) device.calculateAggregate stderr: TypeError: Cannot read property '0' of undefined
> at calculateTriangleArea (/src/server/node\_modules/downsample/index.js:69:26)
> at LTTBIndexesForBuckets (/src/server/node\_modules/downsample/index.js:662:18)
> at /src/server/node\_modules/downsample/index.js:690:34
> at /src/server/lib/device/device.calculcateAggregateChildProcess.js:119:27
> at Map.forEach (\<anonymous\>)
> at /src/server/lib/device/device.calculcateAggregateChildProcess.js:111:35
> 
> 2021-11-25T12:46:18+0100 \<warn\> device.calculateAggregate.js:101 (ChildProcess.\<anonymous\>) device.calculateAggregate: Exiting child process with code 1
> 2021-11-25T12:46:18+0100 \<error\> device.onHourlyDeviceAggregateEvent.js:22 (DeviceManager.onHourlyDeviceAggregateEvent) Error: TypeError: Cannot read property '0' of undefined
> at calculateTriangleArea (/src/server/node\_modules/downsample/index.js:69:26)
> at LTTBIndexesForBuckets (/src/server/node\_modules/downsample/index.js:662:18)
> at /src/server/node\_modules/downsample/index.js:690:34
> at /src/server/lib/device/device.calculcateAggregateChildProcess.js:119:27
> at Map.forEach (\<anonymous\>)
> at /src/server/lib/device/device.calculcateAggregateChildProcess.js:111:35
> 
> at ChildProcess.\<anonymous\> (/src/server/lib/device/device.calculateAggregate.js:102:23)
> at ChildProcess.emit (events.js:400:28)
> at maybeClose (internal/child\_process.js:1058:16)
> at Process.ChildProcess.\_handle.onexit (internal/child\_process.js:293:5)
> 2021-11-25T12:46:18+0100 \<info\> device.calculateAggregate.js:38 (DeviceManager.calculateAggregate) Calculating aggregates device feature state for interval daily
> 2021-11-25T12:46:58+0100 \<warn\> device.calculateAggregate.js:95 (Socket.\<anonymous\>) device.calculateAggregate stderr: TypeError: Cannot read property '0' of undefined
> at calculateTriangleArea (/src/server/node\_modules/downsample/index.js:69:26)
> at LTTBIndexesForBuckets (/src/server/node\_modules/downsample/index.js:662:18)
> at /src/server/node\_modules/downsample/index.js:690:34
> at /src/server/lib/device/device.calculcateAggregateChildProcess.js:119:27
> at Map.forEach (\<anonymous\>)
> at /src/server/lib/device/device.calculcateAggregateChildProcess.js:111:35
> 
> 2021-11-25T12:46:58+0100 \<warn\> device.calculateAggregate.js:101 (ChildProcess.\<anonymous\>) device.calculateAggregate: Exiting child process with code 1
> 2021-11-25T12:46:58+0100 \<error\> device.onHourlyDeviceAggregateEvent.js:27 (DeviceManager.onHourlyDeviceAggregateEvent) Error: TypeError: Cannot read property '0' of undefined
> at calculateTriangleArea (/src/server/node\_modules/downsample/index.js:69:26)
> at LTTBIndexesForBuckets (/src/server/node\_modules/downsample/index.js:662:18)
> at /src/server/node\_modules/downsample/index.js:690:34
> at /src/server/lib/device/device.calculcateAggregateChildProcess.js:119:27
> at Map.forEach (\<anonymous\>)
> at /src/server/lib/device/device.calculcateAggregateChildProcess.js:111:35
> 
> at ChildProcess.\<anonymous\> (/src/server/lib/device/device.calculateAggregate.js:102:23)
> at ChildProcess.emit (events.js:400:28)
> at maybeClose (internal/child\_process.js:1058:16)
> at Process.ChildProcess.\_handle.onexit (internal/child\_process.js:293:5)
> 2021-11-25T12:46:58+0100 \<info\> device.calculateAggregate.js:38 (DeviceManager.calculateAggregate) Calculating aggregates device feature state for interval monthly
> \`\`\`
> 
> \*\*To Reproduce\*\*
> I really don't know, it could be cause by my DB (sent by email directly).
> 
> 
> \*\*Your Gladys installation (please complete the following information):\*\*
> 
> \- Raspberry Pi installation: Pi 4
> 
> 
> \*\*Desktop (please complete the following information):\*\*
> 
> \- OS: W10
> \- Browser: Chrome & Firefox

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [25. November 2021 um 16:19 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/36 "2021-11-25T16:19:03Z")

</div>

@lmilcent Danke! Ich habe den Titel des Issues bearbeitet. (Der Bug NaN ist ein anderer Bug, nichts damit zu tun 🙂 )

---

<div class="post-metadata">

**Author:** ![Albenss](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/albenss/32/3916_2.png) [@Albenss](https://community.gladysassistant.com/u/Albenss)\
**Post date:** [1. Dezember 2021 um 14:26 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/37 "2021-12-01T14:26:36Z")

</div>

Ich habe denselben Fehler auf meiner Seite, was die Aggregation betrifft. Bei mir scheint das Problem von den Daten der Kryptowährungen (Shiba) zu kommen, die immer unter 0 liegen. Ich frage mich, ob das nicht an der Anzahl der Dezimalstellen liegt, die in der Berechnung berücksichtigt werden, die die Bibliothek für die Aggregation verwendet:

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/7/74909cfdf8abb7e63bb55578cff00e72663ea030.png)

Es funktioniert in der letzten Stunde, weil ich die Informationen alle 5 Minuten abrufe (also wahrscheinlich keine Aggregation), aber nicht über den Tag oder den Monat.

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [1. Dezember 2021 um 16:33 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/38 "2021-12-01T16:33:44Z")

</div>

Danke für deine Nachricht @Albenss, ich denke, dass einige Aggregationen aufgrund eines ähnlichen Falls schiefgelaufen sein könnten.  
Zum Beispiel erhielt mein MQTT-Gerät zur Steuerung der Anwesenheit vorher «&nbsp;present&nbsp;» und jetzt «&nbsp;1&nbsp;».

Aber ich habe die Änderung schon vor mehreren Monaten vorgenommen, und es gibt immer noch Fehler.

Generell sollte der Fehler genauer sein 😇

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [3. Dezember 2021 um 10:00 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/39 "2021-12-03T10:00:03Z")

</div>

@lmilcent Ich habe gerade deine Datenbank angesehen, die du mir geschickt hast, und bin sehr überrascht von ihrem Inhalt 😃

Du hast device\_feature\_state-Werte, deren Wert «&nbsp;NaN&nbsp;» (Not a Number) ist. Es ist sehr seltsam, dass diese überhaupt eingefügt wurden, da das Feld ein «&nbsp;double precision&nbsp;» ist und «&nbsp;NaN&nbsp;» kein «&nbsp;double precision&nbsp;» ist…

Natürlich lässt das die Aggregation, die numerische Werte erwartet und keinen String, abstürzen.

 ![Screenshot 2021-12-03 at 10.46.21](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/384dd467c3b8a2faafe7c94f0325f55ae32e8c0f.jpeg)

Nach einer Untersuchung stammen diese Werte aus der Zigbee2mqtt-Integration.

Ich habe ein GitHub-Issue erstellt, damit wir das Problem beheben:

- Eine Datenbankmigration hinzufügen, um diese Zeilen zu bereinigen, die dort nicht sein sollten
- Untersuchen, warum die Validierung und die Datenbank diese Werte akzeptiert haben, die keine Zahlen sind.

> <https://github.com/GladysAssistant/Gladys/issues/1392>
>
> \- \[\] In Zigbee2mqtt integration, fix what could cause that
> \- \[\] In Gladys Cor…e, it shouldn't be possible to accept NaN values
> \- \[\] Clean existing NaN values in a DB migration
> 
> https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/39?u=pierre-gilles

In der Zwischenzeit, @lmilcent und @Albenss, ist hier der SQL-Query, um eure Datenbanken zu reparieren:

```auto
DELETE FROM t_device_feature_state WHERE value = 'NaN';

```

@lmilcent Allgemeiner gesagt, ich weiß nicht, ob du alle deine historischen Sensordaten behalten möchtest (du behältst alle), aber ich würde dir empfehlen, einige sehr ausführliche deviceFeatures zu bereinigen, da derzeit für die Aggregation auf meinem Mac einige Sensoren so viele Werte enthalten, dass mehr als 1,5 GB RAM für die vollständige Aggregation benötigt werden (da es sich um die erste Aggregation handelt, beginnt sie von vorne. Das wird später nicht der Fall sein).

Ansonsten funktioniert es bei mir auf deiner Datenbank, nachdem die NaN-Werte entfernt wurden, sehr gut:

 ![Screenshot 2021-12-03 at 10.57.17](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/369b717e4d0d127814b9814b3450ba0b1ad0a871.jpeg)

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [3. Dezember 2021 um 11:16 UTC](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630/40 "2021-12-03T11:16:40Z")

</div>

Ich habe mit dem Löschen der falschen Werte begonnen. Ich werde mich auch um die anderen Geräte kümmern, die zu viele Daten liefern… Funktion geplant? 😉

[Vorherige Seite](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630.md?page=1)

[Nächste Seite](https://community.gladysassistant.com/t/help-probleme-avec-lagregation/6630.md?page=3)
