NEWS
[Gelöst] Trigger 3 x in 15 minuten >>> dann
-
Ich brauche mal wieder eure Ideen und Hilfe.
Ich möchte einen Trigger 3 x innerhalb von 15 Minuten erfassen.
Sollte der Trigger innerhalb dieser 15 Minuten 3 x kommen, dann "Aktion" und alles wieder von Anfang an.
Falls nicht, soll nach den 15 Minuten alles wieder von vorne anfangen, solange bis der Trigger 3 x innerhalb von 15 Minuten gekommen ist.Habt ihr dazu eine Lösung?
Danke im Voraus
-
lesen und verstehen, Zähler hoch zählen beim triggern und gut is :
https://forum.iobroker.net/topic/21513/1-taster-alle-schalter-aus-ein-schalten/27
timeout stellste auf 15, Zaehler ist dann 0.
Blocky muß du selbst machen, das ist aber der Weg.
Copy und Paste geht nicht, musst schon die Zeit <15 min dabei bedenken. -
So ähnlich habe ich es gemacht.
Warum ist der STOP TIMEOUT vor dem Timeoutblock?
Dann fängt ja der timeout jedes mal beim drücken (trigger) neu an, oder?
Wenn ich den STOP TIMEOUT nicht verwende, dann wird er TIMEOUT Block mehrfach gestartet. oder irre ich mich da. -
Zeige mal dein Blockly.
Beim 2 ten mal triggern läuft ja noch der erste Trigger timeout.
der muß ja gestoppt werden.
Sonst laufen ja pro trigger 1 timeout. -
genau da ist das problem.
beim 1. und 2. mal trigger soll der timeout ja nach 15 minuten den zähler löschen, da kein 3. trigger gekommen ist.
beim 3. mal trigger innerhalb der 15 minuten soll die "aktion" kommen und der zähler gelöscht werden. -
-
Öhm, was hat Markise rütteln damit zu tun ??
Hast du Alkohol getrunken ? -
noch nicht
der rüttelsensor muss 3 x in 15 minuten anschlagen, dann markise zu.
die zeit und häufigkeit muss ich natürlich noch feinjustieren, da der sensor einen fixen wert hat. -
Warum lagerst du das nicht aus ?
Eigenes Blockly für 3 x 15 min, schreibst in einen Datenpunkt 1 oder 0 wenn Bedingung erfüllt oder nicht.
Kannste ja dann im Hauptscript ( Main ) verwenden.
Macht das debuggen auch einfacher als alles in ein Blockly darzustellen.
Wenn du das sonst falls meinst, wo ist der Zähler ??? -
geht auch, aber mein hauptproblem bleibt bestehen.
in meinem script wird die markise wenn zähler auf 6 ist zugefahren, dann zähler auf 0.
mein problem ist in den 15 minuten den triggerzähler auf 6 zu bekommen ohne den timer immer wieder zu starten, oder den timer wieder von vorne die 15 minuten anfangen zu lassen.
-
Dein Hauptproblem ist die Verkasperung.
In der Main ( Hauptprogramm ) wird nur verwaltet.
Lager das alles aus, früher oder später rennt das nicht mehr.
Dann wir debuggen zum Alptraum.
Zähler 6, 15 min haben im Hauptprogramm nix verloren.
Ganz im Ernst, baue das komplett um.
Trotdem fehlt der Zähler !! -
du wirst schon recht haben.
ob im hauptprogramm oder nicht.
ich habe keinen plan wie ich das mit dem zähler (trigger) innerhalb einer zeit anstellen soll.hast du dazu die lösung?
-
Anders herum ja,
wenn nach 15 min der Zähler 3 mal gerüttelt hat.
Kannste ja einkürzen, wenn innerhalb 3 min es 3 x gerüttelt hat. -
hier ist das mißverständnis:
nicht "nach" 15 minuten sondern innerhalb von 15 minuten.wenn der rüttelsensor in 1 minute 3 x rüttelt soll sie ja auch zufahren.
nur wenn die 15 minuten nicht 3 x gerüttelt wurde, dann nicht. und alles wieder von vorne. -
Warum so schwer ?
Frag alle 3 min oder jede 1 min ab ob 3 mal bewegt.
Im Extra Blocky setzt du dann den Zähler wieder auf 0 wenn nicht 3 mal bewegt.
Entscheident ist ja Bewegung in einer Zeit.
Was soll dann 15 min ? -
die 15 minuten sind ein fiktiver wert.
mir ging es um die lösung des problems.kann man mit blockly einen trigger (z.B. 3 x innerhalb einer zeitspanne) abfragen und dann eine aktion auslösen?
wenn ich alle minuten anfrage ob 3 x oder nicht ist das nicht so flexibel einzustellen wie 3 x in 15 minuten, oder was auch immer.
-
Anders herum ist einfacher, deine Bewegung ändert einen Datenpunkt.
Der wird im Blockly abgefragt, dann kannst du verkaspern was du möchtest. -
kannst du mir ein beispiel als blockly zeigen?
-
ich würde es ganz anders machen. ob es die einfachste lösung ist, weiß ich nicht:
ich würde 2 datenpunkte erstellen: rüttler1 und rüttler2
dann würde ich bei jedem rüttler ein script ausführen welches:
- die aktuelle uhrzeit abfragt
- prüft ob die uhrzeit in rüttler1 weniger als 15 minuten her ist und wenn ja die gewünschte aktion ausführt.
- die uhrzeit aus rüttler2 in rüttler1 überträgt
- die aktuelle uhrzeit in rüttler2 einträgt
verständlich?
du hast also immer die zeiten des aktuellen rüttlers und der 2 vorherigen und kannst diese vergleichen. am einfachsten wäre das ein unix timestamp.
-
Gerne wenn du mir ein Bild deines Datenpunktes Bewegung sendest.
Der sollte ja 0 oder 1, oder true / false sein.