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

All my modules: use IsDevice() and GetType()

git-svn-id: https://svn.fhem.de/fhem/trunk@13899 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
jpawlowski 2017-04-04 18:01:08 +00:00
parent dcb0ce6e5e
commit eedc05ffab
10 changed files with 149 additions and 177 deletions

View File

@ -212,7 +212,7 @@ sub RESIDENTS_Notify($$) {
return unless ( $devName ne $hashName ); # only foreign events
return if ( IsDisabled($hashName) or IsDisabled($devName) );
return
unless ( RESIDENTStk_IsDevice( $devName, "ROOMMATE|GUEST|dummy" ) );
unless ( IsDevice( $devName, "ROOMMATE|GUEST|dummy" ) );
my @registeredRoommates =
split( /,/, $hash->{ROOMMATES} )
@ -461,11 +461,11 @@ sub RESIDENTS_Set($@) {
# define roommate
fhem( "define " . $rr_name . " ROOMMATE " . $name )
unless ( RESIDENTStk_IsDevice($rr_name) );
unless ( IsDevice($rr_name) );
if ( RESIDENTStk_IsDevice($rr_name) ) {
if ( IsDevice($rr_name) ) {
return "Can't create, device $rr_name already existing."
unless ( RESIDENTStk_IsDevice( $rr_name, "ROOMMATE" ) );
unless ( IsDevice( $rr_name, "ROOMMATE" ) );
my $lang =
$a[3]
@ -497,7 +497,7 @@ sub RESIDENTS_Set($@) {
my $rr_name = $a[2];
# delete roommate
if ( RESIDENTStk_IsDevice($rr_name) ) {
if ( IsDevice($rr_name) ) {
Log3 $name, 3, "RESIDENTS $name: deleted device $rr_name"
if fhem( "delete " . $rr_name );
}
@ -521,11 +521,11 @@ sub RESIDENTS_Set($@) {
# define guest
fhem( "define " . $rg_name . " GUEST " . $name )
unless ( RESIDENTStk_IsDevice($rg_name) );
unless ( IsDevice($rg_name) );
if ( RESIDENTStk_IsDevice($rg_name) ) {
if ( IsDevice($rg_name) ) {
return "Can't create, device $rg_name already existing."
unless ( RESIDENTStk_IsDevice( $rg_name, "GUEST" ) );
unless ( IsDevice( $rg_name, "GUEST" ) );
my $lang =
$a[3]
@ -557,7 +557,7 @@ sub RESIDENTS_Set($@) {
my $rg_name = $a[2];
# delete guest
if ( RESIDENTStk_IsDevice($rg_name) ) {
if ( IsDevice($rg_name) ) {
Log3 $name, 3, "RESIDENTS $name: deleted device $rg_name"
if fhem( "delete " . $rg_name );
}
@ -575,7 +575,7 @@ sub RESIDENTS_Set($@) {
my $created = 0;
until ($created) {
if ( RESIDENTStk_IsDevice($wakeuptimerName) ) {
if ( IsDevice($wakeuptimerName) ) {
$i++;
$wakeuptimerName = $name . "_wakeuptimer" . $i;
}
@ -1414,7 +1414,7 @@ sub RESIDENTS_UpdateReadings (@) {
for my $wakeupDevice ( split /,/, $wakeupDeviceList ) {
next if !$wakeupDevice;
if ( RESIDENTStk_IsDevice( $wakeupDevice, "dummy" ) ) {
if ( IsDevice( $wakeupDevice, "dummy" ) ) {
# forced-stop only if resident is not present anymore
if ( $newpresence eq "present" ) {

View File

@ -73,7 +73,7 @@ sub GUEST_Define($$) {
if ( defined( $hash->{RESIDENTGROUPS} ) ) {
foreach ( split( /,/, $hash->{RESIDENTGROUPS} ) ) {
RESIDENTStk_findResidentSlaves( $defs{$_} )
if ( RESIDENTStk_IsDevice( $_, "RESIDENTS" ) );
if ( IsDevice( $_, "RESIDENTS" ) );
}
}
@ -213,7 +213,7 @@ sub GUEST_Undefine($$) {
delete $hash->{RESIDENTGROUPS};
foreach ( split( /,/, $old ) ) {
RESIDENTStk_findResidentSlaves( $defs{$_} )
if ( RESIDENTStk_IsDevice( $_, "RESIDENTS" ) );
if ( IsDevice( $_, "RESIDENTS" ) );
}
}
@ -247,7 +247,7 @@ sub GUEST_Notify($$) {
# make sure computeAfterInit is set at at-device
# and re-calculate on our own this time
if ( RESIDENTStk_IsDevice( $wakeupAtdevice, "at" )
if ( IsDevice( $wakeupAtdevice, "at" )
&& AttrVal( $wakeupAtdevice, "computeAfterInit", 0 ) ne
"1" )
{
@ -578,7 +578,7 @@ sub GUEST_Set($@) {
for my $wakeupDevice ( split /,/, $wakeupDeviceList ) {
next if !$wakeupDevice;
if ( RESIDENTStk_IsDevice( $wakeupDevice, "dummy" ) ) {
if ( IsDevice( $wakeupDevice, "dummy" ) ) {
# forced-stop only if resident is not present anymore
if ( $newpresence eq "present" ) {
@ -694,7 +694,7 @@ sub GUEST_Set($@) {
split( ' ', $attr{$name}{"rg_passPresenceTo"} );
foreach my $object (@linkedObjects) {
if ( RESIDENTStk_IsDevice( $object, "ROOMMATE|GUEST" )
if ( IsDevice( $object, "ROOMMATE|GUEST" )
&& $defs{$object} ne $name
&& ReadingsVal( $object, "state", "" ) ne "gone"
&& ReadingsVal( $object, "state", "" ) ne "none" )
@ -867,7 +867,7 @@ sub GUEST_Set($@) {
my $created = 0;
until ($created) {
if ( RESIDENTStk_IsDevice($wakeuptimerName) ) {
if ( IsDevice($wakeuptimerName) ) {
$i++;
$wakeuptimerName = $name . "_wakeuptimer" . $i;
}
@ -920,7 +920,7 @@ sub GUEST_Set($@) {
elsif ( lc( $a[2] ) eq "locationmap" ) {
my $locationmapName = $name . "_map";
if ( RESIDENTStk_IsDevice($locationmapName) ) {
if ( IsDevice($locationmapName) ) {
return
"Device $locationmapName existing already, delete it first to have it re-created.";
}

View File

@ -74,7 +74,7 @@ sub ROOMMATE_Define($$) {
if ( defined( $hash->{RESIDENTGROUPS} ) ) {
foreach ( split( /,/, $hash->{RESIDENTGROUPS} ) ) {
RESIDENTStk_findResidentSlaves( $defs{$_} )
if ( RESIDENTStk_IsDevice( $_, "RESIDENTS" ) );
if ( IsDevice( $_, "RESIDENTS" ) );
}
}
@ -216,7 +216,7 @@ sub ROOMMATE_Undefine($$) {
delete $hash->{RESIDENTGROUPS};
foreach ( split( /,/, $old ) ) {
RESIDENTStk_findResidentSlaves( $defs{$_} )
if ( RESIDENTStk_IsDevice( $_, "RESIDENTS" ) );
if ( IsDevice( $_, "RESIDENTS" ) );
}
}
@ -250,7 +250,7 @@ sub ROOMMATE_Notify($$) {
# make sure computeAfterInit is set at at-device
# and re-calculate on our own this time
if ( RESIDENTStk_IsDevice( $wakeupAtdevice, "at" )
if ( IsDevice( $wakeupAtdevice, "at" )
&& AttrVal( $wakeupAtdevice, "computeAfterInit", 0 ) ne
"1" )
{
@ -580,7 +580,7 @@ sub ROOMMATE_Set($@) {
for my $wakeupDevice ( split /,/, $wakeupDeviceList ) {
next if !$wakeupDevice;
if ( RESIDENTStk_IsDevice( $wakeupDevice, "dummy" ) ) {
if ( IsDevice( $wakeupDevice, "dummy" ) ) {
# forced-stop only if resident is not present anymore
if ( $newpresence eq "present" ) {
@ -696,7 +696,7 @@ sub ROOMMATE_Set($@) {
split( ' ', $attr{$name}{"rr_passPresenceTo"} );
foreach my $object (@linkedObjects) {
if ( RESIDENTStk_IsDevice( $object, "ROOMMATE|GUEST" )
if ( IsDevice( $object, "ROOMMATE|GUEST" )
&& $defs{$object} ne $name
&& ReadingsVal( $object, "state", "" ) ne "gone"
&& ReadingsVal( $object, "state", "" ) ne "none" )
@ -849,7 +849,7 @@ sub ROOMMATE_Set($@) {
my $created = 0;
until ($created) {
if ( RESIDENTStk_IsDevice($wakeuptimerName) ) {
if ( IsDevice($wakeuptimerName) ) {
$i++;
$wakeuptimerName = $name . "_wakeuptimer" . $i;
}
@ -902,7 +902,7 @@ sub ROOMMATE_Set($@) {
elsif ( lc( $a[2] ) eq "locationmap" ) {
my $locationmapName = $name . "_map";
if ( RESIDENTStk_IsDevice($locationmapName) ) {
if ( IsDevice($locationmapName) ) {
return
"Device $locationmapName existing already, delete it first to have it re-created.";
}

View File

@ -136,7 +136,7 @@ sub ONKYO_AVR_removeExtension($) {
my $url = "?/$link";
my $name = $data{FWEXT}{$url}{deviceName};
Log3 $name, 2,
"ONKYO_AVR $name: Unregistering ONKYO_AVR for webhook URL $url...";
"ONKYO_AVR $name: Unregistering ONKYO_AVR for webhook URI $url...";
delete $data{FWEXT}{$url};
}

View File

@ -2652,9 +2652,7 @@ m/^\s*(([{\[][\s\S]+[}\]])|(<html>\s*<head>\s*<title>\s*Ok\s*<\/title>\s*<\/head
Log3 $name, 5, $logtext;
# next for if HUE device is not ready
if ( !defined( $defs{$dev} )
|| !defined( $defs{$dev}{TYPE} )
|| $defs{$dev}{TYPE} ne "HUEDevice"
if ( !IsDevice( $dev, "HUEDevice" )
|| ReadingsVal( $dev, "reachable", 0 ) ne
"1" )
{

View File

@ -1030,7 +1030,7 @@ sub THINKINGCLEANER_removeExtension($) {
my $url = "?/$link";
my $name = $data{FWEXT}{$url}{deviceName};
Log3 $name, 2,
"THINKINGCLEANER $name: Unregistering THINKINGCLEANER for webhook URL $url...";
"THINKINGCLEANER $name: Unregistering THINKINGCLEANER for webhook URI $url...";
delete $data{FWEXT}{$url};
}

View File

@ -255,9 +255,10 @@ sub msgConfig_Set($@) {
$device =~ s/[\s\t-]+/_/g;
return "Device $device is already existing but not a dummy device"
if ( msgConfig_IsDevice($device) && msgConfig_GetType($device) ne "dummy" );
if ( IsDevice($device)
&& GetType($device) ne "dummy" );
if ( !msgConfig_IsDevice($device) ) {
if ( !IsDevice($device) ) {
$return = fhem( "define $device dummy", 1 );
$return .= "Device $device was created"
if ( $return eq "" );
@ -302,9 +303,10 @@ sub msgConfig_Set($@) {
if ( defined( $a[0] ) && $a[0] eq "de" );
return "Device $device is already existing but not a dummy device"
if ( msgConfig_IsDevice($device) && msgConfig_GetType($device) ne "dummy" );
if ( IsDevice($device)
&& GetType($device) ne "dummy" );
if ( !msgConfig_IsDevice($device) ) {
if ( !IsDevice($device) ) {
$return = fhem( "define $device dummy", 1 );
$return .= "Device $device was created"
if ( $return eq "" );
@ -361,19 +363,17 @@ sub msgConfig_Set($@) {
return
"Device $device is already existing but not a RESIDENTS or ROOMMATE device"
if ( msgConfig_IsDevice($device)
&& !msgConfig_IsDevice( $device, "RESIDENTS|ROOMMATE" ) );
if ( IsDevice($device)
&& !IsDevice( $device, "RESIDENTS|ROOMMATE" ) );
if ( !msgConfig_IsDevice($device) ) {
if ( !IsDevice($device) ) {
$return = fhem( "define $device RESIDENTS", 1 );
$return .= "RESIDENTS device $device was created."
if ( $return eq "" );
}
else {
$return =
"Existing "
. msgConfig_GetType($device)
. " device $device was updated.";
"Existing " . GetType($device) . " device $device was updated.";
}
my $txt = fhem("attr $device rgr_lang $lang")
@ -426,12 +426,12 @@ sub msgConfig_Get($@) {
# Check device
if ( $devicesReq ne "" ) {
foreach my $device ( split( /,/, $devicesReq ) ) {
if ( msgConfig_IsDevice($device) ) {
$UserDeviceTypes .= "," . msgConfig_GetType($device)
if ( IsDevice($device) ) {
$UserDeviceTypes .= "," . GetType($device)
if ( $UserDeviceTypes ne ""
&& $msgType ne "mail"
&& $device ne $name );
$UserDeviceTypes = msgConfig_GetType($device)
$UserDeviceTypes = GetType($device)
if ( $UserDeviceTypes eq ""
&& $msgType ne "mail"
&& $device ne $name );
@ -470,7 +470,7 @@ sub msgConfig_Get($@) {
if ( $output == 0 );
$return .=
" $device (DEVICE TYPE: "
. msgConfig_GetType($device) . ")\n"
. GetType($device) . ")\n"
if ( $output == 0 );
$output = 1 if ( $output == 0 );
@ -665,38 +665,62 @@ sub msgConfig_FindReadingsVal($$$$) {
}
########################################
sub msgConfig_IsDevice($;$) {
my $devname = shift;
my $devtype = shift;
$devtype = ".*" unless ( $devtype && $devtype ne "" );
sub msgConfig_QueueAdd(@) {
my (
$msgA, $params, $datetime, $msgID,
$minorID, $type, $recipient, $subRecipient,
$termRecipient, $priority, $title, $msg
) = @_;
return 1
if ( defined($devname)
&& defined( $defs{$devname} )
&& ref( $defs{$devname} ) eq "HASH"
&& defined( $defs{$devname}{NAME} )
&& $defs{$devname}{NAME} eq $devname
&& defined( $defs{$devname}{TYPE} )
&& $defs{$devname}{TYPE} =~ m/^$devtype$/
&& defined( $modules{ $defs{$devname}{TYPE} } )
&& defined( $modules{ $defs{$devname}{TYPE} }{LOADED} )
&& $modules{ $defs{$devname}{TYPE} }{LOADED} );
my $name = $modules{msgConfig}{defptr}{NAME};
delete $defs{$devname}
if ( defined($devname)
&& defined( $defs{$devname} )
&& $devtype eq ".*" );
return 0 if ( $defs{$name}{queue}{$recipient}{"$msgID.$minorID"} );
return 0;
$defs{$name}{queue}{$recipient}{"$msgID.$minorID"} = {
msgOrig => $msgA,
msgOrigParams => $params,
datetime => $datetime,
majorId => $msgID,
minorId => $minorID,
type => $type,
recipient => $recipient,
subRecipient => $subRecipient,
terminalRecipient => $termRecipient,
priority => $priority,
title => $title,
message => $msg,
};
delete $defs{$name}{queue}{$recipient}{"$msgID.$minorID"}{msgOrigParams}
{msgQID};
readingsSingleUpdate(
$defs{$name},
"Q_" . $recipient,
scalar keys %{ $defs{$name}{queue}{$recipient} }, 1
);
return 1;
}
########################################
sub msgConfig_GetType($;$) {
my $devname = shift;
my $default = shift;
sub msgConfig_QueueReleaseMsgId($$) {
my ( $recipient, $msgID ) = @_;
return $default unless ( msgConfig_IsDevice($devname) );
return $defs{$devname}{TYPE};
my $name = $modules{msgConfig}{defptr}{NAME};
return 0
unless ( $defs{$name}{queue}
&& $defs{$name}{queue}{$recipient}
&& $defs{$name}{queue}{$recipient}{$msgID} );
delete $defs{$name}{queue}{$recipient}{$msgID};
my $c = scalar keys %{ $defs{$name}{queue}{$recipient} };
delete $defs{$name}{queue}{$recipient} unless ($c);
readingsSingleUpdate( $defs{$name}, "Q_" . $recipient, $c, 1 );
return 1;
}
1;

View File

@ -845,45 +845,45 @@ sub powerMap_AttrVal($$$$) {
# $defs{device}{TYPE}{attribute}
return $defs{$d}{$TYPE}{$n}
if ( $d
&& defined( $defs{$d} )
&& IsDevice($d)
&& defined( $defs{$d}{$TYPE} )
&& defined( $defs{$d}{$TYPE}{$n} ) );
# $defs{device}{.TYPE}{attribute}
return $defs{$d}{".$TYPE"}{$n}
if ( $d
&& defined( $defs{$d} )
&& IsDevice($d)
&& defined( $defs{$d}{".$TYPE"} )
&& defined( $defs{$d}{".$TYPE"}{$n} ) );
# $defs{device}{TYPE_attribute}
return $defs{$d}{ $TYPE . "_" . $n }
if ( $d
&& defined( $defs{$d} )
&& IsDevice($d)
&& defined( $defs{$d}{ $TYPE . "_" . $n } ) );
# $defs{device}{attribute}
return $defs{$d}{$n}
if ( $d
&& defined( $defs{$d} )
&& IsDevice($d)
&& defined( $defs{$d}{$n} ) );
# $defs{device}{.TYPE_attribute}
return $defs{$d}{ "." . $TYPE . "_" . $n }
if ( $d
&& defined( $defs{$d} )
&& IsDevice($d)
&& defined( $defs{$d}{ "." . $TYPE . "_" . $n } ) );
# $defs{device}{.attribute}
return $defs{$d}{".$n"}
if ( $d
&& defined( $defs{$d} )
&& IsDevice($d)
&& defined( $defs{$d}{".$n"} ) );
# module HASH
#
my $t = $defs{$d}{TYPE};
my $t = GetType($d);
# $modules{module}{TYPE}{attribute}
return $modules{$t}{$TYPE}{$n}
@ -1024,8 +1024,7 @@ sub powerMap_findPowerMaps($;$) {
# directly return any existing device specific definition
if ( $dev && $dev !~ /^:/ ) {
return {}
unless ( defined( $defs{$dev} )
&& defined( $defs{$dev}{TYPE} ) );
unless ( IsDevice($dev) );
return $defs{$dev}{powerMap}{map}
if (

View File

@ -87,7 +87,7 @@ m/^(off|nextrun|trigger|start|stop|end|reset|auto|[\+\-][1-9]*[0-9]*|[\+\-]?[0-9
my $wakeupUserdeviceRealname = "Bewohner";
if ( RESIDENTStk_IsDevice( $wakeupUserdevice, "ROOMMATE" ) ) {
if ( IsDevice( $wakeupUserdevice, "ROOMMATE" ) ) {
$wakeupUserdeviceRealname = AttrVal(
AttrVal( $NAME, "wakeupUserdevice", "" ),
AttrVal(
@ -97,7 +97,7 @@ m/^(off|nextrun|trigger|start|stop|end|reset|auto|[\+\-][1-9]*[0-9]*|[\+\-]?[0-9
$wakeupUserdeviceRealname
);
}
elsif ( RESIDENTStk_IsDevice( $wakeupUserdevice, "GUEST" ) ) {
elsif ( IsDevice( $wakeupUserdevice, "GUEST" ) ) {
$wakeupUserdeviceRealname = AttrVal(
AttrVal( $NAME, "wakeupUserdevice", "" ),
AttrVal(
@ -122,13 +122,11 @@ m/^(off|nextrun|trigger|start|stop|end|reset|auto|[\+\-][1-9]*[0-9]*|[\+\-]?[0-9
Log3 $NAME, 3,
"RESIDENTStk $NAME: WARNING - set attribute wakeupUserdevice before running wakeup function!";
}
elsif ( !RESIDENTStk_IsDevice($wakeupUserdevice) ) {
elsif ( !IsDevice($wakeupUserdevice) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: WARNING - user device $wakeupUserdevice does not exist!";
}
elsif (
!RESIDENTStk_IsDevice( $wakeupUserdevice, "RESIDENTS|ROOMMATE|GUEST" ) )
{
elsif ( !IsDevice( $wakeupUserdevice, "RESIDENTS|ROOMMATE|GUEST" ) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: WARNING - defined user device '$wakeupUserdevice' is not a RESIDENTS, ROOMMATE or GUEST device!";
}
@ -140,7 +138,7 @@ m/^(off|nextrun|trigger|start|stop|end|reset|auto|[\+\-][1-9]*[0-9]*|[\+\-]?[0-9
fhem "attr $NAME wakeupMacro $macroName";
$wakeupMacro = $macroName;
}
if ( !RESIDENTStk_IsDevice($wakeupMacro) ) {
if ( !IsDevice($wakeupMacro) ) {
my $wakeUpMacroTemplate = "{\
##=============================================================================\
## This is an example wake-up program running within a period of 30 minutes:\
@ -232,7 +230,7 @@ if (\$EVTPART0 eq \"stop\") {\
fhem "attr $wakeupMacro room $room"
if ($room);
}
elsif ( RESIDENTStk_GetType($wakeupMacro) ne "notify" ) {
elsif ( GetType($wakeupMacro) ne "notify" ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: WARNING - defined macro device '$wakeupMacro' is not a notify device!";
}
@ -244,7 +242,7 @@ if (\$EVTPART0 eq \"stop\") {\
fhem "attr $NAME wakeupAtdevice $atName";
$wakeupAtdevice = $atName;
}
if ( !RESIDENTStk_IsDevice($wakeupAtdevice) ) {
if ( !IsDevice($wakeupAtdevice) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: new at-device $wakeupAtdevice created";
fhem
@ -260,8 +258,8 @@ if (\$EVTPART0 eq \"stop\") {\
# for ROOMMATE or GUEST devices
# macro: gotosleep
if ( RESIDENTStk_GetType($wakeupUserdevice) ne "RESIDENTS"
&& !RESIDENTStk_IsDevice($macroNameGotosleep) )
if ( GetType($wakeupUserdevice) ne "RESIDENTS"
&& !IsDevice($macroNameGotosleep) )
{
my $templateGotosleep = "{\
##=============================================================================\
@ -326,7 +324,7 @@ return;;\
}
# wd: gotosleep
if ( !RESIDENTStk_IsDevice($wdNameGotosleep) ) {
if ( !IsDevice($wdNameGotosleep) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: new watchdog device $wdNameGotosleep created";
fhem
@ -339,8 +337,8 @@ return;;\
}
# macro: asleep
if ( RESIDENTStk_GetType($wakeupUserdevice) ne "RESIDENTS"
&& !RESIDENTStk_IsDevice($macroNameAsleep) )
if ( GetType($wakeupUserdevice) ne "RESIDENTS"
&& !IsDevice($macroNameAsleep) )
{
my $templateAsleep = "{\
##=============================================================================\
@ -401,7 +399,7 @@ return;;\
}
# wd: asleep
if ( !RESIDENTStk_IsDevice($wdNameAsleep) ) {
if ( !IsDevice($wdNameAsleep) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: new watchdog device $wdNameAsleep created";
fhem
@ -414,8 +412,8 @@ return;;\
}
# macro: awoken
if ( RESIDENTStk_GetType($wakeupUserdevice) ne "RESIDENTS"
&& !RESIDENTStk_IsDevice($macroNameAwoken) )
if ( GetType($wakeupUserdevice) ne "RESIDENTS"
&& !IsDevice($macroNameAwoken) )
{
my $templateAwoken = "{\
##=============================================================================\
@ -472,7 +470,7 @@ return;;\
}
# wd: awoken
if ( !RESIDENTStk_IsDevice($wdNameAwoken) ) {
if ( !IsDevice($wdNameAwoken) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: new watchdog device $wdNameAwoken created";
fhem
@ -490,10 +488,10 @@ return;;\
#
my $RESIDENTGROUPS = "";
if ( RESIDENTStk_IsDevice( $wakeupUserdevice, "RESIDENTS" ) ) {
if ( IsDevice( $wakeupUserdevice, "RESIDENTS" ) ) {
$RESIDENTGROUPS = $wakeupUserdevice;
}
elsif ( RESIDENTStk_IsDevice($wakeupUserdevice)
elsif ( IsDevice($wakeupUserdevice)
&& defined( $defs{$wakeupUserdevice}{RESIDENTGROUPS} ) )
{
$RESIDENTGROUPS = $defs{$wakeupUserdevice}{RESIDENTGROUPS};
@ -508,7 +506,7 @@ return;;\
my $wdRNameAwoken = "wd_" . $deviceName . "_awoken";
# macro: gotosleep
if ( !RESIDENTStk_IsDevice($macroRNameGotosleep) ) {
if ( !IsDevice($macroRNameGotosleep) ) {
my $templateGotosleep = "{\
##=============================================================================\
## This is an example macro when all residents are gettin' ready for bed.\
@ -554,7 +552,7 @@ return;;\
}
# wd: gotosleep
if ( !RESIDENTStk_IsDevice($wdRNameGotosleep) ) {
if ( !IsDevice($wdRNameGotosleep) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: new watchdog device $wdRNameGotosleep created";
fhem
@ -567,7 +565,7 @@ return;;\
}
# macro: asleep
if ( !RESIDENTStk_IsDevice($macroRNameAsleep) ) {
if ( !IsDevice($macroRNameAsleep) ) {
my $templateAsleep = "{\
##=============================================================================\
## This is an example macro when all residents are in their beds.\
@ -613,7 +611,7 @@ return;;\
}
# wd: asleep
if ( !RESIDENTStk_IsDevice($wdRNameAsleep) ) {
if ( !IsDevice($wdRNameAsleep) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: new watchdog device $wdNameAsleep created";
fhem
@ -626,7 +624,7 @@ return;;\
}
# macro: awoken
if ( !RESIDENTStk_IsDevice($macroRNameAwoken) ) {
if ( !IsDevice($macroRNameAwoken) ) {
my $templateAwoken = "{\
##=============================================================================\
## This is an example macro when the first resident has confirmed to be awake\
@ -675,7 +673,7 @@ return;;\
}
# wd: awoken
if ( !RESIDENTStk_IsDevice($wdRNameAwoken) ) {
if ( !IsDevice($wdRNameAwoken) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: new watchdog device $wdNameAwoken created";
fhem
@ -690,7 +688,7 @@ return;;\
}
}
elsif ( RESIDENTStk_GetType($wakeupAtdevice) ne "at" ) {
elsif ( GetType($wakeupAtdevice) ne "at" ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: WARNING - defined at-device '$wakeupAtdevice' is not an at-device!";
}
@ -708,13 +706,13 @@ return;;\
return
"ERROR: wakeupHolidays set in this alarm clock but global attribute holiday2we not set!";
}
elsif ( !RESIDENTStk_IsDevice($holidayDevice) ) {
elsif ( !IsDevice($holidayDevice) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: ERROR - global attribute holiday2we has reference to non-existing device $holidayDevice";
return
"ERROR: global attribute holiday2we has reference to non-existing device $holidayDevice";
}
elsif ( RESIDENTStk_GetType($holidayDevice) ne "holiday" ) {
elsif ( GetType($holidayDevice) ne "holiday" ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: ERROR - global attribute holiday2we seems to have invalid device reference - $holidayDevice is not of type 'holiday'";
return
@ -746,11 +744,11 @@ return;;\
if ( !$wakeupMacro ) {
Log3 $NAME, 2, "RESIDENTStk $NAME: missing attribute wakeupMacro";
}
elsif ( !RESIDENTStk_IsDevice($wakeupMacro) ) {
elsif ( !IsDevice($wakeupMacro) ) {
Log3 $NAME, 2,
"RESIDENTStk $NAME: notify macro $wakeupMacro not found - no wakeup actions defined!";
}
elsif ( RESIDENTStk_GetType($wakeupMacro) ne "notify" ) {
elsif ( GetType($wakeupMacro) ne "notify" ) {
Log3 $NAME, 2,
"RESIDENTStk $NAME: device $wakeupMacro is not of type notify";
}
@ -784,7 +782,7 @@ return;;\
}
my $wakeupStopAtdevice = $wakeupAtdevice . "_stop";
if ( RESIDENTStk_IsDevice($wakeupStopAtdevice) ) {
if ( IsDevice($wakeupStopAtdevice) ) {
fhem "delete $wakeupStopAtdevice";
}
}
@ -826,7 +824,7 @@ return;;\
|| $VALUE =~ /^[\+\-][1-9]*[0-9]*$/
|| $VALUE =~ /^[\+\-]?([0-9]{2}):([0-9]{2})$/
)
&& RESIDENTStk_GetType($wakeupAtdevice) eq "at"
&& GetType($wakeupAtdevice) eq "at"
)
{
@ -901,17 +899,17 @@ sub RESIDENTStk_wakeupGetBegin($;$) {
# just give any valuable return to at-device
# if wakeuptimer device does not exit anymore
# and run self-destruction to clean up
if ( !RESIDENTStk_IsDevice($NAME) ) {
if ( !IsDevice($NAME) ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: this wake-up timer device does not exist anymore";
my $atName = "at_" . $NAME;
if ( RESIDENTStk_GetType($wakeupAtdevice) eq "at" ) {
if ( GetType($wakeupAtdevice) eq "at" ) {
Log3 $NAME, 3,
"RESIDENTStk $NAME: Cleaning up at-device $wakeupAtdevice (self-destruction)";
fhem "sleep 1; delete $wakeupAtdevice";
}
elsif ( RESIDENTStk_GetType($atName) eq "at" ) {
elsif ( GetType($atName) eq "at" ) {
Log3 $NAME, 3, "RESIDENTStk $NAME: Cleaning up at-device $atName";
fhem "sleep 1; delete $atName";
}
@ -983,7 +981,7 @@ sub RESIDENTStk_wakeupRun($;$) {
my $holidayToday = "";
if ( $wakeupHolidays
&& RESIDENTStk_GetType($holidayDevice) eq "holiday" )
&& GetType($holidayDevice) eq "holiday" )
{
my $hdayTod = ReadingsVal( $holidayDevice, "state", "" );
@ -1035,7 +1033,7 @@ sub RESIDENTStk_wakeupRun($;$) {
if ( $wakeupResetdays ne "" );
my %rdays = map { $_ => 1 } @rdays;
if ( !RESIDENTStk_IsDevice($NAME) ) {
if ( !IsDevice($NAME) ) {
return "$NAME: Non existing device";
}
elsif ( lc($nextRun) eq "off" && !$forceRun ) {
@ -1045,16 +1043,14 @@ sub RESIDENTStk_wakeupRun($;$) {
elsif ( !$wakeupUserdevice ) {
return "$NAME: missing attribute wakeupUserdevice";
}
elsif ( !RESIDENTStk_IsDevice($wakeupUserdevice) ) {
elsif ( !IsDevice($wakeupUserdevice) ) {
return "$NAME: Non existing wakeupUserdevice $wakeupUserdevice";
}
elsif (
!RESIDENTStk_IsDevice( $wakeupUserdevice, "RESIDENTS|ROOMMATE|GUEST" ) )
{
elsif ( !IsDevice( $wakeupUserdevice, "RESIDENTS|ROOMMATE|GUEST" ) ) {
return
"$NAME: device $wakeupUserdevice is not of type RESIDENTS, ROOMMATE or GUEST";
}
elsif ( RESIDENTStk_GetType($wakeupUserdevice) eq "GUEST"
elsif ( GetType($wakeupUserdevice) eq "GUEST"
&& $wakeupUserdeviceState eq "none" )
{
Log3 $NAME, 4,
@ -1134,11 +1130,11 @@ sub RESIDENTStk_wakeupRun($;$) {
if ( !$wakeupMacro ) {
return "$NAME: missing attribute wakeupMacro";
}
elsif ( !RESIDENTStk_IsDevice($wakeupMacro) ) {
elsif ( !IsDevice($wakeupMacro) ) {
return
"$NAME: notify macro $wakeupMacro not found - no wakeup actions defined!";
}
elsif ( RESIDENTStk_GetType($wakeupMacro) ne "notify" ) {
elsif ( GetType($wakeupMacro) ne "notify" ) {
return "$NAME: device $wakeupMacro is not of type notify";
}
elsif ($wakeupUserdeviceWakeup) {
@ -1189,7 +1185,7 @@ sub RESIDENTStk_wakeupRun($;$) {
if ( $wakeupOffset > 0 ) {
my $wakeupStopAtdevice = $wakeupAtdevice . "_stop";
if ( RESIDENTStk_IsDevice($wakeupStopAtdevice) ) {
if ( IsDevice($wakeupStopAtdevice) ) {
fhem "delete $wakeupStopAtdevice";
}
@ -1231,7 +1227,7 @@ sub RESIDENTStk_wakeupRun($;$) {
my $doReset = 1;
if ( $wakeupResetSwitcher
&& RESIDENTStk_GetType($wakeupResetSwitcher) eq "dummy"
&& GetType($wakeupResetSwitcher) eq "dummy"
&& ReadingsVal( $wakeupResetSwitcher, "state", 0 ) eq "off" )
{
$doReset = 0;
@ -1266,7 +1262,7 @@ sub RESIDENTStk_AttrFnDummy(@) {
# wakeupResetSwitcher
if ( $aName eq "wakeupResetSwitcher" ) {
if ( !RESIDENTStk_IsDevice($aVal) ) {
if ( !IsDevice($aVal) ) {
my $alias = AttrVal( $name, "alias", 0 );
my $group = AttrVal( $name, "group", 0 );
my $room = AttrVal( $name, "room", 0 );
@ -1294,7 +1290,7 @@ sub RESIDENTStk_AttrFnDummy(@) {
Log3 $name, 3,
"RESIDENTStk $name: new slave dummy device $aVal created";
}
elsif ( RESIDENTStk_GetType($aVal) ne "dummy" ) {
elsif ( GetType($aVal) ne "dummy" ) {
Log3 $name, 3,
"RESIDENTStk $name: Defined device name in attr $aName is not a dummy device";
return "Existing device $aVal is not a dummy!";
@ -1346,7 +1342,7 @@ sub RESIDENTStk_wakeupGetNext($) {
for my $wakeupDevice ( split /,/, $wakeupDeviceList ) {
next if !$wakeupDevice;
if ( !RESIDENTStk_IsDevice($wakeupDevice) ) {
if ( !IsDevice($wakeupDevice) ) {
Log3 $name, 4,
"RESIDENTStk $name: 00 - ignoring reference to non-existing wakeupDevice $wakeupDevice";
@ -1371,7 +1367,7 @@ sub RESIDENTStk_wakeupGetNext($) {
my $wakeupAtdevice = AttrVal( $wakeupDevice, "wakeupAtdevice", 0 );
my $wakeupOffset = AttrVal( $wakeupDevice, "wakeupOffset", 0 );
my $wakeupAtNTM = (
RESIDENTStk_IsDevice($wakeupAtdevice)
IsDevice($wakeupAtdevice)
&& defined( $defs{$wakeupAtdevice}{NTM} )
? substr( $defs{$wakeupAtdevice}{NTM}, 0, -3 )
: 0
@ -1384,7 +1380,7 @@ sub RESIDENTStk_wakeupGetNext($) {
# get holiday status for today and tomorrow
if ( $wakeupHolidays
&& $holidayDevice
&& RESIDENTStk_GetType($holidayDevice) eq "holiday" )
&& GetType($holidayDevice) eq "holiday" )
{
if ( $hdayTod ne "none" && $hdayTod ne "" ) {
$holidayToday = 1;
@ -1779,31 +1775,4 @@ sub RESIDENTStk_findResidentSlaves($) {
}
}
sub RESIDENTStk_IsDevice($;$) {
my $devname = shift;
my $devtype = shift;
return 1
if ( defined($devname)
&& defined( $defs{$devname} )
&& ( !$devtype || $devtype eq "" ) );
return 1
if ( defined($devname)
&& defined( $defs{$devname} )
&& defined( $defs{$devname}{TYPE} )
&& $defs{$devname}{TYPE} =~ m/^$devtype$/ );
return 0;
}
sub RESIDENTStk_GetType($;$) {
my $devname = shift;
my $default = shift;
return $default
unless ( RESIDENTStk_IsDevice($devname) && $defs{$devname}{TYPE} );
return $defs{$devname}{TYPE};
}
1;

View File

@ -4458,7 +4458,7 @@ sub CommandSetReadingDesc($@) {
my @rets;
my $last;
foreach my $name ( devspec2array( $a->[0], $cl ) ) {
unless ( Unit_IsDevice($name) ) {
unless ( IsDevice($name) ) {
push @rets, "Please define $name first";
next;
}
@ -4524,7 +4524,7 @@ sub CommandDeleteReadingDesc($@) {
my @rets;
my $last;
foreach my $name ( devspec2array( $a->[0], $cl ) ) {
unless ( Unit_IsDevice($name) ) {
unless ( IsDevice($name) ) {
push @rets, "Please define $name first";
next;
}
@ -4549,22 +4549,4 @@ sub CommandDeleteReadingDesc($@) {
return join( "\n", @rets );
}
sub Unit_IsDevice($;$) {
my $devname = shift;
my $devtype = shift;
return 1
if ( defined($devname)
&& defined( $defs{$devname} )
&& ( !$devtype || $devtype eq "" ) );
return 1
if ( defined($devname)
&& defined( $defs{$devname} )
&& defined( $defs{$devname}{TYPE} )
&& $defs{$devname}{TYPE} =~ m/^$devtype$/ );
return 0;
}
1;