diff --git a/fhem/FHEM/10_RESIDENTS.pm b/fhem/FHEM/10_RESIDENTS.pm
index 5b3fb9bc5..89a138ef0 100644
--- a/fhem/FHEM/10_RESIDENTS.pm
+++ b/fhem/FHEM/10_RESIDENTS.pm
@@ -23,9 +23,13 @@
# along with fhem. If not, see .
#
#
-# Version: 1.0.2
+# Version: 1.1.0
#
# Major Version History:
+# - 1.1.0 - 2014-04-07
+# -- new readings in computer readable format (*_cr)
+# -- format of readings durTimer readings changes from HH:MM:ss to minutes
+#
# - 1.0.0 - 2014-02-08
# -- First release
#
@@ -792,6 +796,13 @@ sub RESIDENTS_UpdateReadings (@) {
$datetime, $hash->{READINGS}{lastSleep}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurSleep_cr",
+ RESIDENTS_TimeDiff(
+ $datetime, $hash->{READINGS}{lastSleep}{VAL}, "min"
+ )
+ );
}
readingsBulkUpdate( $hash, "lastState", $hash->{READINGS}{state}{VAL} );
@@ -819,6 +830,14 @@ sub RESIDENTS_UpdateReadings (@) {
$datetime, $hash->{READINGS}{lastDeparture}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurAbsence_cr",
+ RESIDENTS_TimeDiff(
+ $datetime, $hash->{READINGS}{lastDeparture}{VAL},
+ "min"
+ )
+ );
}
}
else {
@@ -835,41 +854,40 @@ sub RESIDENTS_UpdateReadings (@) {
$datetime, $hash->{READINGS}{lastArrival}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurPresence_cr",
+ RESIDENTS_TimeDiff(
+ $datetime, $hash->{READINGS}{lastArrival}{VAL},
+ "min"
+ )
+ );
}
}
}
}
-sub RESIDENTS_TimeDiff($$) {
- my ( $datetimeNow, $datetimeOld ) = @_;
+###################################
+sub RESIDENTS_TimeDiff($$;$) {
+ my ( $datetimeNow, $datetimeOld, $format ) = @_;
- my (
- $date, $time, $date2, $time2,
- $y, $m, $d, $hour,
- $min, $sec, $y2, $m2,
- $d2, $hour2, $min2, $sec2,
- $timestampNow, $timestampOld, $timeDiff, $hours,
- $minutes, $seconds
- );
+ my $timestampNow = RESIDENTS_Datetime2Timestamp($datetimeNow);
+ my $timestampOld = RESIDENTS_Datetime2Timestamp($datetimeOld);
+ my $timeDiff = $timestampNow - $timestampOld;
- ( $date, $time ) = split( ' ', $datetimeNow );
- ( $y, $m, $d ) = split( '-', $date );
- ( $hour, $min, $sec ) = split( ':', $time );
- $m -= 01;
- $timestampNow = timelocal( $sec, $min, $hour, $d, $m, $y );
+ # return seconds
+ return int( $timeDiff + 0.5 ) if ( defined($format) && $format eq "sec" );
- ( $date2, $time2 ) = split( ' ', $datetimeOld );
- ( $y2, $m2, $d2 ) = split( '-', $date2 );
- ( $hour2, $min2, $sec2 ) = split( ':', $time2 );
- $m2 -= 01;
- $timestampOld = timelocal( $sec2, $min2, $hour2, $d2, $m2, $y2 );
+ # return minutes
+ return int( $timeDiff / 60 + 0.5 )
+ if ( defined($format) && $format eq "min" );
- $timeDiff = $timestampNow - $timestampOld;
- $hours = ( $timeDiff < 3600 ? 0 : int( $timeDiff / 3600 ) );
+ # return human readable format
+ my $hours = ( $timeDiff < 3600 ? 0 : int( $timeDiff / 3600 ) );
$timeDiff -= ( $hours == 0 ? 0 : ( $hours * 3600 ) );
- $minutes = ( $timeDiff < 60 ? 0 : int( $timeDiff / 60 ) );
- $seconds = $timeDiff % 60;
+ my $minutes = ( $timeDiff < 60 ? 0 : int( $timeDiff / 60 ) );
+ my $seconds = $timeDiff % 60;
$hours = "0" . $hours if ( $hours < 10 );
$minutes = "0" . $minutes if ( $minutes < 10 );
@@ -878,6 +896,21 @@ sub RESIDENTS_TimeDiff($$) {
return "$hours:$minutes:$seconds";
}
+###################################
+sub RESIDENTS_Datetime2Timestamp($) {
+ 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;
+}
+
1;
=pod
@@ -996,13 +1029,22 @@ sub RESIDENTS_TimeDiff($$) {
lastDeparture - timestamp of last departure from home
- lastDurAbsence - duration of last absence from home in following format: hours:minutes:seconds
+ lastDurAbsence - duration of last absence from home in human readable format (hours:minutes:seconds)
- lastDurPresence - duration of last presence at home in following format: hours:minutes:seconds
+ lastDurAbsence_cr - duration of last absence from home in computer readable format (minutes)
- lastDurSleep - duration of last sleep in following format: hours:minutes:seconds
+ lastDurPresence - duration of last presence at home in human readable format (hours:minutes:seconds)
+
+
+ lastDurPresence_cr - duration of last presence at home in computer readable format (minutes)
+
+
+ lastDurSleep - duration of last sleep in human readable format (hours:minutes:seconds)
+
+
+ lastDurSleep_cr - duration of last sleep in computer readable format (minutes)
lastSleep - timestamp of last sleep cycle begin
diff --git a/fhem/FHEM/20_GUEST.pm b/fhem/FHEM/20_GUEST.pm
index 26be25982..1e935074a 100644
--- a/fhem/FHEM/20_GUEST.pm
+++ b/fhem/FHEM/20_GUEST.pm
@@ -23,9 +23,13 @@
# along with fhem. If not, see .
#
#
-# Version: 1.0.3
+# Version: 1.1.0
#
# Major Version History:
+# - 1.1.0 - 2014-04-07
+# -- new readings in computer readable format (*_cr)
+# -- format of readings durTimer readings changes from HH:MM:ss to minutes
+#
# - 1.0.0 - 2014-02-08
# -- First release
#
@@ -37,7 +41,6 @@ use strict;
use warnings;
use Time::Local;
use Data::Dumper;
-use SetExtensions;
sub GUEST_Set($@);
sub GUEST_Define($$);
@@ -420,6 +423,13 @@ sub GUEST_Set($@) {
$datetime, $hash->{READINGS}{lastSleep}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurSleep_cr",
+ GUEST_TimeDiff(
+ $datetime, $hash->{READINGS}{lastSleep}{VAL}, "min"
+ )
+ );
}
# calculate presence state
@@ -490,6 +500,14 @@ sub GUEST_Set($@) {
$datetime, $hash->{READINGS}{lastDeparture}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurAbsence_cr",
+ GUEST_TimeDiff(
+ $datetime,
+ $hash->{READINGS}{lastDeparture}{VAL}, "min"
+ )
+ );
}
}
else {
@@ -506,6 +524,14 @@ sub GUEST_Set($@) {
$datetime, $hash->{READINGS}{lastArrival}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurPresence_cr",
+ GUEST_TimeDiff(
+ $datetime, $hash->{READINGS}{lastArrival}{VAL},
+ "min"
+ )
+ );
}
}
@@ -773,10 +799,9 @@ sub GUEST_DurationTimer($;$) {
if ( defined( $hash->{READINGS}{lastArrival}{VAL} )
&& $hash->{READINGS}{lastArrival}{VAL} ne "-" )
{
- $diff =
+ $durPresence =
$timestampNow -
GUEST_Datetime2Timestamp( $hash->{READINGS}{lastArrival}{VAL} );
- $durPresence = int( $diff / 60 );
}
}
@@ -789,10 +814,9 @@ sub GUEST_DurationTimer($;$) {
if ( defined( $hash->{READINGS}{lastDeparture}{VAL} )
&& $hash->{READINGS}{lastDeparture}{VAL} ne "-" )
{
- $diff =
+ $durAbsence =
$timestampNow -
GUEST_Datetime2Timestamp( $hash->{READINGS}{lastDeparture}{VAL} );
- $durAbsence = int( $diff / 60 );
}
}
@@ -803,23 +827,43 @@ sub GUEST_DurationTimer($;$) {
if ( defined( $hash->{READINGS}{lastSleep}{VAL} )
&& $hash->{READINGS}{lastSleep}{VAL} ne "-" )
{
- $diff =
+ $durSleep =
$timestampNow -
GUEST_Datetime2Timestamp( $hash->{READINGS}{lastSleep}{VAL} );
- $durSleep = int( $diff / 60 );
}
}
+ my $durPresence_hr =
+ ( $durPresence > 0 ) ? GUEST_sec2time($durPresence) : "00:00:00";
+ my $durPresence_cr =
+ ( $durPresence > 60 ) ? int( $durPresence / 60 + 0.5 ) : 0;
+ my $durAbsence_hr =
+ ( $durAbsence > 0 ) ? GUEST_sec2time($durAbsence) : "00:00:00";
+ my $durAbsence_cr =
+ ( $durAbsence > 60 ) ? int( $durAbsence / 60 + 0.5 ) : 0;
+ my $durSleep_hr =
+ ( $durSleep > 0 ) ? GUEST_sec2time($durSleep) : "00:00:00";
+ my $durSleep_cr = ( $durSleep > 60 ) ? int( $durSleep / 60 + 0.5 ) : 0;
+
readingsBeginUpdate($hash) if ( !$silent );
- readingsBulkUpdate( $hash, "durTimerPresence", $durPresence )
+ readingsBulkUpdate( $hash, "durTimerPresence_cr", $durPresence_cr )
+ if ( !defined( $hash->{READINGS}{durTimerPresence_cr}{VAL} )
+ || $hash->{READINGS}{durTimerPresence_cr}{VAL} ne $durPresence_cr );
+ readingsBulkUpdate( $hash, "durTimerPresence", $durPresence_hr )
if ( !defined( $hash->{READINGS}{durTimerPresence}{VAL} )
- || $hash->{READINGS}{durTimerPresence}{VAL} ne $durPresence );
- readingsBulkUpdate( $hash, "durTimerAbsence", $durAbsence )
+ || $hash->{READINGS}{durTimerPresence}{VAL} ne $durPresence_hr );
+ readingsBulkUpdate( $hash, "durTimerAbsence_cr", $durAbsence_cr )
+ if ( !defined( $hash->{READINGS}{durTimerAbsence_cr}{VAL} )
+ || $hash->{READINGS}{durTimerAbsence_cr}{VAL} ne $durAbsence_cr );
+ readingsBulkUpdate( $hash, "durTimerAbsence", $durAbsence_hr )
if ( !defined( $hash->{READINGS}{durTimerAbsence}{VAL} )
- || $hash->{READINGS}{durTimerAbsence}{VAL} ne $durAbsence );
- readingsBulkUpdate( $hash, "durTimerSleep", $durSleep )
+ || $hash->{READINGS}{durTimerAbsence}{VAL} ne $durAbsence_hr );
+ readingsBulkUpdate( $hash, "durTimerSleep_cr", $durSleep_cr )
+ if ( !defined( $hash->{READINGS}{durTimerSleep_cr}{VAL} )
+ || $hash->{READINGS}{durTimerSleep_cr}{VAL} ne $durSleep_cr );
+ readingsBulkUpdate( $hash, "durTimerSleep", $durSleep_hr )
if ( !defined( $hash->{READINGS}{durTimerSleep}{VAL} )
- || $hash->{READINGS}{durTimerSleep}{VAL} ne $durSleep );
+ || $hash->{READINGS}{durTimerSleep}{VAL} ne $durSleep_hr );
readingsEndUpdate( $hash, 1 ) if ( !$silent );
GUEST_InternalTimer( "DurationTimer", $timestampNow + 60,
@@ -830,13 +874,22 @@ sub GUEST_DurationTimer($;$) {
}
###################################
-sub GUEST_TimeDiff($$) {
- my ( $datetimeNow, $datetimeOld ) = @_;
+sub GUEST_TimeDiff ($$;$) {
+ my ( $datetimeNow, $datetimeOld, $format ) = @_;
my $timestampNow = GUEST_Datetime2Timestamp($datetimeNow);
my $timestampOld = GUEST_Datetime2Timestamp($datetimeOld);
my $timeDiff = $timestampNow - $timestampOld;
- my $hours = ( $timeDiff < 3600 ? 0 : int( $timeDiff / 3600 ) );
+
+ # return seconds
+ return int( $timeDiff + 0.5 ) if ( defined($format) && $format eq "sec" );
+
+ # return minutes
+ return int( $timeDiff / 60 + 0.5 )
+ if ( defined($format) && $format eq "min" );
+
+ # return human readable format
+ my $hours = ( $timeDiff < 3600 ? 0 : int( $timeDiff / 3600 ) );
$timeDiff -= ( $hours == 0 ? 0 : ( $hours * 3600 ) );
my $minutes = ( $timeDiff < 60 ? 0 : int( $timeDiff / 60 ) );
my $seconds = $timeDiff % 60;
@@ -863,6 +916,23 @@ sub GUEST_Datetime2Timestamp($) {
return $timestamp;
}
+###################################
+sub GUEST_sec2time($) {
+ my ($sec) = @_;
+
+ # return human readable format
+ my $hours = ( $sec < 3600 ? 0 : int( $sec / 3600 ) );
+ $sec -= ( $hours == 0 ? 0 : ( $hours * 3600 ) );
+ my $minutes = ( $sec < 60 ? 0 : int( $sec / 60 ) );
+ my $seconds = $sec % 60;
+
+ $hours = "0" . $hours if ( $hours < 10 );
+ $minutes = "0" . $minutes if ( $minutes < 10 );
+ $seconds = "0" . $seconds if ( $seconds < 10 );
+
+ return "$hours:$minutes:$seconds";
+}
+
###################################
sub GUEST_InternalTimer($$$$$) {
my ( $modifier, $tim, $callback, $hash, $waitIfInitNotDone ) = @_;
@@ -1101,13 +1171,22 @@ sub GUEST_StartInternalTimers($$) {
-
- durTimerAbsence - timer to show the duration of absence from home in minutes
+ durTimerAbsence - timer to show the duration of absence from home in human readable format (hours:minutes:seconds)
-
- durTimerPresence - timer to show the duration of presence at home in minutes
+ durTimerAbsence_cr - timer to show the duration of absence from home in computer readable format (minutes)
-
- durTimerSleep - timer to show the duration of sleep in minutes
+ durTimerPresence - timer to show the duration of presence at home in human readable format (hours:minutes:seconds)
+
+ -
+ durTimerPresence_cr - timer to show the duration of presence at home in computer readable format (minutes)
+
+ -
+ durTimerSleep - timer to show the duration of sleep in human readable format (hours:minutes:seconds)
+
+ -
+ durTimerSleep_cr - timer to show the duration of sleep in computer readable format (minutes)
-
lastArrival - timestamp of last arrival at home
@@ -1119,13 +1198,22 @@ sub GUEST_StartInternalTimers($$) {
lastDeparture - timestamp of last departure from home
-
- lastDurAbsence - duration of last absence from home in following format: hours:minutes:seconds
+ lastDurAbsence - duration of last absence from home in human readable format (hours:minutes:seconds)
-
- lastDurPresence - duration of last presence at home in following format: hours:minutes:seconds
+ lastDurAbsence_cr - duration of last absence from home in computer readable format (minutes)
-
- lastDurSleep - duration of last sleep in following format: hours:minutes:seconds
+ lastDurPresence - duration of last presence at home in human readable format (hours:minutes:seconds)
+
+ -
+ lastDurPresence_cr - duration of last presence at home in computer readable format (minutes)
+
+ -
+ lastDurSleep - duration of last sleep in human readable format (hours:minutes:seconds)
+
+ -
+ lastDurSleep_cr - duration of last sleep in computer readable format (minutes)
-
lastLocation - the prior location
diff --git a/fhem/FHEM/20_ROOMMATE.pm b/fhem/FHEM/20_ROOMMATE.pm
index 6078c1983..6fea9e41d 100644
--- a/fhem/FHEM/20_ROOMMATE.pm
+++ b/fhem/FHEM/20_ROOMMATE.pm
@@ -23,9 +23,13 @@
# along with fhem. If not, see .
#
#
-# Version: 1.0.2
+# Version: 1.1.0
#
# Major Version History:
+# - 1.1.0 - 2014-04-07
+# -- new readings in computer readable format (*_cr)
+# -- format of readings durTimer readings changes from HH:MM:ss to minutes
+#
# - 1.0.0 - 2014-02-08
# -- First release
#
@@ -413,6 +417,13 @@ sub ROOMMATE_Set($@) {
$datetime, $hash->{READINGS}{lastSleep}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurSleep_cr",
+ ROOMMATE_TimeDiff(
+ $datetime, $hash->{READINGS}{lastSleep}{VAL}, "min"
+ )
+ );
}
# calculate presence state
@@ -483,6 +494,14 @@ sub ROOMMATE_Set($@) {
$datetime, $hash->{READINGS}{lastDeparture}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurAbsence_cr",
+ ROOMMATE_TimeDiff(
+ $datetime,
+ $hash->{READINGS}{lastDeparture}{VAL}, "min"
+ )
+ );
}
}
else {
@@ -499,6 +518,14 @@ sub ROOMMATE_Set($@) {
$datetime, $hash->{READINGS}{lastArrival}{VAL}
)
);
+ readingsBulkUpdate(
+ $hash,
+ "lastDurPresence_cr",
+ ROOMMATE_TimeDiff(
+ $datetime, $hash->{READINGS}{lastArrival}{VAL},
+ "min"
+ )
+ );
}
}
@@ -742,11 +769,10 @@ sub ROOMMATE_DurationTimer($;$) {
if ( defined( $hash->{READINGS}{lastArrival}{VAL} )
&& $hash->{READINGS}{lastArrival}{VAL} ne "-" )
{
- $diff =
+ $durPresence =
$timestampNow -
ROOMMATE_Datetime2Timestamp(
$hash->{READINGS}{lastArrival}{VAL} );
- $durPresence = int( $diff / 60 );
}
}
@@ -757,11 +783,10 @@ sub ROOMMATE_DurationTimer($;$) {
if ( defined( $hash->{READINGS}{lastDeparture}{VAL} )
&& $hash->{READINGS}{lastDeparture}{VAL} ne "-" )
{
- $diff =
+ $durAbsence =
$timestampNow -
ROOMMATE_Datetime2Timestamp(
$hash->{READINGS}{lastDeparture}{VAL} );
- $durAbsence = int( $diff / 60 );
}
}
@@ -772,23 +797,43 @@ sub ROOMMATE_DurationTimer($;$) {
if ( defined( $hash->{READINGS}{lastSleep}{VAL} )
&& $hash->{READINGS}{lastSleep}{VAL} ne "-" )
{
- $diff =
+ $durSleep =
$timestampNow -
ROOMMATE_Datetime2Timestamp( $hash->{READINGS}{lastSleep}{VAL} );
- $durSleep = int( $diff / 60 );
}
}
+ my $durPresence_hr =
+ ( $durPresence > 0 ) ? ROOMMATE_sec2time($durPresence) : "00:00:00";
+ my $durPresence_cr =
+ ( $durPresence > 60 ) ? int( $durPresence / 60 + 0.5 ) : 0;
+ my $durAbsence_hr =
+ ( $durAbsence > 0 ) ? ROOMMATE_sec2time($durAbsence) : "00:00:00";
+ my $durAbsence_cr =
+ ( $durAbsence > 60 ) ? int( $durAbsence / 60 + 0.5 ) : 0;
+ my $durSleep_hr =
+ ( $durSleep > 0 ) ? ROOMMATE_sec2time($durSleep) : "00:00:00";
+ my $durSleep_cr = ( $durSleep > 60 ) ? int( $durSleep / 60 + 0.5 ) : 0;
+
readingsBeginUpdate($hash) if ( !$silent );
- readingsBulkUpdate( $hash, "durTimerPresence", $durPresence )
+ readingsBulkUpdate( $hash, "durTimerPresence_cr", $durPresence_cr )
+ if ( !defined( $hash->{READINGS}{durTimerPresence_cr}{VAL} )
+ || $hash->{READINGS}{durTimerPresence_cr}{VAL} ne $durPresence_cr );
+ readingsBulkUpdate( $hash, "durTimerPresence", $durPresence_hr )
if ( !defined( $hash->{READINGS}{durTimerPresence}{VAL} )
- || $hash->{READINGS}{durTimerPresence}{VAL} ne $durPresence );
- readingsBulkUpdate( $hash, "durTimerAbsence", $durAbsence )
+ || $hash->{READINGS}{durTimerPresence}{VAL} ne $durPresence_hr );
+ readingsBulkUpdate( $hash, "durTimerAbsence_cr", $durAbsence_cr )
+ if ( !defined( $hash->{READINGS}{durTimerAbsence_cr}{VAL} )
+ || $hash->{READINGS}{durTimerAbsence_cr}{VAL} ne $durAbsence_cr );
+ readingsBulkUpdate( $hash, "durTimerAbsence", $durAbsence_hr )
if ( !defined( $hash->{READINGS}{durTimerAbsence}{VAL} )
- || $hash->{READINGS}{durTimerAbsence}{VAL} ne $durAbsence );
- readingsBulkUpdate( $hash, "durTimerSleep", $durSleep )
+ || $hash->{READINGS}{durTimerAbsence}{VAL} ne $durAbsence_hr );
+ readingsBulkUpdate( $hash, "durTimerSleep_cr", $durSleep_cr )
+ if ( !defined( $hash->{READINGS}{durTimerSleep_cr}{VAL} )
+ || $hash->{READINGS}{durTimerSleep_cr}{VAL} ne $durSleep_cr );
+ readingsBulkUpdate( $hash, "durTimerSleep", $durSleep_hr )
if ( !defined( $hash->{READINGS}{durTimerSleep}{VAL} )
- || $hash->{READINGS}{durTimerSleep}{VAL} ne $durSleep );
+ || $hash->{READINGS}{durTimerSleep}{VAL} ne $durSleep_hr );
readingsEndUpdate( $hash, 1 ) if ( !$silent );
ROOMMATE_InternalTimer( "DurationTimer", $timestampNow + 60,
@@ -798,13 +843,22 @@ sub ROOMMATE_DurationTimer($;$) {
}
###################################
-sub ROOMMATE_TimeDiff($$) {
- my ( $datetimeNow, $datetimeOld ) = @_;
+sub ROOMMATE_TimeDiff($$;$) {
+ my ( $datetimeNow, $datetimeOld, $format ) = @_;
my $timestampNow = ROOMMATE_Datetime2Timestamp($datetimeNow);
my $timestampOld = ROOMMATE_Datetime2Timestamp($datetimeOld);
my $timeDiff = $timestampNow - $timestampOld;
- my $hours = ( $timeDiff < 3600 ? 0 : int( $timeDiff / 3600 ) );
+
+ # return seconds
+ return int( $timeDiff + 0.5 ) if ( defined($format) && $format eq "sec" );
+
+ # return minutes
+ return int( $timeDiff / 60 + 0.5 )
+ if ( defined($format) && $format eq "min" );
+
+ # return human readable format
+ my $hours = ( $timeDiff < 3600 ? 0 : int( $timeDiff / 3600 ) );
$timeDiff -= ( $hours == 0 ? 0 : ( $hours * 3600 ) );
my $minutes = ( $timeDiff < 60 ? 0 : int( $timeDiff / 60 ) );
my $seconds = $timeDiff % 60;
@@ -831,6 +885,23 @@ sub ROOMMATE_Datetime2Timestamp($) {
return $timestamp;
}
+###################################
+sub ROOMMATE_sec2time($) {
+ my ($sec) = @_;
+
+ # return human readable format
+ my $hours = ( $sec < 3600 ? 0 : int( $sec / 3600 ) );
+ $sec -= ( $hours == 0 ? 0 : ( $hours * 3600 ) );
+ my $minutes = ( $sec < 60 ? 0 : int( $sec / 60 ) );
+ my $seconds = $sec % 60;
+
+ $hours = "0" . $hours if ( $hours < 10 );
+ $minutes = "0" . $minutes if ( $minutes < 10 );
+ $seconds = "0" . $seconds if ( $seconds < 10 );
+
+ return "$hours:$minutes:$seconds";
+}
+
###################################
sub ROOMMATE_InternalTimer($$$$$) {
my ( $modifier, $tim, $callback, $hash, $waitIfInitNotDone ) = @_;
@@ -1075,13 +1146,22 @@ sub ROOMMATE_StartInternalTimers($$) {
-
- durTimerAbsence - timer to show the duration of absence from home in minutes
+ durTimerAbsence - timer to show the duration of absence from home in human readable format (hours:minutes:seconds)
-
- durTimerPresence - timer to show the duration of presence at home in minutes
+ durTimerAbsence_cr - timer to show the duration of absence from home in computer readable format (minutes)
-
- durTimerSleep - timer to show the duration of sleep in minutes
+ durTimerPresence - timer to show the duration of presence at home in human readable format (hours:minutes:seconds)
+
+ -
+ durTimerPresence_cr - timer to show the duration of presence at home in computer readable format (minutes)
+
+ -
+ durTimerSleep - timer to show the duration of sleep in human readable format (hours:minutes:seconds)
+
+ -
+ durTimerSleep_cr - timer to show the duration of sleep in computer readable format (minutes)
-
lastArrival - timestamp of last arrival at home
@@ -1093,13 +1173,22 @@ sub ROOMMATE_StartInternalTimers($$) {
lastDeparture - timestamp of last departure from home
-
- lastDurAbsence - duration of last absence from home in following format: hours:minutes:seconds
+ lastDurAbsence - duration of last absence from home in human readable format (hours:minutes:seconds)
-
- lastDurPresence - duration of last presence at home in following format: hours:minutes:seconds
+ lastDurAbsence_cr - duration of last absence from home in computer readable format (minutes)
-
- lastDurSleep - duration of last sleep in following format: hours:minutes:seconds
+ lastDurPresence - duration of last presence at home in human readable format (hours:minutes:seconds)
+
+ -
+ lastDurPresence_cr - duration of last presence at home in computer readable format (minutes)
+
+ -
+ lastDurSleep - duration of last sleep in human readable format (hours:minutes:seconds)
+
+ -
+ lastDurSleep_cr - duration of last sleep in computer readable format (minutes)
-
lastLocation - the prior location