Jump to content

Wiederherstellung Verbindung zu Remote Bricks


Recommended Posts

Ich lese mit PHP Scripts Daten von Sensoren an Master Bricks, die ueber WiFi Extensions mit meinem Netzwerk verbunden sind, aus.

Das funktioniert auch wunderbar, aber mehr oder weniger kurze Unterbrechnungen der Verbindung zu den Master Bricks (Neustart Router, Abstecken Master Brick, verlorene Pakete, ...) beenden meine Datensammlung dann irgendwann unsanft. Ich schaffe es leider nicht, das zu detektieren bzw. die Verbindung automatisch wiederherzustellen, sobald der Master Brick wieder online ist.

Gibt es hier ein Standardrezept ("best practice") in PHP, wie man damit umgeht?

Danke!

Link zu diesem Kommentar
Share on other sites

Der normale Weg damit umzugehen ist, dass du die Aufrufe der Brick- und Bricklet-Funktionen in try-catch-Blöcke machst. Damit kannst du dann auf TimeoutException oder andere Fehler reagieren.

In PHP wird leider die Verbindung nicht automatisch wiederhergestellt, wenn sie verloren ging, das musst du also händisch machen. Du kannst dich auf das disconnected-Callback der IPConnection registrieren und dann periodisch connect aufrufen, bis es funktioniert. Die Callback-Doku findest du hier: https://www.tinkerforge.com/de/doc/Software/IPConnection_PHP.html#callbacks

Wenn du eine Verbindung aufgebaut hast, kannst du dann den enumerate-Mechanismus benutzen um die Bricks und Bricklets wiederzufinden und zu konfigurieren. Es reicht wenn du das ganz am Anfang einmal registrierst, dann funktioniert das automagisch. Das ganze wird hier erklärt: https://www.tinkerforge.com/de/doc/Tutorials/Tutorial_Rugged/Tutorial.html#tutorial-rugged-approach

Link zu diesem Kommentar
Share on other sites

4 hours ago, rtrbt said:

In PHP wird leider die Verbindung nicht automatisch wiederhergestellt, wenn sie verloren ging, das musst du also händisch machen. Du kannst dich auf das disconnected-Callback der IPConnection registrieren und dann periodisch connect aufrufen, bis es funktioniert. Die Callback-Doku findest du hier: https://www.tinkerforge.com/de/doc/Software/IPConnection_PHP.html#callbacks

Danke dir fuer das Feedback ... leider ist es mir bisher nicht gelungen, das disconnected-Callback auszuloesen, auch wenn ich die Einheit vom Strom nehme.

Auffaellig ist auch, dass $ipcon->getConnectionState immer 1 zurueckgibt (CONNECTION_STATE_CONNECTED = 1: Eine Verbindung zum Brick Daemon oder der WIFI/Ethernet Extension ist aufgebaut), auch wenn der Master Brick schon laengst offline ist. Sollte das so sein?

Link zu diesem Kommentar
Share on other sites

2 hours ago, tfRookie said:

Danke dir fuer das Feedback ... leider ist es mir bisher nicht gelungen, das disconnected-Callback auszuloesen, auch wenn ich die Einheit vom Strom nehme.

So funktioniert TCP/IP nicht. Eine Verbindung bleibt solange bestehen bis sie aktiv geschlossen wird. Das passiert aber beim Trennen der Stromversorgung nicht. Daher denke die IPConnection weiterhin verbunden zu sein, weil sie das rein technisch auch ist.

Der aktuell beste Weg damit in deinem Fall umzugehen ist auf die Timeout Fehler zu achten. Wenn z.B. 3 Timeouts hintereinander passieren dann kannst du das als Auslöser für ein Neuverbinden nehmen und auf der IPConnection disconnect() gefolgt von connect() aufrufen.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...