NEWS
Schieberegister für gleitenden Mittelwert Smartmeter
-
Hallo,
der gleitende Mittelwert ist mit blockly möglich. Hiermit kann man z.B. die recht häufigen Smartmeter Werte beruhigen.
Habe 10 Werte angelegt und diese schiebt das Script dann durch bis sie hinten wieder "runterfallen".

-
Hallo,
der gleitende Mittelwert ist mit blockly möglich. Hiermit kann man z.B. die recht häufigen Smartmeter Werte beruhigen.
Habe 10 Werte angelegt und diese schiebt das Script dann durch bis sie hinten wieder "runterfallen".

-
@uwessmarthome das geht viel einfacher mit Listen

die letzten beiden Zeilen können auch noch vereinfacht werden, da gibtes noch einenen nimm den Mittelwert block
-
@uwessmarthome das geht viel einfacher mit Listen

die letzten beiden Zeilen können auch noch vereinfacht werden, da gibtes noch einenen nimm den Mittelwert block
ja das habe ich am Anfang auch so gemacht, leider ist es von der Messdauer abhängig. Wie ist diese hier definiert? Da geing dann ja nur zeitabhängig.
Bei meiner Lösung ist es zeitlich unabhängig und jerder neue Wert erzeugt auch gleich einen neuen Mittelwert. Bei deiner Lösung wird der Mittelwert nach der Messdauer ezeugt?Grüsse
-
ja das habe ich am Anfang auch so gemacht, leider ist es von der Messdauer abhängig. Wie ist diese hier definiert? Da geing dann ja nur zeitabhängig.
Bei meiner Lösung ist es zeitlich unabhängig und jerder neue Wert erzeugt auch gleich einen neuen Mittelwert. Bei deiner Lösung wird der Mittelwert nach der Messdauer ezeugt?Grüsse
@uwessmarthome sagte: von der Messdauer abhängig. Wie ist diese hier definiert?
Wie man am Vergleich sieht: Anzahl der Werte in der Liste.
@uwessmarthome sagte in Schieberegister für gleitenden Mittelwert Smartmeter:
leider ist es von der Messdauer abhängig.
Der Trigger kann der gleiche wie in Deiner Lösung sein.
-
ja das habe ich am Anfang auch so gemacht, leider ist es von der Messdauer abhängig. Wie ist diese hier definiert? Da geing dann ja nur zeitabhängig.
Bei meiner Lösung ist es zeitlich unabhängig und jerder neue Wert erzeugt auch gleich einen neuen Mittelwert. Bei deiner Lösung wird der Mittelwert nach der Messdauer ezeugt?Grüsse
@uwessmarthome sagte in Schieberegister für gleitenden Mittelwert Smartmeter:
Wie ist diese hier definiert?
Ich habe den gleichen Trigger wie du.
Die Messdauer wird dann über die Anzahl Werte definiert, die ja in einheitlichem Abstand kommen (bei mir in 6 Sekunden Abstand)
Also Mess"dauer" [Anzahl] x6 Sekunden ist Zeit -
@uwessmarthome sagte in Schieberegister für gleitenden Mittelwert Smartmeter:
Bei meiner Lösung ist es zeitlich unabhängig und jerder neue Wert erzeugt auch gleich einen neuen Mittelwert.
Das ist sie nur wenn du sicher stellen kannst das dein Trigger in regelmässigen Abständen aktualisiert wird. Das ist aber nicht immer so. Bei unregelmässigen Triggern wird das Skript aber nur unwesentlich komplexer:

Das Beispiel berechnet den Durchschnitt über die letzte Stunde, wobei bei jeder Wertänderung neu berechnet wird, sprich wenn ein Wert über eine Stunde unverändert bleibt passt der Durchschnitt erst bei der nächsten Änderung. Ansonsten ist egal wie schnell die Wertänderungen herein kommen.
A.
-
@uwessmarthome sagte in Schieberegister für gleitenden Mittelwert Smartmeter:
Bei meiner Lösung ist es zeitlich unabhängig und jerder neue Wert erzeugt auch gleich einen neuen Mittelwert.
Das ist sie nur wenn du sicher stellen kannst das dein Trigger in regelmässigen Abständen aktualisiert wird. Das ist aber nicht immer so. Bei unregelmässigen Triggern wird das Skript aber nur unwesentlich komplexer:

Das Beispiel berechnet den Durchschnitt über die letzte Stunde, wobei bei jeder Wertänderung neu berechnet wird, sprich wenn ein Wert über eine Stunde unverändert bleibt passt der Durchschnitt erst bei der nächsten Änderung. Ansonsten ist egal wie schnell die Wertänderungen herein kommen.
A.
@asgothian
Auch eine gute Lösung, danke für diesen guten Vorschlag.Grüsse
-
@uwessmarthome das geht viel einfacher mit Listen

die letzten beiden Zeilen können auch noch vereinfacht werden, da gibtes noch einenen nimm den Mittelwert block
@homoran sagte in Schieberegister für gleitenden Mittelwert Smartmeter:
@uwessmarthome das geht viel einfacher mit Listen

die letzten beiden Zeilen können auch noch vereinfacht werden, da gibt es noch einenen nimm den Mittelwert block
Ich werde leider noch nicht ganz schlau mit dieser "Listenfunktion".
Wo mache ich einen Denkfehler. Bezug_Test ist einfach ein erstellter number Datenpunkt unter userdata.0., den ich manuell mit einer Zahl belegen kann. Ich dachte es würde nun eine Liste erstellt aus max. 10 Zahlen, wo immer die letzte Zahl neu dazu kommt und die erste gelöscht wird:
javascript.0 2022-04-23 10:28:33.771 error (357) at processImmediate (internal/timers.js:464:21) javascript.0 2022-04-23 10:28:33.771 error (357) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56) javascript.0 2022-04-23 10:28:33.771 error (357) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:567:29) javascript.0 2022-04-23 10:28:33.770 error (357) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1167:38) javascript.0 2022-04-23 10:28:33.770 error (357) at Object.<anonymous> (script.js.common.Energie.Bezug-Einspeise_mittel:8:20) javascript.0 2022-04-23 10:28:33.769 error (357) script.js.common.Energie.Bezug-Einspeise_mittel: TypeError: Cannot read property 'push' of undefined -
@homoran sagte in Schieberegister für gleitenden Mittelwert Smartmeter:
@uwessmarthome das geht viel einfacher mit Listen

die letzten beiden Zeilen können auch noch vereinfacht werden, da gibt es noch einenen nimm den Mittelwert block
Ich werde leider noch nicht ganz schlau mit dieser "Listenfunktion".
Wo mache ich einen Denkfehler. Bezug_Test ist einfach ein erstellter number Datenpunkt unter userdata.0., den ich manuell mit einer Zahl belegen kann. Ich dachte es würde nun eine Liste erstellt aus max. 10 Zahlen, wo immer die letzte Zahl neu dazu kommt und die erste gelöscht wird:
javascript.0 2022-04-23 10:28:33.771 error (357) at processImmediate (internal/timers.js:464:21) javascript.0 2022-04-23 10:28:33.771 error (357) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56) javascript.0 2022-04-23 10:28:33.771 error (357) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:567:29) javascript.0 2022-04-23 10:28:33.770 error (357) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1167:38) javascript.0 2022-04-23 10:28:33.770 error (357) at Object.<anonymous> (script.js.common.Energie.Bezug-Einspeise_mittel:8:20) javascript.0 2022-04-23 10:28:33.769 error (357) script.js.common.Energie.Bezug-Einspeise_mittel: TypeError: Cannot read property 'push' of undefined -
@lobomau Du musst deine Liste schon initialisieren.
Am besten via den Baustein

Ansonsten weiss Blockly nicht das "Ueberschussliste" eine Liste sein soll.
A.
Edit: habe es hinbekommen


javascript.0 2022-04-23 13:01:05.561 info (357) script.js.common.Energie.Bezug-Einspeise_mittel: [3,5,7,22,1,-5,66,120,-50] javascript.0 2022-04-23 13:01:01.153 info (357) script.js.common.Energie.Bezug-Einspeise_mittel: [3,5,7,22,1,-5,66,120] javascript.0 2022-04-23 13:00:57.853 info (357) script.js.common.Energie.Bezug-Einspeise_mittel: [3,5,7,22,1,-5,66] javascript.0 2022-04-23 13:00:51.799 info (357) script.js.common.Energie.Bezug-Einspeise_mittel: [3,5,7,22,1,-5] javascript.0 2022-04-23 13:00:48.196 info (357) script.js.common.Energie.Bezug-Einspeise_mittel: [3,5,7,22,1] javascript.0 2022-04-23 13:00:44.491 info (357) script.js.common.Energie.Bezug-Einspeise_mittel: [3,5,7,22] javascript.0 2022-04-23 13:00:41.171 info (357) script.js.common.Energie.Bezug-Einspeise_mittel: [3,5,7]
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden