NEWS
[gelöst] Durchschnitt je Zeiteinheit um Trigger zu setzen
-
Hi Zusammen,
kann mir jemand bei folgender Problemstellung helfen?:
Wie kann ich per Blockly einen Durchschnitt eines Wertes (Stromverbrauch) je 15min. berechnen und bei Durchschnitt < 1 einen trigger setzen? Die Anzahl der Werte im Zeitfenster schwankt zwischen 50 und 80 Werten je 15 Min.
Also quasi so:00:00 - 00:15: Durchschnitt (63 Werte) = 1,03 00:15 - 00:30: Durchschnitt (58 Werte) = 1,01 00:30 - 00:45: Durchschnitt (72 Werte) = 0,97 => Trigger 00:45 - 01:00: Durchschnitt (68 Werte) = 1,03 01:00 - 01:15: Durchschnitt (65 Werte) = 0,91 => Trigger usw...
Würde das nach aktuellem Stand so lösen:
Habe ich einen Denkfehler drin oder könnte es so funktionieren?
Vielen Dank im Voraus!
Gruß,
Claus
Zum Hintergrund:
Ein Bewässerungssystem mit Wasserpumpe, die eigentlich dauerhaft an ist und den Druck in der Leitung konstant hält.
Im Nachgang sitzt eine Reihe von Ventilen die per Ventilsteuerung versch. Dinge bewässern.Aus mir nicht erfindlichen Gründen schaltet die Pumpe ab nachdem ein Ventil geöffnet und wieder geschlossen wurde.
Ich muss dann per Shelly den Strom aus/an schalten damit wieder alles wie gehabt läuft. Nun würde ich das gerne automatisieren da das Verhalten Nachts beim Bewässern auftritt...Shelly inkl. Stromverbrauch ist im ioBroker angebunden. Um da einen guten Grenzwert zu Ermitteln habe ich per History Adapter den durchschnittlichen Standby-Verbrauch der Pumpe angeschaut. Wenn sie wie gewünscht arbeitet und nicht pumpt liegt der im Durchschnitt / 15 Minuten bei 1,03 Watt. Wenn sie nicht arbeitet liegt er bei 0,97 Watt / 15 Minuten.
-
@claus1985-0 sagte in Durchschnitt je Zeiteinheit um Trigger zu setzen:
Wie kann ich per Blockly einen Durchschnitt eines Wertes (Stromverbrauch) je 15min. berechnen
Einfach den statistics-Adapter nutzen. Der stellt genau dafür einen Datenpunkt bereit und Du kannst darauf einen Trigger registrieren.
-
@claus1985-0 sagte in Durchschnitt je Zeiteinheit um Trigger zu setzen:
Würde das nach aktuellem Stand so lösen:
Das sind aber immer 15min-Intervalle ab Script-Start und nicht :00 bis :15 usw.
Aber Du hast das Problem, dass ständig neue Intervalle gestartet werden. Nicht gut. Das musst Du auslagern und nicht im Trigger erstellen. Also den Intervall einfach unter den Trigger packen und dann noch prüfen ob Zähler > 0 ist, damit nicht durch 0 geteilt wird.
Ich würde dafür aber einen Cron-Trigger nutzen und keinen Intervall.
-
@haus-automatisierung Hi Matthias, danke für Deine schnelle Antwort, ab Skript-Start passt, denke das macht erstmal keinen Unterschied. Wo liegt denn der Unterschied ob ich das per Cron oder Intervall mache? Cron führt ja auch einen Intervall aus? Habe es nun nochmal angepasst:
Übrigens, vielen vielen Dank für Deine Kurse und Videos, habe dank Dir und Jörg den Einstieg in Loxone, ioBroker, NodeRed, Arduino usw. geschafft und bastle fleißig daran! Den Hausbaukurs hätte ich ein Jahr früher wirklich gebraucht, dann hätte ich auf KNX gesetzt nun ist es Loxone geworden. Habe den Kurs schon vielen Kollegen empfohlen da das aktuell echt einzigartig ist!
-
@claus1985-0 sagte in Durchschnitt je Zeiteinheit um Trigger zu setzen:
Wo liegt denn der Unterschied ob ich das per Cron oder Intervall mache?
Genau darin: Der Cron startet um „runde“ Zeiten. Also 00, 15, 30, 45. Mit einem Intervall liegen die Zeiträume immer +15min ab Script-Start. Also jedes mal ein bisschen verschoben. Für diese Anwendung egal.
@claus1985-0 sagte in Durchschnitt je Zeiteinheit um Trigger zu setzen:
vielen Dank für Deine Kurse und Videos, habe dank Dir und Jörg den Einstieg in Loxone, ioBroker, NodeRed, Arduino usw. geschafft
Das freut mich sehr zu hören
-
@claus1985-0 Ich würde das Script eventuell noch so anpassen, dass in jedem Fall der Durchschnitt zurückgesetzt wird. Aber das kommt jetzt auf deine Anforderung an. Aktuell würde es ja nur zurückgesetzt, wenn der Durchschnitt < 1 war.
-
@haus-automatisierung danke für den Tipp, glaube nachdem ich die Daten gesichtet hab sollte es auch so passen.
Ich schreibe mir mal zur Sicherheit einen Userwert mit wie oft er das Resettet. Wenn es zu oft ist muss ich nochmal anpassen.