Modul deaktivieren geht nicht

Begonnen von stera, 08 Mai 2019, 23:20:24

Vorheriges Thema - Nächstes Thema

stera

Hallo zusammen,

ich hatte vor paar Tagen einen Beitrag in "Sonstige System" erstellt. Leider bekomme ich dort noch keine Antwort bzw. erreiche den Entwickler noch nicht.

Es geht um das Modul "S7_S7Client.pm". Leider bekomme ich immer ein Fehler im Log, wenn die die SPS nicht erreichbar ist. Ich möchte die auch bewusst stromlos zwischendurch schalten.
Leider lässt sich im Modul nicht das Attribute "disable" oder "ignore" setzten. Wie kann ich es am besten und schnellsten lösen, die Fehlermeldung zu unterbinden?


2019.05.07 07:57:28 0: S7_connect: ERROR in Socket Creation: No route to host at FHEM/44_S7_S7Client.pm line 528.

2019.05.07 07:57:35 0: S7_connect: ERROR in Socket Creation: No route to host at FHEM/44_S7_S7Client.pm line 528.



Das ist der Ausschnitt aus der PM und hier wird der Fehler erzeugt
.....) or die "ERROR in Socket Creation: $!";....
Könnte man das irgendwas hier ändern, dass der Fehler nicht geschrieben wird?



#-----------------------------------------------------------------------------
sub TCPConnect {
my ($self) = @_;

# # 1. create a socket handle (descriptor)
# my($sock);
# socket($sock, AF_INET, SOCK_STREAM, IPPROTO_TCP);#TCP_NODELAY,
#
# or die "ERROR in Socket Creation: $!";
#
# # 2. connect to remote server
# my $remote = $self->{Peer};
#
# my $iaddr = inet_aton($remote) or die "Unable to resolve hostname : $remote";
# my $paddr = sockaddr_in(&isotcp, $iaddr);    #socket address structure
#
# connect($sock , $paddr) or die "connect to $remote failed : $!";
# $self->{TCPClient} = $sock;
# return $self->SetLastError(0);
#
# $self->{TCPClientSel} = new IO::Select($self->{TCPClient});

$self->{TCPClient} = new IO::Socket::INET(
PeerAddr => $self->{Peer},

# PeerHost => $self->{Peer},
PeerPort => &isotcp,
Type     => Socket::SOCK_STREAM,    # probably needed on some systems

Proto => 'tcp',
) or die "ERROR in Socket Creation: $!";

$self->{TCPClient}->sockopt( &Socket::TCP_NODELAY, 1 );

$self->{TCPClient}->autoflush(1);

$self->{TCPClientSel} = new IO::Select( $self->{TCPClient} );

return $self->SetLastError(0);

}

#-----------------------------------------------------------------------------





Danke für Eure Unterstützung.
SteRa

kumue

kennt das Modul vielleicht das ignore-Attribut... ?
Falls ja, versuch es mal damit.

stera

Zitat von: kumue am 08 Mai 2019, 23:58:31
kennt das Modul vielleicht das ignore-Attribut... ?
Falls ja, versuch es mal damit.

Leider gibt es das auch nicht  :(

Allgemein ist die Datei ja nicht so aufgebaut, wie eine Standard PM.
Evlt. weiß noch jemand, wie ich den Fehler einfach aus dem LOG bekomme bzw. unterbinde.

Gruß,
Stefan

herrmannj

Grundsätzlich sollte sich der modul maintainer dem annehmen. Wenn das in absehbarer Zeit nicht passiert dann müsste man von einem verwaisten modul ausgehen. Allerdings darf man dem Autor auch entsprechend Zeit einräumen (Urlaub, Krankheit, richtiges Leben)

Eine Änderung solltest Du (wenn) in der 44_S7.pm in Zeile 98 durchführen

Log3( $hash, 0, "S7_connect: $s" );
zu
# Log3( $hash, 0, "S7_connect: $s" );

Da ich das modul nicht kenne kann ich keine Garantie bzgl Wirksamkeit oder Nebenwirkungen übernehmen ;)

Mach vorher sauber Backups!