Hallo Zusammen,
Ich habe ein DOIF mit dem ich mir die Uhrzeit setze.
Das sieht so aus: define di_uhrzeitsetzen DOIF ([+:01])({fhem("set fp_time $hour:$min")})({fhem("setreading fp_time datum $mday.$month.$year")})
Wenn das auslöst setzt er mir aber in dem Device nicht die aktuelle Uhrzeit, sondern immer die von der Minute davor. Wenn ich das in der neuen minute auslöse, sollte er doch auch die neue Minute setzen?
Internals:
CFGFN
DEF ([+:01])({fhem("set fp_time $hour:$min")})({fhem("setreading fp_time datum $mday.$month.$year")})
NAME di_uhrzeitsetzen
NR 32211
NTFY_ORDER 50-di_uhrzeitsetzen
STATE cmd_1
TYPE DOIF
Helper:
DBLOG:
cmd:
DBLogging:
TIME 1514738486.97188
VALUE 0
state:
DBLogging:
TIME 1514738486.97188
VALUE initialized
READINGS:
2017-12-31 19:00:00 cmd 1.2
2017-12-31 19:00:00 cmd_event timer_1
2017-12-31 19:00:00 cmd_nr 1
2017-12-31 19:00:00 cmd_seqnr 2
2017-12-31 19:00:00 state cmd_1
2017-12-31 19:00:00 timer_01_c01 31.12.2017 19:01:00
Regex:
condition:
0 DOIF_time_once($hash,0,$wday)
days:
devices:
do:
0:
0 {fhem("set fp_time $hour:$min")}
1 {fhem("setreading fp_time datum $mday.$month.$year")}
1:
helper:
DOIF_Readings_events
DOIF_eventas
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
timereventsState
triggerDev
timerevents:
timer_1
triggerEvents:
timer_1
internals:
interval:
itimer:
localtime:
0 1514743260
readings:
realtime:
0 19:01:00
time:
0 +:01
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1514743260:
localtime 1514743260
hash:
uiState:
uiTable:
Attributes:
DbLogExclude .*
do always
event-on-change-reading .*
room Befehle,Kontrollraum
Internals:
CFGFN
NAME fp_time
NR 178
STATE 19:12
TYPE dummy
READINGS:
2017-12-31 19:13:00 datum 31.12.2017
2017-12-31 19:13:00 state 19:12
Attributes:
DbLogExclude .*
alias Uhrzeit
group Uhrzeit room Uebersicht,technik
ZitatWenn das auslöst setzt er mir aber in dem Device nicht die aktuelle Uhrzeit
Woran machst Du das fest?
Zitat von: Ellert am 31 Dezember 2017, 19:45:13
Woran machst Du das fest?
Naja schau dir mal das fp_time an. Ich hatte das list angehängt im ersten Post.
Da steht
Zitat2017-12-31 19:13:00 state 19:12
Die erste zeit ist die vom Reading, wann die letzte Änderung erfolgt ist und dann kommt der gesetzte Wert. dh gesetzt wurde um 19:13 die Zeit 19:12.
Außerdem seh ich es auch, wenn ich mir das fp_time device anschaue, es hängt immer eine Minute zurück
Oder bin ich jetzt völlig banane?
Was passiert, wenn Du die Zeit über strftime setzt?
http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.0305/lib/POSIX/strftime/GNU.pm
Zitat von: Ellert am 31 Dezember 2017, 20:32:42
Was passiert, wenn Du die Zeit über strftime setzt?
http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.0305/lib/POSIX/strftime/GNU.pm (http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.0305/lib/POSIX/strftime/GNU.pm)
Dann bin ich raus, ich versteh die Function nämlich nicht. :(
Aber danke für den Hinweis
warum um alles in der Welt macht man sowas per DOIF und nicht per at ?
Zitat von: AmunRe am 31 Dezember 2017, 21:56:43
Dann bin ich raus, ich versteh die Function nämlich nicht. :(
Aber danke für den Hinweis
Bei mir gibt es keinen Unterschied bei den Zeitstempeln.
Zitatdefmod uhrzeit DOIF ([+:01]) (setreading $SELF time {(POSIX::strftime('%H.%M.%S', localtime))}, {(fhem "setreading $SELF time2 $hour:$min:$sec")})
attr uhrzeit do always
setstate uhrzeit cmd_1
setstate uhrzeit 2018-01-01 00:18:00 cmd 1
setstate uhrzeit 2018-01-01 00:18:00 cmd_event timer_1
setstate uhrzeit 2018-01-01 00:18:00 cmd_nr 1
setstate uhrzeit 2017-12-31 20:49:44 mode enabled
setstate uhrzeit 2018-01-01 00:18:00 state cmd_1
setstate uhrzeit 2018-01-01 00:18:00 time 00.18.00
setstate uhrzeit 2018-01-01 00:18:00 time2 0:18:0
setstate uhrzeit 2018-01-01 00:18:00 timer_01_c01 01.01.2018 00:19:00
Zitat von: Ellert am 01 Januar 2018, 00:22:29
Bei mir gibt es keinen Unterschied bei den Zeitstempeln.
Bei mir schon, aber dank deiner Function weiß ich jetzt warum.
ZitatInternals:
CFGFN
NAME fp_time
NR 178
STATE 02.47.59
TYPE dummy
READINGS:
2018-01-01 02:46:00 datum 1.1.2018
2018-01-01 02:48:00 state 02.47.59
Attributes:
DbLogExclude .*
alias Uhrzeit
group Uhrzeit
room Uebersicht,technik
Er führt das DOIF wohl zu früh aus?
Zitat von: betateilchen am 31 Dezember 2017, 22:09:43
warum um alles in der Welt macht man sowas per DOIF und nicht per at ?
Weil ich es mit DOIF verständlicher finde. und so genau auf die Minute triggern kann (Zumindest theoretisch).
DOIF benutzt die gleichen Zeit-Trigger-Mechanismen, wie at, diese sind in fhem.pl programmiert. Warum es bei dir zu früh ausgeführt wird, kann ich dir nicht sagen.
Als Workaround kannst auch definieren:
DOIF ([([+:01]+1)]) ....