Abschaltautomatik für Licht - on-for-timer nicht ausreichend

Begonnen von baerm, 25 Januar 2020, 12:07:25

Vorheriges Thema - Nächstes Thema

baerm

Hallo,
ich bin inzwischen kein Anfänger mehr, aber für diese Anwendung habe ich noch keine Lösung gefunden. Ich bin mir sicher ich bin nicht der erste mit dieser Anforderung und hoffe ich bekomme den Hinweis wie ich das konfigurieren kann.
Ich will folgendes wenn möglich mit FHEM Boardmitteln und vorhandenen Modulen lösen:

Ich verwende KNX und ich habe Lichtschalter, die nicht an Bewegungsmeldern hängen. Aus diese Würde ich gerne nach einer gewissen Zeit wieder automatisch ausschalten. z.b. nach 30min. Mit on-for-timer wird ein AT Kommando abgesetzt soweit ich weiss. So habe ich es aktuell konfiguriert. Das Problem ist, wenn ich das Licht händisch auf und wieder abdrehe und dann nach 25min wieder den Schalter betätige, geht das Licht nach 5min und nicht nach 30min aus. Also ich würde gerne bei Betätigung das on-for-timer wieder starten lassen oder das bestehende AT durch ein neues ersetzen.
Vielen Dank für einen Hinweis.
lg,
Matthias

Byte09

#1
Zitat von: baerm am 25 Januar 2020, 12:07:25
Hallo,
ich bin inzwischen kein Anfänger mehr, aber für diese Anwendung habe ich noch keine Lösung gefunden. Ich bin mir sicher ich bin nicht der erste mit dieser Anforderung und hoffe ich bekomme den Hinweis wie ich das konfigurieren kann.
Ich will folgendes wenn möglich mit FHEM Boardmitteln und vorhandenen Modulen lösen:

Ich verwende KNX und ich habe Lichtschalter, die nicht an Bewegungsmeldern hängen. Aus diese Würde ich gerne nach einer gewissen Zeit wieder automatisch ausschalten. z.b. nach 30min. Mit on-for-timer wird ein AT Kommando abgesetzt soweit ich weiss. So habe ich es aktuell konfiguriert. Das Problem ist, wenn ich das Licht händisch auf und wieder abdrehe und dann nach 25min wieder den Schalter betätige, geht das Licht nach 5min und nicht nach 30min aus. Also ich würde gerne bei Betätigung das on-for-timer wieder starten lassen oder das bestehende AT durch ein neues ersetzen.
Vielen Dank für einen Hinweis.
lg,
Matthias


da gibt es sicher 100 wege zum ziel.

bei mir habe ich dieses mit einem MSwitch gelöst. Dieses schaltet alle devices nach einer zeit x aus, die das userattribut 'auotoff' besitzen und dieses mit einer zeitangabe in sekunden gesetzt ist.

d.H du müsstest jedem device, welches abgeschaltet werden soll ein userreading 'autooff' spendieren ( könnte auch global gesetzt werden )  und diese entsprechend setzen - z.B 600 für 10 Minuten. bei erneutem schalten des devices wird der 'timer' automatisch neu gesetzt.

kannst es ja probieren, wenn du magst. es werden keine weiteren at's etc. benötigt.


edit: ich verstehe allerdings nicht, warum ein on-for-timer nicht ausreicht, dieses wird doch normal neu gesetzt bei erneutam schalten ?


gruss Byte09

defmod Autooff MSwitch # FreeCmd
attr Autooff MSwitch_Debug 1
attr Autooff MSwitch_Delete_Delays 0
attr Autooff MSwitch_Expert 1
attr Autooff MSwitch_Extensions 0
attr Autooff MSwitch_Help 0
attr Autooff MSwitch_Ignore_Types "(.*):FILTER=autooff=(\d.*)"
attr Autooff MSwitch_Include_Devicecmds 1
attr Autooff MSwitch_Include_MSwitchcmds 0
attr Autooff MSwitch_Include_Webcmds 0
attr Autooff MSwitch_Inforoom MSwitch
attr Autooff MSwitch_Lock_Quickedit 1
attr Autooff MSwitch_Mode Notify
attr Autooff MSwitch_generate_Events 0
attr Autooff comment schaltet alle geräte ab , die das userattr autooff besitzen und eintsprechenden eintrag in sekunden
attr Autooff disable 0
attr Autooff room MSwitch
attr Autooff verbose 0

