Hauptmenü

fhem timer

Begonnen von kurtklaiber, 17 Dezember 2019, 16:15:24

Vorheriges Thema - Nächstes Thema

kurtklaiber

Hallo Freunde,

ich habe in fhem das Modul timer entdeckt und würde ganz gerne etwas damit arbeiten.
Leider habe ich eine Ahnung, wie ich "timer" in fhem nutzen kann.
mit


define Schaltuhr timer


habe ich timer als Gerät definiert.
Ich möchte den Timer mit einem event starten und während des Ablaufs (30 - 300sec) die Restlaufzeit von einem reading weiter verwenden. Nach dem Ablauf soll ein event ausgelöst werden.
Kann mir hier jemand, wenn möglich mit einem einfachen Beispiel weiterhelfen.
Vielen Dank im Voraus
Gruß
urt

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kurtklaiber

Tut mir leid, so komme ich noch nicht weiter. Ich habe noch folgendes Problem:

Wie kann ich den timer von einem event starten?
In welchem Reading steht dann die abgelaufene Zeit?

Byte09

#3
Zitat von: kurtklaiber am 17 Dezember 2019, 18:21:48
Tut mir leid, so komme ich noch nicht weiter. Ich habe noch folgendes Problem:

Wie kann ich den timer von einem event starten?
In welchem Reading steht dann die abgelaufene Zeit?

ohne dieses modul zu kennen glaube ich das dieses nicht durch ein event auslösbar ist (?) und weiterhin gehe ich davon aus, das es nicht das kann was du willst ( ein fertiges modul mit anzeige der restlaufzeit gibt es m.E auch nicht . Ist zwar machbar , aber nicht wirklich resourcenschonend )

Da wirst du wohl selber 'bauen müssen' fürchte ich .

Letztendlich würde ich sagen das da nur notify/99_myutils , DOIF (?) oder MSwitch in frage kommt um dein Vorhaben umzusetzen ( ich lasse mich aber gerne korrigieren )

gruss Byte09

Byte09

#4
ich habe spasshalber mal ein MSwitch gebaut, welches deine Anforderungen erfüllt. ( Über die Sinnhaftigkeit und ob es eine bessere Lösung gibt lässt sich eher keine Aussage treffen , ohne mehr Hintergrundwissen).

Das Mswitch beinhaltet einen einstellbaren timer ( slider ) . Zusätzlich wird die Restlaufzeit angezeigt und es werden readings mit der Restlaufzeit und der vergangenen Zeit erzeugt. Wenn du magst kannst du es dir ja mal anschauen.

Die komplette Rawdefinition ist so wie sie ist einzuspielen .

Auslösung durch event ist möglich , sowie auszuführende (Schalt)befehle beim an- und ausschalten des timers.

Das Modul MSwitch sollte in der aktuellen Version (2.92) vorliegen !

gruss Byte09

defmod Timer MSwitch  # MSwitch_Self FreeCmd
attr Timer MSwitch_Comments 1
attr Timer MSwitch_Debug 0
attr Timer MSwitch_Delete_Delays 0
attr Timer MSwitch_Eventhistory 0
attr Timer MSwitch_Expert 1
attr Timer MSwitch_Extensions 0
attr Timer MSwitch_Help 0
attr Timer MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr Timer MSwitch_Include_Devicecmds 1
attr Timer MSwitch_Include_MSwitchcmds 0
attr Timer MSwitch_Include_Webcmds 0
attr Timer MSwitch_Inforoom MSwitch
attr Timer MSwitch_Lock_Quickedit 1
attr Timer MSwitch_Mode Full
attr Timer MSwitch_Safemode 1
attr Timer MSwitch_generate_Events 0
attr Timer readingList Runningtime Resttime Pasttime
attr Timer room MSwitch_Devices
attr Timer setList Runningtime:slider,30,1,300 Resttime Pasttime
attr Timer stateFormat state\
Resttime
attr Timer webCmd on:off:Runningtime

