2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

RESIDENTStk: more robust regex for presenceDevices

git-svn-id: https://svn.fhem.de/fhem/trunk@14117 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
jpawlowski 2017-04-27 07:44:53 +00:00
parent 348c9fe900
commit 92dba1545a

View File

@ -1030,7 +1030,7 @@ m/^([a-zA-Z\d._]+(:[A-Za-z\d_\.\-\/]+)?,?)([a-zA-Z\d._]+(:[A-Za-z\d_\.\-\/]+)?,?
$attr{$name}{alias} = "Bewohner" $attr{$name}{alias} = "Bewohner"
if ( !defined( $attr{$name}{alias} ) if ( !defined( $attr{$name}{alias} )
|| $attr{$name}{alias} eq "Residents" ); || $attr{$name}{alias} eq "Residents" );
$attr{$name}{group} = "Haus Status" $attr{$name}{group} = "Zuhause Status"
if ( !defined( $attr{$name}{group} ) if ( !defined( $attr{$name}{group} )
|| $attr{$name}{group} eq "Home State" ); || $attr{$name}{group} eq "Home State" );
} }
@ -1052,7 +1052,7 @@ m/^([a-zA-Z\d._]+(:[A-Za-z\d_\.\-\/]+)?,?)([a-zA-Z\d._]+(:[A-Za-z\d_\.\-\/]+)?,?
|| $attr{$name}{alias} eq "Bewohner" ); || $attr{$name}{alias} eq "Bewohner" );
$attr{$name}{group} = "Home State" $attr{$name}{group} = "Home State"
if ( !defined( $attr{$name}{group} ) if ( !defined( $attr{$name}{group} )
|| $attr{$name}{group} eq "Haus Status" ); || $attr{$name}{group} eq "Zuhause Status" );
} }
$attr{$name}{devStateIcon} = $attr{$name}{devStateIcon} =
@ -1112,7 +1112,7 @@ sub RESIDENTStk_Notify($$) {
# DELETED would normally be handled by fhem.pl and imply # DELETED would normally be handled by fhem.pl and imply
# DoModuleTrigger instead of DoInitDev to update module # DoModuleTrigger instead of DoInitDev to update module
# init state # init state
next if ($_ =~ /^DELETED/); next if ( $_ =~ /^DELETED/ );
DoInitDev($name); DoInitDev($name);
} }
else { else {
@ -1318,9 +1318,9 @@ m/^0|false|absent|disappeared|unavailable|unreachable|disconnected|1|true|presen
for (@presenceDevices) { for (@presenceDevices) {
my $r = "presence"; my $r = "presence";
my $d = $_; my $d = $_;
if ( $d =~ m/^([a-zA-Z\d._]+)(?::([A-Za-z\d_\.\-\/]*))?$/ ) { if ( $d =~ m/^([a-zA-Z\d._]+):(?:([A-Za-z\d_\.\-\/]*))?$/ ) {
$d = $1; $d = $1;
$r = $2; $r = $2 if ($2 && $2 ne "");
} }
my $presenceState = my $presenceState =
@ -3490,8 +3490,16 @@ sub RESIDENTStk_StopInternalTimers($) {
RESIDENTStk_RemoveInternalTimer( "DurationTimer", $hash ); RESIDENTStk_RemoveInternalTimer( "DurationTimer", $hash );
} }
sub RESIDENTStk_findResidentSlaves($) { sub RESIDENTStk_findHomestateSlaves($) {
my ($hash) = @_; my ($hash) = @_;
my $ret = "";
$ret .= AttrVal( $hash->{NAME}, "rh_residentsDevice", "" );
return $ret;
}
sub RESIDENTStk_findResidentSlaves($;$) {
my ( $hash, $ret ) = @_;
my $ROOMMATES; my $ROOMMATES;
foreach ( devspec2array("TYPE=ROOMMATE") ) { foreach ( devspec2array("TYPE=ROOMMATE") ) {
next next
@ -3532,7 +3540,8 @@ sub RESIDENTStk_findResidentSlaves($) {
$hash->{GUESTS} = $GUESTS; $hash->{GUESTS} = $GUESTS;
} }
my $ret = ""; $ret = "" unless ($ret);
$ret .= "," unless ( $ret eq "" );
$ret .= $hash->{ROOMMATES} if ( $hash->{ROOMMATES} ); $ret .= $hash->{ROOMMATES} if ( $hash->{ROOMMATES} );
$ret .= "," unless ( $ret eq "" ); $ret .= "," unless ( $ret eq "" );
$ret .= $hash->{GUESTS} if ( $hash->{GUESTS} ); $ret .= $hash->{GUESTS} if ( $hash->{GUESTS} );
@ -3582,6 +3591,7 @@ sub RESIDENTStk_findDummySlaves($;$) {
sub RESIDENTStk_GetPrefixFromType($) { sub RESIDENTStk_GetPrefixFromType($) {
my ($name) = @_; my ($name) = @_;
return "" unless ( defined($name) ); return "" unless ( defined($name) );
return "rh_" if ( GetType($name) eq "HOMESTATE" );
return "rgr_" if ( GetType($name) eq "RESIDENTS" ); return "rgr_" if ( GetType($name) eq "RESIDENTS" );
return "rr_" if ( GetType($name) eq "ROOMMATE" ); return "rr_" if ( GetType($name) eq "ROOMMATE" );
return "rg_" if ( GetType($name) eq "GUEST" ); return "rg_" if ( GetType($name) eq "GUEST" );