NEWS
höchste Windgeschwindigkeit der letzten 30 Min bekommen
-
@mse1971 sagte:
Also würde ich gerne für die letzten 30 Min prüfen, ob eine Windgeschwindigkeit über einerm Mindestwert war.
Dazu ist es nicht nötig, die höchste Windgeschwindigkeit zu ermitteln, sondern es genügt, den Grenzwert zu überwachen. Etwa so:
const idWind = '...'; // Windgeschwindigkeit const idSturm = '...'; // Grenzwert überschritten const gw = 30; // Grenzwert für Sturm var timer = null; on({id: idWind, valGt: gw}, function() { setState(idSturm, true, true); if(timer) clearTimeout(timer); timer = setTimeout(function() { setState(idSturm, false, true); }, 30 * 60000); });
Bei jeder Böe über dem Grenzwert wird der Timer neu gestartet.
-
-
@iomountain sagte:
Würde das so passen?
Nein, es können mehrere Timer ausgelöst werden, da innerhalb von 30 Minuten mehrere Messwerte größer dem Grenzwert auftreten können.
Wie wird die Variable idWarn ausgewertet ? Weshalb beginnen die Variablennamen mit "id", obwohl es sich nicht um IDs handelt ? -
@paul53 ja es können mehrere laufen, aber nur wenn einer die 30 Minutengrenze erreicht wird warn auf true gesetzt.
Sollte in der Zwischenzeit ein Wert unter dem Warnwert kommen werden die Timeouts alle gestoppt (Entwarnung).
So hab ich mir das jedenfalls gedacht.
ID weil ich erst Datenpunkte verwenden wollte, dann aber doch nur einen für den Sensor angelegt habe, bzw weil ich es auch nicht besser weiß.
Gibt es eine Übersicht wie Variablen, Zähler usw. benannt werden sollten? -
@iomountain sagte:
Sollte in der Zwischenzeit ein Wert unter dem Warnwert kommen werden die Timeouts alle gestoppt
Es wird erst dann ein Timer gestoppt. Bleibt es über dem Grenzwert, laufen die zuerst gestarten Timer ab und es wird immer wieder "kein Sturm mehr" signalisiert (bis zum nächsten Trigger über dem Grenzwert).
@iomountain sagte in höchste Windgeschwindigkeit der letzten 30 Min bekommen:
Gibt es eine Übersicht wie Variablen, Zähler usw. benannt werden sollten?
Nein, aber möglichst nicht irreführend.
-
@paul53 said in höchste Windgeschwindigkeit der letzten 30 Min bekommen:
@mse1971 sagte:
Also würde ich gerne für die letzten 30 Min prüfen, ob eine Windgeschwindigkeit über einerm Mindestwert war.
Dazu ist es nicht nötig, die höchste Windgeschwindigkeit zu ermitteln, sondern es genügt, den Grenzwert zu überwachen.
Bei jeder Böe über dem Grenzwert wird der Timer neu gestartet.Hallo Paul53,
vielen lieben Dank für den Hinweis - das wird die Lösung werden.
Gruß
Matthias -
@iomountain sagte:
Meine Lösung in Blockly:
Vorschlag:
Wert ist eine Eigenschaft des Trigger-Datenpunktes (unter Blöcke Trigger).
-
Danke @paul53 für Deinen Vorschlag, aber muss das unterschreiten nicht auch irgendwie abgefragt werden? Muss ich mir noch genau reinziehen.
Ich brauch etwas länger und hab jetzt eine etwas kompliziertere Lösung über die Suchfunktion des Forums zusammengesteckt und frage einfach ab ob schon ein Timer läuft:
-
@iomountain Du setzt warn sofort auf falsch, wenn der Grenzwert unterschritten wird und erst nach 30 Minuten auf wahr bei Grenzwertüberschreitung. Es muss genau umgekehrt erfolgen: Sofort Warnung und erst nach 30 Minuten Entwarnung.
-
@paul53 stimmt, bei mir muss 30 Minuten Sturm geben, damit es auf true geht. Aber immerhin hab ich etwas über timeout gelernt. Danke und schöne Ostern noch.
-
Ich habe es am Ende etwas anders gelöst.
Wenn der Wind den Sturm-Wert überschreitet setze ich einfach einen neuen Zeitstempel in eine Variable.Diese frage ich dann vor den rauf- oder runterfahren immer ab, und schuae ob sie älter als 30 Min ist.