2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-01 01:09:47 +00:00

RESIDENTStk: improve code robustness

git-svn-id: https://svn.fhem.de/fhem/trunk@10378 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
jpawlowski 2016-01-06 15:48:18 +00:00
parent af58a94eda
commit d0803640ab

View File

@ -87,12 +87,27 @@ sub RESIDENTStk_wakeupSet($$) {
my $wakeupUserdeviceRealname = "Bewohner";
if (defined($defs{$wakeupUserdevice})) {
if ($defs{$wakeupUserdevice}{TYPE} eq "ROOMMATE") {
$wakeupUserdeviceRealname = AttrVal( AttrVal($NAME,"wakeupUserdevice",""), AttrVal( AttrVal($NAME,"wakeupUserdevice",""), "rr_realname", "group" ), $wakeupUserdeviceRealname );
} elsif ($defs{$wakeupUserdevice}{TYPE} eq "GUEST") {
$wakeupUserdeviceRealname = AttrVal( AttrVal($NAME,"wakeupUserdevice",""), AttrVal( AttrVal($NAME,"wakeupUserdevice",""), "rg_realname", "group" ), $wakeupUserdeviceRealname );
}
if ( defined( $defs{$wakeupUserdevice} ) ) {
if ( $defs{$wakeupUserdevice}{TYPE} eq "ROOMMATE" ) {
$wakeupUserdeviceRealname = AttrVal(
AttrVal( $NAME, "wakeupUserdevice", "" ),
AttrVal(
AttrVal( $NAME, "wakeupUserdevice", "" ), "rr_realname",
"group"
),
$wakeupUserdeviceRealname
);
}
elsif ( $defs{$wakeupUserdevice}{TYPE} eq "GUEST" ) {
$wakeupUserdeviceRealname = AttrVal(
AttrVal( $NAME, "wakeupUserdevice", "" ),
AttrVal(
AttrVal( $NAME, "wakeupUserdevice", "" ), "rg_realname",
"group"
),
$wakeupUserdeviceRealname
);
}
}
# check for required userattr attribute
@ -1553,6 +1568,13 @@ sub RESIDENTStk_wakeupGetNext($) {
sub RESIDENTStk_TimeDiff ($$;$) {
my ( $datetimeNow, $datetimeOld, $format ) = @_;
if ( $datetimeNow eq "" || $datetimeOld eq "" ) {
Log3 $name, 5,
"RESIDENTStk $name: empty data: datetimeNow='$datetimeNow' datetimeOld='$datetimeOld'";
$datetimeNow = "1970-01-01 00:00:00";
$datetimeOld = "1970-01-01 00:00:00";
}
my $timestampNow = RESIDENTStk_Datetime2Timestamp($datetimeNow);
my $timestampOld = RESIDENTStk_Datetime2Timestamp($datetimeOld);
my $timeDiff = $timestampNow - $timestampOld;
@ -1571,14 +1593,29 @@ sub RESIDENTStk_TimeDiff ($$;$) {
sub RESIDENTStk_Datetime2Timestamp($) {
my ($datetime) = @_;
my $timestamp;
my ( $date, $time, $y, $m, $d, $hour, $min, $sec, $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 );
( $date, $time ) = split( ' ', $datetime );
( $y, $m, $d ) = split( '-', $date );
( $hour, $min, $sec ) = split( ':', $time );
$m -= 01;
$timestamp = timelocal( $sec, $min, $hour, $d, $m, $y );
$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;
}