Hallo,
ich möchte in einem Programm eine mindest Zeit festlegen die ein Aktor eingeschaltet sein muss.
Mein Programm sieht nun so aus:
(
[Taster_G04:press_long]
)
(
IF ([G4_Media:state] eq "on" > 10)
(set G4_Media off)
ELSE
(set G4_Media on-for-timer 14400)
)
wobei die >10 natürlich falsch ist. Aber genau so soll es sein.
Hintergrund ist dass ich einen Taster mind 5sec drücke bevor das "press_long" kommt. Danach kommt es aber permanent woduch der Ausgang immer an/aus geht.
Das ganze ist über ein HMW-IO realisiert
Tobias
Und darf ich fragen was "Dein Programm" genau ist? Darunter kann ich mir in Verbindung mit FHEM nichts vorstellen.
Vielleicht war Programm jetzt der falsche Begriff.
Ich meine eine Funktion (DEF) die auf dem FHEM läuft
Ok. Ich nehme das jetzt mal so hin und wir schauen wo wir landen.
Was startet oder wie startest Du "die Funktion"?
Wenn ich einen Taster betätige (die Long-Zeit ist im HMW mit 5s festgelegt),
dann bekomme ich im Eventlog die Info: "....HM485 Taster_G04 press_long: 24" (24 ist ein Zähler der erst beim nächsten Tasten weiterzählt).
Der Ausgang wird geschaltet. Soweit passt das auch.
Allerdings wird nun, da der Taster u.U. länger gedrückt wird, im 300ms Takt der Ausgang ein und ausgeschaltet.
Ich möchte nun hier einen Timer hinterlegen der verhindert dass permanent geschaltet wird.
Evtl. geht das über einen Zwischenspeicher der den letzten Zählwert (24) speichert und erst bei einem höheren Wert wieder schaltet.
Das müsste dann in dei Funktion rein.
Evtl. geht es aber auch über einen Timer in der Funktion der nun x sec wartet bis er auf off geht. In meinem Beispiel hatte ich das mit ">10" angegeben.
Ok machen wir es kurz. So wird das nichts.
Deine "Funktion" sieht aus wie ein DOIF, ist es ein DOIF und warum weißt du nicht was Du da machst. Wie sollen wir es dann wissen?
Bitte lese das Einsteiger PDF so das Du auch weißt wovon Du sprichst und uns so genau sagen kannst was Du gemacht hast und wo Du hin willst.
Und wenn es ein DOIF ist was Du verwendest, dann verschiebe diesen Thread nach Automatisierung -> DOIF
Hi,
das mit den 300ms ist bei long_press normal. Man kann aber am counter erkennen, dass es sich noch um denselben Tastendruck handelt. Am einfachsten ist es, wenn man das mit event-on-change-reading abfängt.
Gruß,
Thorsten
Hi Thorsten,
genau das wars!
Danke
Tobias