FHEM Forum

FHEM => Automatisierung => Thema gestartet von: gandy am 23 Juli 2015, 22:04:37

Titel: Patch für FHEM2FHEM: Beim Verbindungsaufbau wird attribut disable ignoriert
Beitrag von: gandy am 23 Juli 2015, 22:04:37
In meiner Installation habe ich mehrere externe FHEM Instanzen über FHEM2FHEM angebunden. Manchmal fallen einzelne davon aus und sind nicht mehr unter ihrer IP erreichbar, was zu regelmässigem Freeze beim versuchten Verbindungsaufbau führt und die Responsivität der Hauptinstallation in Mitleidenschaft zieht.

Um das zu umgehen, lasse ich per PRESENCE lan-ping die Erreichbarkeit prüfen und bei Statusänderung das attribut ignore in der jeweiligen FHEM2FHEM Instanz entsprechend setzen:


define fhem_laantena FHEM2FHEM 192.168.1.34:7072 LOG:(EC.*)|(heartbeat_laantena.*)
attr fhem_laantena disable 0
attr fhem_laantena room _Server

define lan_laantena PRESENCE lan-ping 192.168.1.34
attr lan_laantena event-on-change-reading .+

define nf.lan_fhem notify lan_.+:presence:.+ { $NAME=~ s/lan_/fhem_/;; fhem("attr $NAME disable ".(($EVTPART1 eq "absent")?"1":"0")) }


Nun musste ich aber feststellen, dass FHEM2FHEM auch bei disable=1 weiterin versucht, die Verbindung herzustellen, wodurch es in jedem Fall zu Timeouts und den dadurch bedingten Nebenwirkungen kommt.

Der beigefügte Patch behebt das, basierend auf "93_FHEM2FHEM.pm 8416 2015-04-11 10:46:08Z"

Grüße,
Andy.
Titel: Antw:Patch für FHEM2FHEM: Beim Verbindungsaufbau wird attribut disable ignoriert
Beitrag von: rudolfkoenig am 24 Juli 2015, 07:04:12
Patch akzeptiert, sobald sourceforge funktioniert, wird es eingecheckt.
Titel: Antw:Patch für FHEM2FHEM: Beim Verbindungsaufbau wird attribut disable ignoriert
Beitrag von: eldrik am 06 August 2015, 10:10:49
Hallo Rudi,

wurde der patch bereits eingespielt?

Edit: habe gerade den Patch mit der aktuellen FHEM2FHEM Version verglichen, ja der Patch ist eingespielt.

Was mich etwas irritiert ist, ich habe diverse FHEM2FHEM Verbindungen und vor einem Shutdown bzw. Restart einer FHEM2FHEM Instanz setze ich einen Befehl in Richtung Hauptinstanz ab, welcher den attr disable der FHEM2FHEM Verbindung auf 1 setzt.

Trotzdem erhalte ich beim Restart der FHEM2FHEM Instanz die Meldung

10.0.81.56:7072 disconnected, waiting to reappear

nach dem Restart weist mir perfmon den entsprechenden Freetze aus

Perfmon: possible freeze starting at 10:23:21, delay is 4.362

Edit2:

Ich habe jetzt im Code die unterstrichene Zeile hinzugefügt, somit wird sleep(5) nicht mehr durchlaufen wenn der Status auf disable 1 gesetzt wurde.

return if(IsDisabled($name));

sub
FHEM2FHEM_Disconnected($)
{
  my $hash = shift;
  my $dev = $hash->{Host};
  my $name = $hash->{NAME};

  return if(!defined($hash->{FD}));                 # Already deleted
  Log3 $name, 1, "$dev disconnected, waiting to reappear";
  FHEM2FHEM_CloseDev($hash);
  $readyfnlist{"$name.$dev"} = $hash;               # Start polling
  $hash->{STATE} = "disconnected";

  # Without the following sleep the open of the device causes a SIGSEGV,
  # and following opens block infinitely. Only a reboot helps.
  return if(IsDisabled($name));
  sleep(5);

  DoTrigger($name, "DISCONNECTED");
}


Greetz
Eldrik
Titel: Antw:Patch für FHEM2FHEM: Beim Verbindungsaufbau wird attribut disable ignoriert
Beitrag von: rudolfkoenig am 08 August 2015, 14:25:44
Habs auch eingecheckt.