setstate Autooff active
setstate Autooff 2019-05-17 05:13:05 .Device_Affected FreeCmd-AbsCmd1,FreeCmd-AbsCmd2
setstate Autooff 2019-05-17 05:15:40 .Device_Affected_Details FreeCmd-AbsCmd1#[NF]cmd#[NF]cmd#[NF]{#[nl]my#[sp]$message#[sp]=#[sp]"set#[sp]$EVTPART1#[sp]off#[se]"#[se]#[nl]my#[sp]$timehash#[sp]=#[sp]$hash->{helper}{delays}#[se]#[nl]foreach#[sp]my#[sp]$a#[sp](#[sp]sort#[sp]keys#[sp]%{$timehash}#[sp])#[nl]{#[nl]#Log3(#[sp]$name#[ko]#[sp]0#[ko]#[sp]$a#[sp])#[se]#[nl]my#[sp]@devhash#[sp]=#[sp]split(#[sp]/#[bs]##[bs][tr#[bs]]/#[ko]#[sp]$a#[sp])#[se]#[nl]#Log3(#[sp]$name#[ko]#[sp]0#[ko]#[sp]"$message"#[sp])#[se]#[nl]#Log3(#[sp]$name#[ko]#[sp]0#[ko]#[sp]"$devhash[0]"#[sp])#[se]#[nl]my#[sp]$re#[sp]=#[sp]qr/$message/#[se]#[nl]if#[sp](#[sp]$devhash[0]#[sp]=~#[sp]$re#[sp])#[sp]#[nl]{#[nl]#Log3(#[sp]$name#[ko]#[sp]0#[ko]#[sp]"found#[sp]#[sp]$devhash[0]#[sp]---#[sp]$devhash[4]"#[sp])#[se]#[nl]RemoveInternalTimer($devhash[4])#[se]#[nl]RemoveInternalTimer($a)#[se]#[nl]delete(#[sp]$hash->{helper}{delays}{$a}#[sp])#[se]#[nl]}#[nl]}#[nl]my#[sp]$sec#[sp]=#[sp]AttrVal(#[sp]'$EVTPART1'#[ko]#[sp]'autooff'#[ko]#[sp]"00#[dp]00#[dp]00"#[sp])#[se]#[nl]my#[sp]$hours#[sp]=#[sp](#[sp]abs($sec)#[sp]<#[sp]3600#[sp]?#[sp]0#[sp]#[dp]#[sp]int(#[sp]abs($sec)#[sp]/#[sp]3600#[sp])#[sp])#[se]#[nl]$sec#[sp]=#[sp]$sec#[sp]-#[sp]$hours*3600#[se]#[nl]my#[sp]$minutes#[sp]=#[sp](#[sp]abs($sec)#[sp]<#[sp]60#[sp]?#[sp]0#[sp]#[dp]#[sp]int(#[sp]abs($sec)#[sp]/#[sp]60#[sp])#[sp])#[se]#[nl]$sec#[sp]=#[sp]$sec#[sp]-#[sp]$minutes*60#[se]#[nl]my#[sp]$seconds#[sp]=#[sp]abs($sec)#[sp]%#[sp]60#[se]#[nl]$hours#[sp]#[sp]#[sp]=#[sp]"0"#[sp].#[sp]$hours#[sp]#[sp]#[sp]if#[sp](#[sp]$hours#[sp]<#[sp]10#[sp])#[se]#[nl]$minutes#[sp]=#[sp]"0"#[sp].#[sp]$minutes#[sp]if#[sp](#[sp]$minutes#[sp]<#[sp]10#[sp])#[se]#[nl]$seconds#[sp]=#[sp]"0"#[sp].#[sp]$seconds#[sp]if#[sp](#[sp]$seconds#[sp]<#[sp]10#[sp])#[se]#[nl]my#[sp]$devicetime#[sp]=#[sp]"$hours#[dp]$minutes#[dp]$seconds"#[se]#[nl]fhem("setreading#[sp]$SELF#[sp]device_off#[sp]$EVTPART1")#[se]#[nl]fhem("setreading#[sp]$SELF#[sp]device_off_time#[sp]$devicetime")#[se]#[nl]my#[sp]$timecond#[sp]=gettimeofday()#[sp]+#[sp]$sec#[se]#[nl]}#[NF]#[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]#[NF]0#[NF]0#[NF]1#[ND]FreeCmd-AbsCmd2#[NF]cmd#[NF]cmd#[NF]set#[sp][$SELF#[dp]device_off]#[sp]off#[se]#[NF]#[NF]delay0#[NF]delay1#[NF][$SELF#[dp]device_off_time]#[NF]00#[dp]00#[dp]00#[NF][$SELF#[dp]device_off_time]#[sp]ne#[sp]"00#[dp]00#[dp]00"#[sp]AND#[sp][$SELF#[dp]device_off_time]#[sp]ne#[sp]"undef"#[NF]#[NF]0#[NF]0#[NF]2#[NF]0#[NF]#[NF]0#[NF]0#[NF]1
setstate Autooff 2019-05-20 04:58:39 .Device_Events no_trigger
setstate Autooff 2019-03-31 12:38:57 .First_init done
setstate Autooff 2019-05-16 20:06:34 .Trigger_Whitelist TYPE=..*:FILTER=autooff=..*
setstate Autooff 2019-03-31 15:32:48 .Trigger_cmd_off no_trigger
setstate Autooff 2019-03-31 15:32:48 .Trigger_cmd_on .*
setstate Autooff 2019-05-16 20:06:34 .Trigger_condition "$EVENT"#[sp]=#[ti]#[sp]m/^state#[dp](on|ON)$/
setstate Autooff 2019-03-31 15:32:48 .Trigger_off no_trigger
setstate Autooff 2019-03-31 15:32:48 .Trigger_on no_trigger
setstate Autooff 2019-05-16 20:06:34 .Trigger_time
setstate Autooff 2019-03-31 12:38:57 .V_Check V2.00
setstate Autooff 2020-01-25 10:16:27 EVENT Bad_Licht:state:on
setstate Autooff 2020-01-25 10:16:27 EVTFULL Bad_Licht:state:on
setstate Autooff 2020-01-25 10:16:27 EVTPART1 Bad_Licht
setstate Autooff 2020-01-25 10:16:27 EVTPART2 state
setstate Autooff 2020-01-25 10:16:27 EVTPART3 on
setstate Autooff 2020-01-24 07:48:14 Trigger_device all_events
setstate Autooff 2019-03-31 15:32:48 Trigger_log off
setstate Autooff 2020-01-25 11:56:57 device_off Bad_Licht
setstate Autooff 2020-01-25 11:56:57 device_off_time 01:00:00
setstate Autooff 2020-01-25 12:10:31 last_activation_by event
setstate Autooff 2020-01-25 11:56:57 last_cmd 1
setstate Autooff 2020-01-25 10:16:27 last_event Bad_Licht:state:on
setstate Autooff 2020-01-25 11:56:57 last_exec_cmd   {my $message = "set Bad_Licht off;;";;my $timehash = $hash->{helper}{delays};;foreach my $a ( sort ke....
setstate Autooff 2020-01-25 11:56:57 state active

Otto123

#2
Hi,

sind Lichtschalter und Aktor getrennt?
Du kannst sowas machen:
define di_Flurlicht DOIF ([Schalter:"on"]) (set Licht on)(set Licht off)
attr di_Flurlicht do resetwait
attr di_Flurlicht wait 0,1800


Es wird nachgetriggert ;)

Oder willst Du auf das on vom Aktor reagieren? Geht sicher analog :)
defmod di_Flurlicht DOIF ([Aktor02:"on"]) (set Aktor02 off)
attr di_Flurlicht do resetwait
attr di_Flurlicht room Test
attr di_Flurlicht wait 1800


Gruß Otto
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