mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-23 20:52:13 +00:00
10_RESIDENTS,20_ROOMMATE,20_GUEST: prevent "has no TYPE" messages
git-svn-id: https://svn.fhem.de/fhem/trunk@13870 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
48767b7c2f
commit
38dafd4f93
@ -137,9 +137,9 @@ sub RESIDENTS_Attr(@) {
|
||||
if ( !defined( $attr{$name}{group} )
|
||||
|| $attr{$name}{group} eq "Home State" );
|
||||
$attr{$name}{devStateIcon} =
|
||||
'.*anwesend:status_available:absent .*abwesend:status_away_1:home .*verreist:status_standby:home .*keine:control_building_empty .*bettfertig:status_night:asleep .*schläft:status_night:awoken .*aufgestanden:status_available:home .*:user_unknown:home';
|
||||
'.*anwesend:status_available:absent .*abwesend:status_away_1:home .*verreist:status_standby:home .*keine:control_building_empty .*bettfertig:status_night:asleep .*schlaeft:status_night:awoken .*aufgestanden:status_available:home .*:user_unknown:home';
|
||||
$attr{$name}{eventMap} =
|
||||
"home:anwesend absent:abwesend gone:verreist none:keine gotosleep:bettfertig asleep:schläft awoken:aufgestanden";
|
||||
"home:anwesend absent:abwesend gone:verreist none:keine gotosleep:bettfertig asleep:schlaeft awoken:aufgestanden";
|
||||
$attr{$name}{widgetOverride} =
|
||||
"state:anwesend,bettfertig,abwesend,verreist";
|
||||
}
|
||||
@ -212,9 +212,7 @@ sub RESIDENTS_Notify($$) {
|
||||
return unless ( $devName ne $hashName ); # only foreign events
|
||||
return if ( IsDisabled($hashName) or IsDisabled($devName) );
|
||||
return
|
||||
unless ( defined( $defs{$devName} )
|
||||
&& defined( $defs{$devName}{TYPE} )
|
||||
&& $defs{$devName}{TYPE} =~ /^(ROOMMATE|GUEST|dummy)$/i );
|
||||
unless ( RESIDENTStk_GetType( $devName, "ROOMMATE|GUEST|dummy" ) );
|
||||
|
||||
my @registeredRoommates =
|
||||
split( /,/, $hash->{ROOMMATES} )
|
||||
@ -463,11 +461,11 @@ sub RESIDENTS_Set($@) {
|
||||
|
||||
# define roommate
|
||||
fhem( "define " . $rr_name . " ROOMMATE " . $name )
|
||||
unless ( defined( $defs{$rr_name} ) );
|
||||
unless ( RESIDENTStk_IsDevice($rr_name) );
|
||||
|
||||
if ( defined( $defs{$rr_name} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($rr_name) ) {
|
||||
return "Can't create, device $rr_name already existing."
|
||||
unless ( $defs{$rr_name}{TYPE} eq "ROOMMATE" );
|
||||
unless ( RESIDENTStk_IsDevice( $rr_name, "ROOMMATE" ) );
|
||||
|
||||
my $lang =
|
||||
$a[3]
|
||||
@ -499,7 +497,7 @@ sub RESIDENTS_Set($@) {
|
||||
my $rr_name = $a[2];
|
||||
|
||||
# delete roommate
|
||||
if ( defined( $defs{$rr_name} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($rr_name) ) {
|
||||
Log3 $name, 3, "RESIDENTS $name: deleted device $rr_name"
|
||||
if fhem( "delete " . $rr_name );
|
||||
}
|
||||
@ -523,11 +521,11 @@ sub RESIDENTS_Set($@) {
|
||||
|
||||
# define guest
|
||||
fhem( "define " . $rg_name . " GUEST " . $name )
|
||||
unless ( defined( $defs{$rg_name} ) );
|
||||
unless ( RESIDENTStk_IsDevice($rg_name) );
|
||||
|
||||
if ( defined( $defs{$rg_name} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($rg_name) ) {
|
||||
return "Can't create, device $rg_name already existing."
|
||||
unless ( $defs{$rg_name}{TYPE} eq "GUEST" );
|
||||
unless ( RESIDENTStk_IsDevice( $rg_name, "GUEST" ) );
|
||||
|
||||
my $lang =
|
||||
$a[3]
|
||||
@ -559,7 +557,7 @@ sub RESIDENTS_Set($@) {
|
||||
my $rg_name = $a[2];
|
||||
|
||||
# delete guest
|
||||
if ( defined( $defs{$rg_name} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($rg_name) ) {
|
||||
Log3 $name, 3, "RESIDENTS $name: deleted device $rg_name"
|
||||
if fhem( "delete " . $rg_name );
|
||||
}
|
||||
@ -577,7 +575,7 @@ sub RESIDENTS_Set($@) {
|
||||
my $created = 0;
|
||||
|
||||
until ($created) {
|
||||
if ( defined( $defs{$wakeuptimerName} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($wakeuptimerName) ) {
|
||||
$i++;
|
||||
$wakeuptimerName = $name . "_wakeuptimer" . $i;
|
||||
}
|
||||
@ -1416,9 +1414,8 @@ sub RESIDENTS_UpdateReadings (@) {
|
||||
for my $wakeupDevice ( split /,/, $wakeupDeviceList ) {
|
||||
next if !$wakeupDevice;
|
||||
|
||||
if ( defined( $defs{$wakeupDevice} )
|
||||
&& $defs{$wakeupDevice}{TYPE} eq "dummy" )
|
||||
{
|
||||
if ( RESIDENTStk_GetType($wakeupDevice) eq "dummy" ) {
|
||||
|
||||
# forced-stop only if resident is not present anymore
|
||||
if ( $newpresence eq "present" ) {
|
||||
fhem "set $wakeupDevice:FILTER=running!=0 end";
|
||||
|
@ -73,7 +73,7 @@ sub GUEST_Define($$) {
|
||||
if ( defined( $hash->{RESIDENTGROUPS} ) ) {
|
||||
foreach ( split( /,/, $hash->{RESIDENTGROUPS} ) ) {
|
||||
RESIDENTStk_findResidentSlaves( $defs{$_} )
|
||||
if ( defined( $defs{$_} ) );
|
||||
if ( RESIDENTStk_IsDevice( $_, "RESIDENTS" ) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -177,9 +177,9 @@ sub GUEST_Attr(@) {
|
||||
|
||||
if ( $lang eq "DE" ) {
|
||||
$attr{$name}{devStateIcon} =
|
||||
'.*anwesend:user_available:absent .*abwesend:user_away:home .*keiner:control_building_empty:home .*bettfertig:scene_toilet:asleep .*schläft:scene_sleeping:awoken .*aufgestanden:scene_sleeping_alternat:home .*:user_unknown:home';
|
||||
'.*anwesend:user_available:absent .*abwesend:user_away:home .*keiner:control_building_empty:home .*bettfertig:scene_toilet:asleep .*schlaeft:scene_sleeping:awoken .*aufgestanden:scene_sleeping_alternat:home .*:user_unknown:home';
|
||||
$attr{$name}{eventMap} =
|
||||
"home:anwesend absent:abwesend none:keiner gotosleep:bettfertig asleep:schläft awoken:aufgestanden";
|
||||
"home:anwesend absent:abwesend none:keiner gotosleep:bettfertig asleep:schlaeft awoken:aufgestanden";
|
||||
$attr{$name}{widgetOverride} =
|
||||
"state:anwesend,bettfertig,abwesend,keiner";
|
||||
}
|
||||
@ -213,7 +213,7 @@ sub GUEST_Undefine($$) {
|
||||
delete $hash->{RESIDENTGROUPS};
|
||||
foreach ( split( /,/, $old ) ) {
|
||||
RESIDENTStk_findResidentSlaves( $defs{$_} )
|
||||
if ( defined( $defs{$_} ) );
|
||||
if ( RESIDENTStk_IsDevice( $_, "RESIDENTS" ) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -247,8 +247,7 @@ sub GUEST_Notify($$) {
|
||||
|
||||
# make sure computeAfterInit is set at at-device
|
||||
# and re-calculate on our own this time
|
||||
if ( defined( $defs{$wakeupAtdevice} )
|
||||
&& $defs{$wakeupAtdevice}{TYPE} eq "at"
|
||||
if ( RESIDENTStk_IsDevice( $wakeupAtdevice, "at" )
|
||||
&& AttrVal( $wakeupAtdevice, "computeAfterInit", 0 ) ne
|
||||
"1" )
|
||||
{
|
||||
@ -579,9 +578,8 @@ sub GUEST_Set($@) {
|
||||
for my $wakeupDevice ( split /,/, $wakeupDeviceList ) {
|
||||
next if !$wakeupDevice;
|
||||
|
||||
if ( defined( $defs{$wakeupDevice} )
|
||||
&& $defs{$wakeupDevice}{TYPE} eq "dummy" )
|
||||
{
|
||||
if ( RESIDENTStk_IsDevice( $wakeupDevice, "dummy" ) ) {
|
||||
|
||||
# forced-stop only if resident is not present anymore
|
||||
if ( $newpresence eq "present" ) {
|
||||
Log3 $name, 4,
|
||||
@ -696,15 +694,10 @@ sub GUEST_Set($@) {
|
||||
split( ' ', $attr{$name}{"rg_passPresenceTo"} );
|
||||
|
||||
foreach my $object (@linkedObjects) {
|
||||
if (
|
||||
defined( $defs{$object} )
|
||||
if ( RESIDENTStk_IsDevice( $object, "ROOMMATE|GUEST" )
|
||||
&& $defs{$object} ne $name
|
||||
&& defined( $defs{$object}{TYPE} )
|
||||
&& ( $defs{$object}{TYPE} eq "ROOMMATE"
|
||||
|| $defs{$object}{TYPE} eq "GUEST" )
|
||||
&& ReadingsVal( $object, "state", "" ) ne "gone"
|
||||
&& ReadingsVal( $object, "state", "" ) ne "none"
|
||||
)
|
||||
&& ReadingsVal( $object, "state", "" ) ne "none" )
|
||||
{
|
||||
fhem("set $object $newstate");
|
||||
}
|
||||
@ -874,7 +867,7 @@ sub GUEST_Set($@) {
|
||||
my $created = 0;
|
||||
|
||||
until ($created) {
|
||||
if ( defined( $defs{$wakeuptimerName} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($wakeuptimerName) ) {
|
||||
$i++;
|
||||
$wakeuptimerName = $name . "_wakeuptimer" . $i;
|
||||
}
|
||||
@ -927,7 +920,7 @@ sub GUEST_Set($@) {
|
||||
elsif ( lc( $a[2] ) eq "locationmap" ) {
|
||||
my $locationmapName = $name . "_map";
|
||||
|
||||
if ( defined( $defs{$locationmapName} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($locationmapName) ) {
|
||||
return
|
||||
"Device $locationmapName existing already, delete it first to have it re-created.";
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ sub ROOMMATE_Define($$) {
|
||||
if ( defined( $hash->{RESIDENTGROUPS} ) ) {
|
||||
foreach ( split( /,/, $hash->{RESIDENTGROUPS} ) ) {
|
||||
RESIDENTStk_findResidentSlaves( $defs{$_} )
|
||||
if ( defined( $defs{$_} ) );
|
||||
if ( RESIDENTStk_IsDevice( $_, "RESIDENTS" ) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -180,9 +180,9 @@ sub ROOMMATE_Attr(@) {
|
||||
|
||||
if ( $lang eq "DE" ) {
|
||||
$attr{$name}{devStateIcon} =
|
||||
'.*anwesend:user_available:absent .*abwesend:user_away:home .*verreist:user_ext_away:home .*bettfertig:scene_toilet:asleep .*schläft:scene_sleeping:awoken .*aufgestanden:scene_sleeping_alternat:home .*:user_unknown:home';
|
||||
'.*anwesend:user_available:absent .*abwesend:user_away:home .*verreist:user_ext_away:home .*bettfertig:scene_toilet:asleep .*schlaeft:scene_sleeping:awoken .*aufgestanden:scene_sleeping_alternat:home .*:user_unknown:home';
|
||||
$attr{$name}{eventMap} =
|
||||
"home:anwesend absent:abwesend gone:verreist gotosleep:bettfertig asleep:schläft awoken:aufgestanden";
|
||||
"home:anwesend absent:abwesend gone:verreist gotosleep:bettfertig asleep:schlaeft awoken:aufgestanden";
|
||||
$attr{$name}{widgetOverride} =
|
||||
"state:anwesend,bettfertig,abwesend,verreist";
|
||||
}
|
||||
@ -216,7 +216,7 @@ sub ROOMMATE_Undefine($$) {
|
||||
delete $hash->{RESIDENTGROUPS};
|
||||
foreach ( split( /,/, $old ) ) {
|
||||
RESIDENTStk_findResidentSlaves( $defs{$_} )
|
||||
if ( defined( $defs{$_} ) );
|
||||
if ( RESIDENTStk_IsDevice( $_, "RESIDENTS" ) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -250,8 +250,7 @@ sub ROOMMATE_Notify($$) {
|
||||
|
||||
# make sure computeAfterInit is set at at-device
|
||||
# and re-calculate on our own this time
|
||||
if ( defined( $defs{$wakeupAtdevice} )
|
||||
&& $defs{$wakeupAtdevice}{TYPE} eq "at"
|
||||
if ( RESIDENTStk_IsDevice( $wakeupAtdevice, "at" )
|
||||
&& AttrVal( $wakeupAtdevice, "computeAfterInit", 0 ) ne
|
||||
"1" )
|
||||
{
|
||||
@ -581,9 +580,8 @@ sub ROOMMATE_Set($@) {
|
||||
for my $wakeupDevice ( split /,/, $wakeupDeviceList ) {
|
||||
next if !$wakeupDevice;
|
||||
|
||||
if ( defined( $defs{$wakeupDevice} )
|
||||
&& $defs{$wakeupDevice}{TYPE} eq "dummy" )
|
||||
{
|
||||
if ( RESIDENTStk_IsDevice( $wakeupDevice, "dummy" ) ) {
|
||||
|
||||
# forced-stop only if resident is not present anymore
|
||||
if ( $newpresence eq "present" ) {
|
||||
Log3 $name, 4,
|
||||
@ -698,15 +696,10 @@ sub ROOMMATE_Set($@) {
|
||||
split( ' ', $attr{$name}{"rr_passPresenceTo"} );
|
||||
|
||||
foreach my $object (@linkedObjects) {
|
||||
if (
|
||||
defined( $defs{$object} )
|
||||
if ( RESIDENTStk_IsDevice( $object, "ROOMMATE|GUEST" )
|
||||
&& $defs{$object} ne $name
|
||||
&& defined( $defs{$object}{TYPE} )
|
||||
&& ( $defs{$object}{TYPE} eq "ROOMMATE"
|
||||
|| $defs{$object}{TYPE} eq "GUEST" )
|
||||
&& ReadingsVal( $object, "state", "" ) ne "gone"
|
||||
&& ReadingsVal( $object, "state", "" ) ne "none"
|
||||
)
|
||||
&& ReadingsVal( $object, "state", "" ) ne "none" )
|
||||
{
|
||||
fhem("set $object $newstate");
|
||||
}
|
||||
@ -856,7 +849,7 @@ sub ROOMMATE_Set($@) {
|
||||
my $created = 0;
|
||||
|
||||
until ($created) {
|
||||
if ( defined( $defs{$wakeuptimerName} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($wakeuptimerName) ) {
|
||||
$i++;
|
||||
$wakeuptimerName = $name . "_wakeuptimer" . $i;
|
||||
}
|
||||
@ -909,7 +902,7 @@ sub ROOMMATE_Set($@) {
|
||||
elsif ( lc( $a[2] ) eq "locationmap" ) {
|
||||
my $locationmapName = $name . "_map";
|
||||
|
||||
if ( defined( $defs{$locationmapName} ) ) {
|
||||
if ( RESIDENTStk_IsDevice($locationmapName) ) {
|
||||
return
|
||||
"Device $locationmapName existing already, delete it first to have it re-created.";
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user