mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 16:56:54 +00:00
20_ROOMMATE,20_GUEST,RESIDENTStk: fix wakeupWaitPeriod threshold calculation
git-svn-id: https://svn.fhem.de/fhem/trunk@10523 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
c476d870f7
commit
6ea591c471
@ -889,8 +889,8 @@ sub GUEST_DurationTimer($;$) {
|
||||
{
|
||||
$durPresence =
|
||||
$timestampNow -
|
||||
RESIDENTStk_Datetime2Timestamp(
|
||||
ReadingsVal( $name, "lastArrival", "-" ) );
|
||||
time_str2num(
|
||||
ReadingsVal( $name, "lastArrival", "" ) );
|
||||
}
|
||||
|
||||
# absence timer
|
||||
@ -899,8 +899,8 @@ sub GUEST_DurationTimer($;$) {
|
||||
{
|
||||
$durAbsence =
|
||||
$timestampNow -
|
||||
RESIDENTStk_Datetime2Timestamp(
|
||||
ReadingsVal( $name, "lastDeparture", "-" ) );
|
||||
time_str2num(
|
||||
ReadingsVal( $name, "lastDeparture", "" ) );
|
||||
}
|
||||
|
||||
# sleep timer
|
||||
@ -909,8 +909,8 @@ sub GUEST_DurationTimer($;$) {
|
||||
{
|
||||
$durSleep =
|
||||
$timestampNow -
|
||||
RESIDENTStk_Datetime2Timestamp(
|
||||
ReadingsVal( $name, "lastSleep", "-" ) );
|
||||
time_str2num(
|
||||
ReadingsVal( $name, "lastSleep", "" ) );
|
||||
}
|
||||
|
||||
my $durPresence_hr =
|
||||
|
@ -870,8 +870,8 @@ sub ROOMMATE_DurationTimer($;$) {
|
||||
{
|
||||
$durPresence =
|
||||
$timestampNow -
|
||||
RESIDENTStk_Datetime2Timestamp(
|
||||
ReadingsVal( $name, "lastArrival", "-" ) );
|
||||
time_str2num(
|
||||
ReadingsVal( $name, "lastArrival", "" ) );
|
||||
}
|
||||
|
||||
# absence timer
|
||||
@ -880,8 +880,8 @@ sub ROOMMATE_DurationTimer($;$) {
|
||||
{
|
||||
$durAbsence =
|
||||
$timestampNow -
|
||||
RESIDENTStk_Datetime2Timestamp(
|
||||
ReadingsVal( $name, "lastDeparture", "-" ) );
|
||||
time_str2num(
|
||||
ReadingsVal( $name, "lastDeparture", "" ) );
|
||||
}
|
||||
|
||||
# sleep timer
|
||||
@ -890,8 +890,8 @@ sub ROOMMATE_DurationTimer($;$) {
|
||||
{
|
||||
$durSleep =
|
||||
$timestampNow -
|
||||
RESIDENTStk_Datetime2Timestamp(
|
||||
ReadingsVal( $name, "lastSleep", "-" ) );
|
||||
time_str2num(
|
||||
ReadingsVal( $name, "lastSleep", "" ) );
|
||||
}
|
||||
|
||||
my $durPresence_hr =
|
||||
|
@ -977,10 +977,11 @@ sub RESIDENTStk_wakeupRun($;$) {
|
||||
$mday = "0" . $mday if ( $mday < 10 );
|
||||
$hour = "0" . $hour if ( $hour < 10 );
|
||||
$min = "0" . $min if ( $min < 10 );
|
||||
$sec = "0" . $sec if ( $sec < 10 );
|
||||
|
||||
my $nowRun = $hour . ":" . $min;
|
||||
my $nowRunSec =
|
||||
RESIDENTStk_Datetime2Timestamp( $year . "-"
|
||||
time_str2num( $year . "-"
|
||||
. $mon . "-"
|
||||
. $mday . " "
|
||||
. $hour . ":"
|
||||
@ -998,10 +999,10 @@ sub RESIDENTStk_wakeupRun($;$) {
|
||||
|
||||
# do not run if wakeupWaitPeriod expiration was not reached yet
|
||||
my $expLastRun =
|
||||
RESIDENTStk_Datetime2Timestamp($lastRunTimestamp) - 1 +
|
||||
time_str2num($lastRunTimestamp) - 1 +
|
||||
$wakeupOffset * 60 +
|
||||
$wakeupWaitPeriod * 60;
|
||||
my $expNextRun = RESIDENTStk_Datetime2Timestamp($nextRunTimestamp) - 1 +
|
||||
my $expNextRun = time_str2num($nextRunTimestamp) - 1 +
|
||||
$wakeupWaitPeriod * 60;
|
||||
if ( $expLastRun > $nowRunSec
|
||||
&& $expNextRun < time() )
|
||||
@ -1578,8 +1579,8 @@ sub RESIDENTStk_TimeDiff ($$;$) {
|
||||
$datetimeOld = "1970-01-01 00:00:00";
|
||||
}
|
||||
|
||||
my $timestampNow = RESIDENTStk_Datetime2Timestamp($datetimeNow);
|
||||
my $timestampOld = RESIDENTStk_Datetime2Timestamp($datetimeOld);
|
||||
my $timestampNow = time_str2num($datetimeNow);
|
||||
my $timestampOld = time_str2num($datetimeOld);
|
||||
my $timeDiff = $timestampNow - $timestampOld;
|
||||
|
||||
# return seconds
|
||||
@ -1594,34 +1595,6 @@ sub RESIDENTStk_TimeDiff ($$;$) {
|
||||
return RESIDENTStk_sec2time( int( $timeDiff + 0.5 ) );
|
||||
}
|
||||
|
||||
sub RESIDENTStk_Datetime2Timestamp($) {
|
||||
my ($datetime) = @_;
|
||||
my $timestamp = 0;
|
||||
|
||||
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 undef, 5,
|
||||
"RESIDENTStk: timestamp '$datetime' has wrong format.";
|
||||
}
|
||||
|
||||
return $timestamp;
|
||||
}
|
||||
|
||||
sub RESIDENTStk_sec2time($) {
|
||||
my ($sec) = @_;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user