Hallo Loredo, Halle Leute
Seit ein paar Tagen geht auf einmal unser Wecker nicht mehr. Anbei ein Log mit Verbos 5 aufs at und den Roommate Wecker.
2016.01.13 04:00:00 5: exec at command at_rr_Marko_wakeuptimer1
2016.01.13 04:00:00 4: dummy set rr_Marko_wakeuptimer1 trigger
2016.01.13 04:00:00 4: RESIDENTStk rr_Marko_wakeuptimer1: lastRun = nextRun = 05:00
2016.01.13 04:00:00 4: RESIDENTStk rr_Marko_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastRun (expLastRun=1452594599 nowRunSec=2674800 expNextRun=1452609784 localtime=1452654000.1612)
2016.01.13 04:00:00 4: RESIDENTStk rr_Marko_wakeuptimer1: Resetting based on wakeupDefaultTime
2016.01.13 04:00:00 4: dummy set rr_Marko_wakeuptimer1 nextRun 05:00
2016.01.13 04:00:00 5: redefine at command at_rr_Marko_wakeuptimer1 as *{RESIDENTStk_wakeupGetBegin("rr_Marko_wakeuptimer1","at_rr_Marko_wakeuptimer1")} set rr_Marko_wakeuptimer1 trigger
2016.01.13 04:00:00 4: RESIDENTStk rr_Marko_wakeuptimer1: wakeupGetBegin source: nextRun
2016.01.13 04:00:00 4: RESIDENTStk rr_Marko_wakeuptimer1: wakeupGetBegin result: 05:00 = 14400 s - 60 m = 04:00:00
Der Wecker wurde gestern Vormittag auf die heute aus zu führende Zeit gestellt.
Hier mal ein list vom RoommateWecker
Internals:
NAME rr_Marko_wakeuptimer1
NR 184
STATE 05:00
TYPE dummy
Readings:
2016-01-12 04:30:02 lastRun 05:30
2016-01-12 09:43:52 nextRun 05:00
2016-01-12 05:30:03 running 0
2016-01-13 04:00:00 state 05:00
Attributes:
alias Wake-up Timer 1
comment Auto-created by ROOMMATE module for use with RESIDENTS Toolkit
devStateIcon OFF:general_aus@red:reset running:general_an@blue:stop .*:general_an@green:nextRun%20OFF
group Marko
icon time_timer
room AnniKraussStr
setList nextRun:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 reset:noArg trigger:noArg start:noArg stop:noArg
sortby 1
userattr wakeupOffset:slider,0,1,120 wakeupDefaultTime:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 wakeupMacro wakeupUserdevice wakeupAtdevice wakeupResetSwitcher wakeupResetdays:multiple-strict,0,1,2,3,4,5,6 wakeupDays:multiple-strict,0,1,2,3,4,5,6 wakeupHolidays:andHoliday,orHoliday,andNoHoliday,orNoHoliday wakeupEnforced:0,1,2 wakeupWaitPeriod:slider,0,1,360
verbose 5
wakeupAtdevice at_rr_Marko_wakeuptimer1
wakeupDays 1,2,3,4,5
wakeupDefaultTime 05:00
wakeupEnforced 1
wakeupMacro Macro_rr_Marko_wakeuptimer1
wakeupOffset 60
wakeupUserdevice rr_Marko
webCmd nextRun
Und hier vom Roommate selber
Internals:
CHANGED
DEF AnniKraussStr
NAME rr_Marko
NR 30
NTFY_ORDER 50-rr_Marko
RESIDENTGROUPS AnniKraussStr,
STATE awoken
TYPE ROOMMATE
Readings:
2016-01-12 18:12:33 durTimerAbsence 00:00:00
2016-01-12 18:12:33 durTimerAbsence_cr 0
2016-01-13 04:46:43 durTimerPresence 10:34:40
2016-01-13 04:46:43 durTimerPresence_cr 635
2016-01-13 04:27:12 durTimerSleep 00:00:00
2016-01-13 04:27:12 durTimerSleep_cr 0
2016-01-12 18:12:32 lastArrival 2016-01-12 18:12:32
2016-01-13 04:27:12 lastAwake 2016-01-13 04:27:12
2016-01-12 07:11:23 lastDeparture 2016-01-12 07:11:23
2016-01-12 18:12:32 lastDurAbsence 11:01:01
2016-01-12 18:12:32 lastDurAbsence_cr 661
2016-01-12 07:11:23 lastDurPresence 13:25:57
2016-01-12 07:11:23 lastDurPresence_cr 806
2016-01-13 04:27:12 lastDurSleep 06:46:59
2016-01-13 04:27:12 lastDurSleep_cr 407
2016-01-12 17:03:21 lastLocation atwork
2016-01-08 07:14:55 lastLocationAddr -
2016-01-08 07:14:55 lastLocationLat -
2016-01-08 07:14:55 lastLocationLong -
2016-01-12 21:40:25 lastMood sleepy
2016-01-12 21:40:25 lastSleep 2016-01-12 21:40:25
2016-01-13 04:27:12 lastState asleep
2016-01-12 04:30:02 lastWakeup 05:30
2016-01-12 04:30:02 lastWakeupDev rr_Marko_wakeuptimer1
2016-01-12 18:12:32 location home
2016-01-08 07:14:55 locationAddr -
2016-01-08 07:14:55 locationLat -
2016-01-08 07:14:55 locationLong -
2016-01-13 04:27:12 mood sleepy
2016-01-13 04:00:00 nextWakeup 05:00
2016-01-13 04:00:00 nextWakeupDev rr_Marko_wakeuptimer1
2016-01-12 18:12:32 presence present
2016-01-13 04:27:12 state awoken
2016-01-12 05:30:04 wakeup 0
2016-01-12 18:12:32 wayhome 0
Timer:
Rr_marko_durationtimer:
HASH rr_Marko
MODIFIER DurationTimer
NAME rr_Marko_DurationTimer
Attributes:
alias Marko
devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
event-on-change-reading state,presence,wayhome,location
group Marko
icon people_sensor
room AnniKraussStr
rr_locations atwork,home,wayhome,underway
rr_passPresenceTo rr_Steven rg_Anna
rr_realname alias
rr_states home,gotosleep,asleep,awoken,absent,gone
rr_wakeupDevice rr_Marko_wakeuptimer1
sortby 0
webCmd state:mood
Wenn noch was benötigt wird einfach sagen.
Grüße
Ich kann mehr berichten. Heute konnte ich mal den Wecker meiner Tochter am Morgen noch mal stellen. Gerade eben ist er angesprungen.
Kann es sein das es eventuell etwas mit neustarts von FHEM zu tun hat? Oder wann ich den Wecker stelle?
Meinen Wecker hatte ich ja gestern gegen 9 Uhr Morgens gestellt. Kann mich da erinnern das Lerodo mal was von 8 Stunden erzählt hat in der der Wecker nicht noch mal auslöst. Daher ist es im Moment wohl auch schwer seine Weckzeit kurzentschlossen um 1 Stunde noch mal nach hinten zu verlegen nach dem auslösen.
Ich habe das selbe Problem seit dieser Woche
2016.01.13 06:25:00 4: RESIDENTStk rr_Martin_wakeuptimer1: lastRun = nextRun = 07:00
2016.01.13 06:25:00 4: RESIDENTStk rr_Martin_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastRun (expLastRun=1452167999 nowRunSec=2674800 expNextRun=1452264059 localtime=1452662700.01849)
2016.01.13 06:25:00 4: RESIDENTStk rr_Martin_wakeuptimer1: Resetting based on wakeupDefaultTime
2016.01.13 06:25:00 4: dummy set rr_Martin_wakeuptimer1 nextRun 07:00
2016.01.13 06:25:00 4: RESIDENTStk rr_Martin_wakeuptimer1: wakeupGetBegin source: nextRun
2016.01.13 06:25:00 4: RESIDENTStk rr_Martin_wakeuptimer1: wakeupGetBegin result: 07:00 = 23100 s - 35 m = 06:25:00
@Loredo
Dann sind wir schon mal zu Zweit. Wenn jetzt noch einer kommt, dürfen wir es eskalieren lassen ;D
Grüße
Kann ich bestätigen, nach FHEM neustart geht der Wecker erstmal nicht.
Habe das schon länger bemerkt, war mir aber nie sicher, ob der Fehler nicht doch bei mir liegt.
Jetzt sind wir zu dritt!
Gruss, Ingolf
ESKALATION
;D
Ich denke mir das es in der Tat etwas mit den 6-8 Stunden zu tun hat. Warscheinlich wird der Timestamp auf die Startzeit von FHEM gestellt. Ist aber nur schlecht geraten.
Grüße
Heute Morgen ging wieder kein Wecker. Selbe Fehlermeldung. Es gab kein Neustart von FHEM.
Ich versuche heute mal diese Prüfung zu finden und für mich erstmal zu deaktivieren.
Habe heute Morgen die Weckskripte meiner Tochter schnell geändert und die Verzögerungszeit raus genommen.
Grüße
RESIDENTStk rr_Marko_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastRun (expLastRun=1452594599 nowRunSec=2674800 expNextRun=1452609784 localtime=1452740400.33206)
expLastRun=1452594599 = 12.01.2016 11:29:59
expNextRun=1452609784 = 12.01.2016 15:43:04
localtime=1452740400.33206 = 14.01.2016 04:00:00
Hoffe das hilft zur Findung.
Selbes Verhalten auch noch bei mir. Hab leider wenig Zeit die Woche um mit sachdienlichen Hinweisen mit zu helfen :(
Ich denke ich habe da was.
Es gab eine Codeänderung. Mein Backup vom 06.12.2015 hat in der RESIDENTStk.pm in der Sub RESIDENTStk_Datetime2Timestamp folgendes stehen
my ($datetime) = @_;
my ( $date, $time, $y, $m, $d, $hour, $min, $sec, $timestamp );
( $date, $time ) = split( ' ', $datetime );
( $y, $m, $d ) = split( '-', $date );
( $hour, $min, $sec ) = split( ':', $time );
$m -= 01;
$timestamp = timelocal( $sec, $min, $hour, $d, $m, $y );
return $timestamp;
In der aktuellen Version ist der Code
my ($datetime) = @_;
my $timestamp;
if ( $datetime =~
/.*([0-9]{4})-([0-9]{1}|[0-9]{2})-([0-9]{1}|[0-9]{2}).([0-9]{1}|[0-9]{2}):([0-9]{1}|[0-9]{2}):([0-9]{1}|[0-9]{2}).*/
)
{
my ( $date, $time, $y, $m, $d, $hour, $min, $sec );
$sec = $6;
$min = $5;
$hour = $4;
$d = $3;
$m = $2;
$y = $1;
$m -= 01 if ( $m > 0 );
$timestamp = timelocal( $sec, $min, $hour, $d, $m, $y );
}
else {
Log3 $name, 5,
"RESIDENTStk $name: timestamp '$datetime' has wrong format.";
$timestamp = timelocal( "00", "00", "00", "01", "01", "1970" );
}
return $timestamp;
Hier gab es offenbar neuere Anpassungen und ich vermute auch die entsprechenden Probleme.
Grüße
bei mir läuft der Wecker auch nicht mehr.... :-\
Ich habe jetzt mal den neuen Code gegen den alten ausgetauscht und werde morgen schauen ob es klappt. Wenn ja würde ich empfehlen auf den alten aus zu weichen.
Ich habe in der Doku noch einen Hinweis auf das Attribut wakeupWaitPeriod gefunden. Werde aber nicht so ganz schlau daraus. Leider ist der Code des Modules RESIDENTStk.pm sehr umfangreich.
Grüße
Mein Wecker hat heute Morgen super funktioniert. Es ist also davon aus zu gehen das der Fehler in der neuen Code Anpassung liegt.
Was habe ich gemacht?
Ich habe das kommentiert also # davor
if ( $datetime =~
/.*([0-9]{4})-([0-9]{1}|[0-9]{2})-([0-9]{1}|[0-9]{2}).([0-9]{1}|[0-9]{2}):([0-9]{1}|[0-9]{2}):([0-9]{1}|[0-9]{2}).*/
)
{
my ( $date, $time, $y, $m, $d, $hour, $min, $sec );
$sec = $6;
$min = $5;
$hour = $4;
$d = $3;
$m = $2;
$y = $1;
$m -= 01 if ( $m > 0 );
$timestamp = timelocal( $sec, $min, $hour, $d, $m, $y );
}
else {
Log3 $name, 5,
"RESIDENTStk $name: timestamp '$datetime' has wrong format.";
$timestamp = timelocal( "00", "00", "00", "01", "01", "1970" );
}
und das dafür eingesetzt
my ( $date, $time, $y, $m, $d, $hour, $min, $sec, $timestamp );
( $date, $time ) = split( ' ', $datetime );
( $y, $m, $d ) = split( '-', $date );
( $hour, $min, $sec ) = split( ':', $time );
$m -= 01;
$timestamp = timelocal( $sec, $min, $hour, $d, $m, $y );
Vielleicht finde ich am Wochenende Zeit mir das genauer an zu schauen um eventuell einen Patch für Loredo fertig zu machen.
Grüße
Wer es sich zu traut. In der erwähnten Datei und sub einfach folgendes kürzen
$m -= 01 if ( $m > 0 );
die if Bedingung komplett weg nehmen
$m -= 01;
Es gibt auch ein echtes Leben neben FHEM, denke das Motto sollte klar sein ;)
Habe gerade einen ersten Fix eingecheckt. Vermutlich ist nun damit auch gleichzeitig die Funktion gefixt, dass ein Wecker sich bei einer früheren Weckzeit als der Default-Zeit nicht zur Default-Zeit erneut triggert (siehe Attribut wakeupWaitPeriod).
Gruß
Julian
Zitat von: Loredo am 16 Januar 2016, 17:15:06
Es gibt auch ein echtes Leben neben FHEM, denke das Motto sollte klar sein ;)
Habe gerade einen ersten Fix eingecheckt. Vermutlich ist nun damit auch gleichzeitig die Funktion gefixt, dass ein Wecker sich bei einer früheren Weckzeit als der Default-Zeit nicht zur Default-Zeit erneut triggert (siehe Attribut wakeupWaitPeriod).
Gruß
Julian
Guten Abend Julian,
Das wissen wir ja alle. Und niemand hat Kritik geäußert ;D Ich habe das nur mit Humor genommen.
Ich bin Dir sehr dankbar für Deine Arbeit. Meine Familie verwendet Deine Module sehr intensiv. Danke für Deinen Fix
Grüße
No problemo. Nur das mit der Eskalation lässt einen Berater die Ohren etwas empfindlich spitzen ;D
Ich habe gerade die wakeupWaitPeriod Funktion noch gefixt. Dass es jetzt greift erkennt man daran, dass bei einem manuellen "set wakeuptimer trigger" der Wecker nur ausgeführt wird, wenn er nicht zuletzt innderhalb der wakeupWaitPeriod-Minuten ausgeführt wurde. Damit ist das Problem behoben, dass man morgens doppelt geweckt wird, wenn man mal den Wecker auf eine frühere Zeit stellt und gleichzeitig wakeupDefaultTime benutzt.
wakeupWaitPeriod
Wenn man das Attribut nicht setzt, gibt es dann ein default oder wird es komplett missachtet?
es gibt einen Default von 6h so wie es bisher schon in der Doku stand und vorgesehen war.
Ah. Das bleibt also. Super Arbeit. Danke.
Grüße
Hallo Loredo,
nach dem letzten Fix funktioniert der Wecker jetzt auch nach Neustart. Bin heute morgen pünktlich geweckt worden.
Mein Lieblingsmodul. Ein grosses DANKE für die Arbeit!!!
Ingolf
Hallo Julian,
Wollte mich auch noch mal melden. Meine Familie wurde die letzten 2 Tage pünktlich geweckt, die Bude war warm, das Radio spielte und der Kaffee frisch gebrüht.
Daher 100 Sterne und ein fettes Danke von meiner Familie und mir.
Grüße
Leon
Fast vergessen.
Wie ich gesehen habe hast Du nicht einfach nur gefixt sondern eine komplett neue Logik implementiert. Super
danke, freut mich, dass das gut ankommt :-)
Gruß
Julian
auch von mir Danke an Julian :)
Hallo Loredo,
hatte am Montag (21.03.2016) das Problem, dass der Wecker frühes nicht funktioniert hat.
Denke auch, dass es etwas mit dem FHEM Neustart und der wakeupWaitPeriod zu tun hatte.
FHEM Neustart war am 21.03.2016 um 00:54 Uhr
Hier das List vom wakeuptimer
Internals:
NAME rr_Bewohner1_wakeuptimer1
NR 528
STATE 05:40
TYPE dummy
Readings:
2016-03-24 05:10:00 lastRun 05:40
2016-02-24 23:05:43 nextRun 05:40
2016-03-24 05:40:03 running 0
2016-03-25 05:10:00 state 05:40
Attributes:
alias Wake-up Timer 1
comment Auto-created by ROOMMATE module for use with RESIDENTS Toolkit
devStateIcon OFF:general_aus@red:reset running:general_an@blue:stop .*:general_an@green:nextRun%20OFF
group Bewohner1
icon time_timer
room Residents
setList nextRun:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 reset:noArg trigger:noArg start:noArg stop:noArg end:noArg
sortby 2
userattr wakeupOffset:slider,0,1,120 wakeupDefaultTime:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 wakeupMacro wakeupUserdevice wakeupAtdevice wakeupResetSwitcher wakeupResetdays:multiple-strict,0,1,2,3,4,5,6 wakeupDays:multiple-strict,0,1,2,3,4,5,6 wakeupHolidays:andHoliday,orHoliday,andNoHoliday,orNoHoliday wakeupEnforced:0,1,2 wakeupWaitPeriod:slider,0,1,360
wakeupAtdevice at_rr_Bewohner1_wakeuptimer1
wakeupDays 1,2,3,4,5
wakeupDefaultTime 05:45
wakeupEnforced 1
wakeupHolidays andNoHoliday
wakeupMacro Macro_rr_Bewohner1_wakeuptimer1
wakeupOffset 30
wakeupResetSwitcher rr_Bewohner1_wakeuptimer1_resetswitcher
wakeupResetdays 1,2,3,4,5
wakeupUserdevice rr_Bewohner1
webCmd nextRun
Der wakeupResetSwitcher steht auf "off" und sollte somit den Wecker ja auch nicht auf die wakeupDefaultTime (05:45) zurücksetzten.
das Attribut "wakeupWaitPeriod" ist nicht gesetzt.
Im Log steht die Meldung:
2016.03.21 05:15:00 3: RESIDENTStk rr_Bewohner1_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastAwake (expLastAwake=1458536995 > nowRunSec=1458535500)
Die Zeiten expLastAwake=1458536995 (21.03.2016 - 06:09:55) und nowRunSec=1458535500 (21.03.2016 - 05:45:00) Versteh ich nicht ganz.
Da der Logeitrag von 05:15 Uhr ist, wollte der Wecker wohl mit der wakeupDefaultTime starten. Aber wo kommt die Zeit 06:09:55 her?
Wenn der Wecker funktioniert sieht das Log so aus:
2016.03.18 05:10:00 3: Macro_rr_Bewohner1_wakeuptimer1: Wake-up program started for rr_Bewohner1 with target time 05:40. Current state: asleep
2016.03.18 05:40:03 3: Macro_rr_Bewohner1_wakeuptimer1: Wake-up program ended for rr_Bewohner1 with target time 05:40. Current state: asleep
Kannst du mir dieses Verhalten erklären?
Der Wecker funktioniert sonst immer Zuverlässig, deswegen denke ich schon das es was mit dem Neustart zu tun hatte.
Gruß Schlimbo