2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-03 19:49:02 +00:00

cleanup : Bereinigung der Konstruktionen wie my $... if / unless ... (patch von Beta-User)

git-svn-id: https://svn.fhem.de/fhem/trunk@23652 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
hexenmeister 2021-01-31 20:34:55 +00:00
parent 6da6af3e20
commit 92fed7e658

View File

@ -30,6 +30,10 @@
#
# CHANGE LOG
#
# 31.01.2021 1.3.1
# cleanup : Bereinigung der Konstruktionen wie my $... if / unless ...
# (patch von Beta-User)
#
# 19.01.2021 1.3.0
# feature : supports attrTemplate (thanks to Beta-User)
#
@ -386,7 +390,7 @@ use AttrTemplate;
#my $DEBUG = 1;
my $cvsid = '$Id$';
my $VERSION = "version 1.3.0 by hexenmeister\n$cvsid";
my $VERSION = "version 1.3.1 by hexenmeister\n$cvsid";
my %sets = (
);
@ -1185,17 +1189,16 @@ sub getDevicePublishRecIntern($$$$$$$) {
my $globalPublishMap = $globalMap->{':publish'};
# reading map
my $readingMap = $publishMap->{$readingKey} if defined $publishMap;
my $wildcardReadingMap = $publishMap->{'*'} if defined $publishMap;
my $readingMap = $publishMap->{$readingKey} // {};
my $wildcardReadingMap = $publishMap->{'*'} // {};
#my $defaultReadingMap = $devMap->{':defaults'} if defined $devMap;
# global reading map
my $globalReadingMap = undef;
if (defined $globalPublishMap) {
$globalReadingMap = $globalPublishMap->{$readingKey};
$globalReadingMap = $globalPublishMap->{$reading} unless defined $globalReadingMap;
$globalReadingMap = $globalPublishMap->{$readingKey} // $globalPublishMap->{$reading};
}
my $globalWildcardReadingsMap = $globalPublishMap->{'*'} if defined $globalPublishMap;
my $globalWildcardReadingsMap = $globalPublishMap->{'*'} // {};
#Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE:DEBUG:> [$hash->{NAME}] getDevicePublishRec> readingMap ".Dumper($readingMap));
#Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE:DEBUG:> [$hash->{NAME}] getDevicePublishRec> wildcardReadingMap ".Dumper($wildcardReadingMap));
@ -1629,7 +1632,8 @@ sub CreateSingleDeviceTableAttrSubscribe($$$$) {
my $combined = computeDefaults($hash, 'sub:', $globalMap, $devMap, {'device'=>$dev,'reading'=>'#reading','name'=>'#name','mode'=>$rmap->{'mode'}});
#Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE:DEBUG:> [$hash->{NAME}] sub: Defaults: ".Dumper($combined));
my $topic = _evalValue2($hash->{NAME},$val,{'device'=>$dev,'reading'=>'#reading','name'=>'#name',%$combined}) if defined $val;
my $topic;
$topic = _evalValue2($hash->{NAME},$val,{'device'=>$dev,'reading'=>'#reading','name'=>'#name',%$combined}) if defined $val;
if(!defined($topic)) {
Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE: [$hash->{NAME}] subscribe: error while interpret topic: $val");
} else {
@ -2362,20 +2366,24 @@ sub isTypeDevReadingExcluded($$$$$) {
return 1 if (defined($gExcludesReadingMap) and ($gExcludesReadingMap->{$reading}));
# types
my $exType=$gExcludesTypeMap->{$type} if defined $gExcludesTypeMap;
if(defined $exType) {
return 1 if ($exType eq "*");
return 1 if ($exType eq $reading);
if (defined $gExcludesTypeMap) {
my $exType=$gExcludesTypeMap->{$type};
if(defined $exType) {
return 1 if ($exType eq "*");
return 1 if ($exType eq $reading);
}
}
# devices
my $exDevName=$gExcludesDevMap->{$devName} if defined $gExcludesDevMap;
if(defined $exDevName) {
return 1 if ($exDevName eq "*");
return 1 if ($exDevName eq $reading);
if (defined $gExcludesDevMap) {
my $exDevName=$gExcludesDevMap->{$devName};
if(defined $exDevName) {
return 1 if ($exDevName eq "*");
return 1 if ($exDevName eq $reading);
}
}
return undef;
return;
}
# Prueft, ob per MQTT ankommende Nachrichten ggf. per MQTT weiter geleitet werden duerfen.
@ -2584,10 +2592,9 @@ sub publishDeviceUpdate($$$$$) {
my $r = doPublish($hash,$devn,$reading,$key,$val,$qos,$retain,$resendOnConnect);
$updated = 1 unless defined $r;
}
} else {
#Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE:DEBUG:> DEBUG: publish: Topic: $topic Msg: $message");
my $r = doPublish($hash,$devn,$reading,$topic,$message,$qos,$retain,$resendOnConnect) if defined $topic and defined $message;
$updated = 1 unless defined $r;
} elsif (defined $topic and defined $message) {
my $r = doPublish($hash,$devn,$reading,$topic,$message,$qos,$retain,$resendOnConnect);
$updated = 1 unless defined $r;
}
if($updated) {
updatePubTime($hash,$devn,$reading);