Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Geschrieben

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!

Geschrieben

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

Geschrieben
  • Autor
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?

Geschrieben
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.

Geschrieben
  • Autor

Danke dir, das werd ich so machen - ich war davon naiverweise davon ausgegangen, dass zu viele timeouts intern in $ipcon auch einen disconnect ausloesen.

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...

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.