NEWS
Array mit Werten schieben und addieren
-
Hallo zusammen,
ich bekomme von meiner eigenen Wetterstation alle 3 Sekunden Messwerte von verschiedenen Sensoren übermittelt. In diesem Fall geht es um die Auswertung einer Kippwaage zur Berechnung der Regenmenge. Also Wert erhalte ich die Anzahl wie oft die Kippwaage ausgelöst hat innerhalb der letzten 3 Sekunden. Ich würde nun gerne 4 Auswertungen durchführen. Regenmenge der letzten Minuten, der letzten 10 Minuten, der letzten Stunde und der letzten 24 Stunden. Bevor ich auf iobroker umgestiegen bin habe ich das in C# so gelöst, dass eine Minuten alle ankommenden Werte addiert worden sind und danach in ein array geschoben worden ist auf die Stelle 0. Alle anderen Stellen im array wurden vorher um eins höher geschoben und der älteste Wert gelöscht. Also zusammengefasst wurde das array jede Minute um eine Stelle geschoben. Weil der längste Zeitraum, den ich auswerten will 24h sind, hatte das array 1440 Stellen. Ich habe ein bisschen in Blockly rumprobiert, aber wie kann ich das am einfachsten umsetzen? Oder ist es einfacher in JS? Schon einmal vielen Dank für eure Hilfe.
-
Hallo zusammen,
ich bekomme von meiner eigenen Wetterstation alle 3 Sekunden Messwerte von verschiedenen Sensoren übermittelt. In diesem Fall geht es um die Auswertung einer Kippwaage zur Berechnung der Regenmenge. Also Wert erhalte ich die Anzahl wie oft die Kippwaage ausgelöst hat innerhalb der letzten 3 Sekunden. Ich würde nun gerne 4 Auswertungen durchführen. Regenmenge der letzten Minuten, der letzten 10 Minuten, der letzten Stunde und der letzten 24 Stunden. Bevor ich auf iobroker umgestiegen bin habe ich das in C# so gelöst, dass eine Minuten alle ankommenden Werte addiert worden sind und danach in ein array geschoben worden ist auf die Stelle 0. Alle anderen Stellen im array wurden vorher um eins höher geschoben und der älteste Wert gelöscht. Also zusammengefasst wurde das array jede Minute um eine Stelle geschoben. Weil der längste Zeitraum, den ich auswerten will 24h sind, hatte das array 1440 Stellen. Ich habe ein bisschen in Blockly rumprobiert, aber wie kann ich das am einfachsten umsetzen? Oder ist es einfacher in JS? Schon einmal vielen Dank für eure Hilfe.
@benejan sagte in Array mit Werten schieben und addieren:
Ich habe ein bisschen in Blockly rumprobiert,
wie sieht das aus?
@benejan sagte in Array mit Werten schieben und addieren:
aber wie kann ich das am einfachsten umsetzen?
ein Schieberegister als Liste.
neue Werte hinten einfügen
wenn länge von liste >1440 lösche erstes Element.
Summe über Listefertig
-
Hallo zusammen,
ich bekomme von meiner eigenen Wetterstation alle 3 Sekunden Messwerte von verschiedenen Sensoren übermittelt. In diesem Fall geht es um die Auswertung einer Kippwaage zur Berechnung der Regenmenge. Also Wert erhalte ich die Anzahl wie oft die Kippwaage ausgelöst hat innerhalb der letzten 3 Sekunden. Ich würde nun gerne 4 Auswertungen durchführen. Regenmenge der letzten Minuten, der letzten 10 Minuten, der letzten Stunde und der letzten 24 Stunden. Bevor ich auf iobroker umgestiegen bin habe ich das in C# so gelöst, dass eine Minuten alle ankommenden Werte addiert worden sind und danach in ein array geschoben worden ist auf die Stelle 0. Alle anderen Stellen im array wurden vorher um eins höher geschoben und der älteste Wert gelöscht. Also zusammengefasst wurde das array jede Minute um eine Stelle geschoben. Weil der längste Zeitraum, den ich auswerten will 24h sind, hatte das array 1440 Stellen. Ich habe ein bisschen in Blockly rumprobiert, aber wie kann ich das am einfachsten umsetzen? Oder ist es einfacher in JS? Schon einmal vielen Dank für eure Hilfe.
@benejan sagte in Array mit Werten schieben und addieren:
Ich habe ein bisschen in Blockly rumprobiert
Zeigen!
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge
Ansonsten:
in ein array geschoben worden ist auf die Stelle 0
Das Prinzip:

-
@benejan sagte in Array mit Werten schieben und addieren:
Ich habe ein bisschen in Blockly rumprobiert
Zeigen!
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge
Ansonsten:
in ein array geschoben worden ist auf die Stelle 0
Das Prinzip:

Danke für die Hinweise. Ich habe es jetzt so gelöst, dass ich immer das erste Element in der Liste lösche und damit alle anderen Elemente um eine Position nach vorne geschoben werden. Dann setzte ich den neuen Wert an die letzte Stelle. Danach folgen noch ein paar Rechenschritte.

-
Danke für die Hinweise. Ich habe es jetzt so gelöst, dass ich immer das erste Element in der Liste lösche und damit alle anderen Elemente um eine Position nach vorne geschoben werden. Dann setzte ich den neuen Wert an die letzte Stelle. Danach folgen noch ein paar Rechenschritte.

-
Danke für die Hinweise. Ich habe es jetzt so gelöst, dass ich immer das erste Element in der Liste lösche und damit alle anderen Elemente um eine Position nach vorne geschoben werden. Dann setzte ich den neuen Wert an die letzte Stelle. Danach folgen noch ein paar Rechenschritte.

@benejan sagte: das erste Element in der Liste lösche und damit alle anderen Elemente um eine Position nach vorne geschoben werden. Dann setzte ich den neuen Wert an die letzte Stelle.
Wenn man es umgekehrt macht, liest sich das Skript leichter und bei Beobachtung im Admin sieht man den neuesten Wert in der Liste vorn.

-
Hallo zusammen,
ich bekomme von meiner eigenen Wetterstation alle 3 Sekunden Messwerte von verschiedenen Sensoren übermittelt. In diesem Fall geht es um die Auswertung einer Kippwaage zur Berechnung der Regenmenge. Also Wert erhalte ich die Anzahl wie oft die Kippwaage ausgelöst hat innerhalb der letzten 3 Sekunden. Ich würde nun gerne 4 Auswertungen durchführen. Regenmenge der letzten Minuten, der letzten 10 Minuten, der letzten Stunde und der letzten 24 Stunden. Bevor ich auf iobroker umgestiegen bin habe ich das in C# so gelöst, dass eine Minuten alle ankommenden Werte addiert worden sind und danach in ein array geschoben worden ist auf die Stelle 0. Alle anderen Stellen im array wurden vorher um eins höher geschoben und der älteste Wert gelöscht. Also zusammengefasst wurde das array jede Minute um eine Stelle geschoben. Weil der längste Zeitraum, den ich auswerten will 24h sind, hatte das array 1440 Stellen. Ich habe ein bisschen in Blockly rumprobiert, aber wie kann ich das am einfachsten umsetzen? Oder ist es einfacher in JS? Schon einmal vielen Dank für eure Hilfe.
@benejan sagte: habe ich das in C# so gelöst
Dann sollte dir Javascript nicht schwer fallen, denn es ist ähnlich mit dem wesentlichen Unterschied, dass Javascript nicht typgebunden ist und durch Ereignisse gesteuert wird. Wiki für den Schnelleinstieg.
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