2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-09 20:57:11 +00:00

77_SMAEM: add define option <interface>

git-svn-id: https://svn.fhem.de/fhem/trunk@21445 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2020-03-18 08:23:24 +00:00
parent 2f8919ef54
commit b9ed3f47d5
2 changed files with 25 additions and 6 deletions

View File

@ -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 <interface>
- 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

View File

@ -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 <interface> ",
"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;
<a name="SMAEMdefine"></a>
<b>Define</b>
<ul>
<code>define &lt;name&gt; SMAEM </code><br>
<code>define &lt;name&gt; SMAEM [&lt;interface&gt;]</code><br>
<br>
Defines a SMA Energy Meter (SMAEM), a bidirectional energy meter/counter used in photovoltaics.
The optional parameter <b>interface</b> defines a specific network interface to use, e.g. "eth0".
<br><br>
You need at least one SMAEM on your local subnet or behind a multicast enabled network of routers to receive multicast messages from the SMAEM over the
multicast group 239.12.255.254 on udp/9522. Multicast messages are sent by SMAEM once a second (firmware 1.02.04.R, March 2016).
@ -1110,8 +1126,8 @@ return;
<b>Set </b>
<ul>
<li><b>reset</b> <br>
The automatically generated file "cacheSMAEM" will be deleted. Then the file will be recreated again by the module.
This function is used to reset the device in possible case of error condition, but may be executed at all times.
The automatically created file "cacheSMAEM" is deleted. The file is reinitialized by the module.
This function is used to reset a possible error state of the device, but can also be executed at any time.
</li>
<br>
</ul>
@ -1194,9 +1210,10 @@ return;
<a name="SMAEMdefine"></a>
<b>Define</b>
<ul>
<code>define &lt;name&gt; SMAEM </code><br>
<code>define &lt;name&gt; SMAEM [&lt;Interface&gt;]</code><br>
<br>
Definiert ein SMA Energy Meter (SMAEM), einen bidirektionalen Stromzähler, der häufig in Photovolatikanlagen der Firma SMA zum Einsatz kommt.
Definiert ein SMA Energy Meter (SMAEM), einen bidirektionalen Stromzähler, der häufig in Photovolatikanlagen der Firma SMA zum Einsatz kommt.
Der optionale Parameter <b>Interface</b> legt das zu benutzende Netzwerk-Interface fest, zum Beispiel "eth0".
<br><br>
Sie brauchen mindest ein SMAEM in Ihrem lokalen Netzwerk oder hinter einen multicastfähigen Netz von Routern, um die Daten des SMAEM über die
Multicastgruppe 239.12.255.254 auf udp/9522 zu empfangen. Die Multicastpakete werden vom SMAEM einmal pro Sekunde ausgesendet (firmware 1.02.04.R, März 2016).
@ -1339,6 +1356,7 @@ return;
"Blocking": 0
},
"recommends": {
"IO::Interface": 0,
"FHEM::Meta": 0
},
"suggests": {