setstate Timer off\
0
setstate Timer 2019-12-18 05:43:49 .Device_Affected FreeCmd-AbsCmd1,FreeCmd-AbsCmd2,MSwitch_Self-AbsCmd1,MSwitch_Self-AbsCmd2,MSwitch_Self-AbsCmd3,MSwitch_Self-AbsCmd4
setstate Timer 2019-12-18 06:17:26 .Device_Affected_Details FreeCmd-AbsCmd1#[NF]undefined#[NF]cmd#[NF]{#[nl]fhem#[sp]("set#[sp]$SELF#[sp]Resttime#[sp]".(ReadingsVal(#[sp]'$SELF'#[ko]#[sp]'Resttime'#[ko]#[sp]0#[sp])-1))#[se]#[nl]fhem#[sp]("set#[sp]$SELF#[sp]Pasttime#[sp]".(ReadingsVal(#[sp]'$SELF'#[ko]#[sp]'Runningtime'#[ko]#[sp]0#[sp])-#[sp]ReadingsVal(#[sp]'$SELF'#[ko]#[sp]'Resttime'#[ko]#[sp]0#[sp])))#[se]#[nl]}#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF][$SELF#[dp]Resttime]#[sp]>#[sp]0#[NF]#[NF]0#[NF]0#[NF]4#[NF]1#[NF]do#[sp]not#[sp]change#[NF]0#[NF]0#[NF]1#[ND]FreeCmd-AbsCmd2#[NF]undefined#[NF]cmd#[NF]{Log3(#[sp]"$SELF"#[ko]#[sp]0#[ko]#[sp]"setze#[sp]Befehl#[sp]fuer#[sp]on")#[se]}#[NF]{Log3(#[sp]"$SELF"#[ko]#[sp]0#[ko]#[sp]"setze#[sp]Befehl#[sp]fuer#[sp]off")#[se]}#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]Hier#[sp]auszufuehrende#[sp]Befehle#[sp]fuer#[sp]on#[sp](CMD1)#[sp]und#[sp]off#[sp](CMD2)#[sp]eintragen#[NF]0#[NF]0#[NF]1#[ND]MSwitch_Self-AbsCmd1#[NF]Resttime#[NF]del_delays#[NF][$SELF#[dp]Runningtime]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]2#[NF]0#[NF]do#[sp]not#[sp]change#[NF]0#[NF]0#[NF]1#[ND]MSwitch_Self-AbsCmd2#[NF]exec_cmd_1#[NF]Resttime#[NF]ID#[sp]1#[NF]0#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]3#[NF]0#[NF]do#[sp]not#[sp]change#[NF]0#[NF]0#[NF]1#[ND]MSwitch_Self-AbsCmd3#[NF]exec_cmd_1#[NF]no_action#[NF]ID#[sp]1#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]01#[NF]00#[dp]00#[dp]00#[NF][$SELF#[dp]Resttime]#[sp]>#[sp]0#[NF]#[NF]0#[NF]0#[NF]5#[NF]1#[NF]do#[sp]not#[sp]change#[NF]0#[NF]0#[NF]1#[ND]MSwitch_Self-AbsCmd4#[NF]off#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF][$SELF#[dp]Resttime]#[sp]=#[sp]0#[NF]#[NF]0#[NF]0#[NF]6#[NF]1#[NF]do#[sp]not#[sp]change#[NF]0#[NF]0#[NF]1
setstate Timer 2019-12-18 05:19:44 .Device_Events no_trigger
setstate Timer 2019-12-18 05:19:44 .First_init done
setstate Timer 2019-12-18 05:19:44 .Trigger_cmd_off no_trigger
setstate Timer 2019-12-18 05:19:44 .Trigger_cmd_on no_trigger
setstate Timer 2019-12-18 05:19:44 .Trigger_off no_trigger
setstate Timer 2019-12-18 05:19:44 .Trigger_on no_trigger
setstate Timer 2019-12-18 05:19:44 .V_Check V2.00
setstate Timer 2019-12-18 05:30:56 .sortby priority
setstate Timer 2019-12-18 06:22:47 Pasttime 264
setstate Timer 2019-12-18 06:22:48 Resttime 0
setstate Timer 2019-12-18 06:30:55 Runningtime 30
setstate Timer 2019-12-18 05:19:44 Trigger_log off
setstate Timer 2019-12-18 06:22:48 last_activation_by manual
setstate Timer 2019-12-18 06:22:48 last_cmd 3
setstate Timer 2019-12-18 06:22:48 last_exec_cmd {Log3( "Timer", 0, "setze Befehl fuer off");;},set Timer del_delays ,set Timer Resttime 0
setstate Timer 2019-12-18 06:22:48 state off




Beta-User

...wenn wir schon am Raten sind, was der TE eigentlich will, hier mal ein Auszug aus der commandref zu "sleep":
define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp toggleEs wird auf ein Event reagiert (notify), dann gewartet (0,5 Sekunden) und dann etwas ausgelöst, das dann auch wieder ein Event wirft. Statt die Lampe anzuschalten, könnte auch ein trigger-Befehl da stehen (reines Event), und man könnte das sleep benennen, wenn man es z.B. auch wieder (mit cancel) abbrechen wollte. Nur die Anzeige einer Restlaufzeit gibt es hier nicht (mein FHEM läuft eher im Hintergrund, meistens interessiert mich das nicht...).
Die "sleep"-Zeit kann man auch aus einem Reading ablesen, muß dann halt ggf. etwas rechnen (auf Perl ausweichen, oder ein temporätes at verwenden).

Aber evtl. macht der TE ja seine Anforderungen etwas klarer und liefert ein paar list-Infos, wie sich das hier eigentlich gehört?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

kurtklaiber

Hallo Freunde,
vielen Dank für Eure Unterstützung. Ich hoffe mit euren Vorschlägen mein Problem nun lösen zu können.
Grüsse