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.
-
@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
-
@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.
-
@benejan
Wo wird der DP "Regenmenge_1min_array" geschrieben?
Wie hast du das Array in diesem DP auf 1440 Elemente gesetzt? Es genügt, den DP beim Skriptstart in die VariableListe_1min
einzulesen. -
@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.
-
@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.