diff --git a/fhem/CHANGED b/fhem/CHANGED index b1c5ff412..0e15e7da0 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: 77_SMAEM: add define option - bugfix: 98_WeekdayTimer: prevent crashes related to weekprofile changes - bugfix: 93_DbRep: fix user rights check for index operation - bugfix: 73_AutoShuttersControl: fix SleepPos conditions in residents diff --git a/fhem/FHEM/77_SMAEM.pm b/fhem/FHEM/77_SMAEM.pm index e07a8c17f..78653c9de 100644 --- a/fhem/FHEM/77_SMAEM.pm +++ b/fhem/FHEM/77_SMAEM.pm @@ -31,11 +31,13 @@ use strict; use warnings; use bignum; use IO::Socket::Multicast; +eval "use IO::Interface;1" or my $IOInterfaceAbsent = 1; use Blocking; eval "use FHEM::Meta;1" or my $modMetaAbsent = 1; # Versions History by DS_Starter our %SMAEM_vNotesIntern = ( + "4.1.0" => "17.03.2020 add define option ", "4.0.1" => "10.02.2020 fix perl warning Forum: https://forum.fhem.de/index.php/topic,51569.msg1021988.html#msg1021988", "4.0.0" => "16.12.2019 change module to OBIS metric resolution, change Readings Lx_THD to Lx_Strom, FirmwareVersion to SoftwareVersion ". "new attribute \"noCoprocess\", many internal code changes ", @@ -167,6 +169,9 @@ sub SMAEM_Define ($$) { my ($success, $gridin_sum, $gridout_sum); my $socket; + my @a = split("[ \t][ \t]*", $def); + my $if = $a[2] ? $a[2] : ""; + $hash->{INTERVAL} = 60; $hash->{HELPER}{FAULTEDCYCLES} = 0; $hash->{HELPER}{STARTTIME} = time(); @@ -186,7 +191,15 @@ sub SMAEM_Define ($$) { Log3 $hash, 3, "SMAEM $name - Multicast socket opened"; - $socket->mcast_add('239.12.255.254'); + if($a[2]) { + eval { $socket->mcast_add('239.12.255.254',$if); }; + if ($@) { + return "Socket error in define ('239.12.255.254',$if): $@"; + } + } else { + $socket->mcast_add('239.12.255.254'); + } + $hash->{TCPDev} = $socket; $hash->{FD} = $socket->fileno(); @@ -195,6 +208,8 @@ sub SMAEM_Define ($$) { $hash->{HELPER}{MODMETAABSENT} = 1 if($modMetaAbsent); # Modul Meta.pm nicht vorhanden + Log3($name, 3, "$name - The perl module \"IO::Interface\" is missing. You should install it.") if($IOInterfaceAbsent); + # Versionsinformationen setzen SMAEM_setVersionInfo($hash); @@ -1085,9 +1100,10 @@ return; Define