Fehler im Server Socket

Guten Tage liebe IPS User :wink:

Ich habe bei mir mehrere Net IO mit AVR im Einsatz mit Ethersex Firmware, da ich in letzter Zeit gemerkt habe das einiges bei mir etwas Hängt bin ich der Sache mal auf die Spur gegangen.

Meine Beobachtungen habe bestätigt das die NETIO Borads ein Problem mit dem Server Socket von IPS haben, diese sende Aktionen nach IPS wie z.b. „Eingang3 on“ IPS wertet diese Sachen aus.
Unter IPS 3.4 Funktioniert das ohne Probleme, In der 4er Version hängt sich das NETIO auf weil es vom IPS Server keine Rückantwort erhält oder der Server Socket keine Daten mehr annimmt.

Anbei habe ich mal ein Auszug aus dem Debug gemacht das Modul Sendet bekommt eine Antwort und nach ein Paar weiteren Meldungen Passiert nichts mehr, und die NETIO Module hängen sich für eine gewisse Zeit einfach auf.

Deshalb schätze ich dass es ein Bug in dem Server Socket gibt.


TXT: 30.09.2015 11:30:01.00 |             RECEIVED | eingang3 on
TXT: 30.09.2015 11:30:01.00 |             TRANSMIT | OK
TXT: 30.09.2015 11:30:02.00 |             RECEIVED | eingang3 off
TXT: 30.09.2015 11:30:02.00 |             TRANSMIT | OK
TXT: 30.09.2015 11:30:03.00 |             RECEIVED | eingang3 on
TXT: 30.09.2015 11:30:04.00 |             TRANSMIT | OK




if ($IPS_SENDER == "RegisterVariable"){
		SSCK_SendText($SS_socket, "OK");
	$str_zelegen = explode(" ", $IPS_VALUE);
	$str_umwandlung = strtr($str_zelegen[0], $eingang);
	$id_eingang = IPS_GetVariableIDByName($str_umwandlung, $parentID);
if ($str_zelegen[1] !== "on"){
	SetValue($id_eingang, true);
}else{
	SetValue($id_eingang, false);
	}
}

LG
Sven

Morgen,

paresy hast du evtl. eine Idee wo dran das liegen könnte?

LG
Sven

Ist bestimmt ein Fehler. Hatte aber noch keine Zeit es mir genauer anzusehen.

Kann es sein, dass dann auch der PHP Thread rot markiert ist? (Willkommensseite -> Expertenansichten -> PHP Informationen)

paresy

Hey,

Kein Problem hast bestimmt viel um die Ohren, wollte nur nicht dass es untergeht :smiley:

Nein wird leider nichts Rot angezeigt. Das einzige Problem was ich dann bekomme ist, das die anderen Werte per fopen abgefragt werden.

Dadurch dass sich das Modul aufhängt antwortet es dann nicht auf die Anfragen von fopen.

Aber das hat ja nichts mit dem Problem hier zu tun, ist das eine weg dann auch das andere. :stuck_out_tongue:


01.10.2015 11:54:22*| ScriptEngine*| Result for Event Net IO Borad´s\Net io Aquarium Neu\Data\Daily Every 10 second(s)
<br />
<b>Warning</b>:  fopen(http://10.10.10.207/ecmd?1w+get+28257b870400009f): failed to open stream: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat.
 in <b>C:\IP-Symcon\scripts\55817.ips.php</b> on line <b>127</b><br />
<br />
<b>Warning</b>:  fgets() expects parameter 1 to be resource, boolean given in <b>C:\IP-Symcon\scripts\55817.ips.php</b> on line <b>128</b><br />
<br />
<b>Warning</b>:  fclose() expects parameter 1 to be resource, boolean given in <b>C:\IP-Symcon\scripts\55817.ips.php</b> on line <b>129</b><br />
<br />
<b>Warning</b>:  bad lexical cast: source type value could not be interpreted as target in <b>C:\IP-Symcon\scripts\55817.ips.php</b> on line <b>137</b><br />
<br />
<b>Warning</b>:  fopen(http://10.10.10.207/ecmd?adc+get+0): failed to open stream: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat.
 in <b>C:\IP-Symcon\scripts\55817.ips.php</b> on line <b>145</b><br />
<br />
<b>Fatal error</b>:  Maximum execution time of 30 seconds exceeded in <b>C:\IP-Symcon\scripts\55817.ips.php</b> on line <b>145</b><br />

LG
Sven

Gibt es evtl. ein Programm womit ich auf den Server Socket Connecten kann um einige Test befehle abzusetzen.

Vielleicht finde ich es ja so etwas genauer raus wo es hängen könnte.

Oder etwas zum Mitschneiden, was dort geschieht?

LG
Sven

Fürs erste Telnet/Putty. Fürs zweite Wireshark.

paresy

Hallo paresy,

Also mit Wireshark habe ich herausgefunden das unter IPS 3.4 die Rückmeldung von IPS („OK“) nur einmal an das NETIO übermittelt wird.

Bei IPS 4 wird es mindestens 2 wenn nicht sogar 3 mal übermittelt, daher denke ich dass es dort zum Absturz kommt. Weil danach lässt sich das NETIO nicht mehr ansprechen für einige Zeit.

So wäre zu mindestens meine Theorie.

Screens von IPS 4



Screens von IPS 3.4


LG
Sven

la li lu :smiley: :cool:

Ich hab die Logik im ServerSocket etwas umgebaut und einfacher gestaltet. Ich hoffe mal, dass der Fehler dadurch verschwindet.
Kommt dann mit im nächsten Update!

paresy

Also bis jetzt scheint es zu funktionieren

Aber dafür bekomme ich jetzt ne andere komische Meldung

Gibt es dafür ne Erklärung?

Dein Gerät trennt anscheinend immer die Verbindung. Das quittiert dir IP-Symcon :slight_smile:
Könnte ich evtl. etwas weniger kritisch markieren.

paresy

Blau oder so :slight_smile:

Danke dir für die Fehlerbehebung :smiley: