Jump to content

Wifi Verbindungsabbruch - automatischer Reset


Recommended Posts

Hallo, 

Mein System besteht aus einem Masterbrick 2.1 mit verschiedenen Sensoren und einem Wifi Master Extension, die über eine Antenne das Wifi-Netz aufbaut. Mit Python habe ich ein Script, welches über einen längeren Zeitraum von mehreren Wochen über Callback Funktionen in bestimmten Zeitabständen die Messwerte der Sensoren einholt. Generell läuft das System stabil und verbindet sich bspw. bei Stromausfall auch wieder direkt und trackt weiter.

Nun habe ich jedoch zu zufälligen Zeiten Ausfälle des Wifi Netzes, sodass der komplette Stapel nicht mehr erreichbar ist (meistens erst so nach 1-2 Tages). Ein Reset am Master Brick reicht aus um das Netz wieder aufzubauen und das Tracking läuft damit weiter. Nur muss man dafür leider physisch vor Ort sein um den Knopf zu drücken.

Ich suche nun nach einer Alternative, dass der Reset automatisch abläuft. Ist es möglich beim Master Brick eine Funktion zu definieren, dass er bei längerem fehlenden Input automatisch reseted oder wäre dafür der Red Brick nötig? Alternativ könnte ich mir vorstellen, dass regelmäßiges reseten die Wahrscheinlichkeit für einen Ausfall senken könnte. Ich könnte über eine weitere Callback Funktion einmal stündlich den Master reseten.

Hatte jemand bereits ähnliche Probleme oder Erfahrungen mit automatischen Resets?

Viele Grüße

Mona

Link to post
Share on other sites

Moin,

Prinzipiell sollte das natürlich nicht passieren. Ist das Problem, dass dein Gerät, dass mit der Wifi-Extension verbunden sein sollte, nicht mal eine Wifi-Verbindung hinbekommt oder kannst du dich mit dem Wifi verbinden, kannst dann aber keine TCP-Verbindung aufbauen? (Das kannst du z.b. mit einem Ping testen)

Die Wifi-Extension kann prinzipiell nur 15 Verbindungen aufbauen, je nachdem wie dein Programm funktioniert und ob du mit deinem Gerät immer mal die Empfangsreichweite verlässt, kann es passieren, dass du Verbindungen leakst, also sie auf deiner Seite geschlossen sind, die Extension das aber nie mitbekommt. Die Verbindung bleibt dann für immer "offen" und du kannst nur noch eine weniger öffnen. Wenn das eine Weile so geht, wäre es durchaus möglich, dass alle 15 Verbindungen geleakt sind.

Da Wifi-Probleme typischerweise schwer zu debuggen sind kannst du versuchen das einfach zu umgehen, aber sowas:

2 hours ago, MStaudinger said:

Ist es möglich beim Master Brick eine Funktion zu definieren, dass er bei längerem fehlenden Input automatisch reseted oder wäre dafür der Red Brick nötig?

kann der Master Brick nicht.

Du kannst aber alternativ folgendes machen: Wenn du die Stromversorgung (Da du eine WiFi-Extension benutzt nehme ich an, dass du eine Step-Down-Power-Supply benutzt, ansonsten musst du dir ein USB-Kabel schlachten) über ein Industrial Dual Relay Bricklet führst, kannst du den Stapel, wenn die WiFi-Verbindung weg ist, resetten

IMG_20200812_130457.jpg

Der Trick an dem Aufbau ist, das die Stromversorgung über den Relay-Pfad geht, der bei nicht angezogenem Relay durchgeschaltet ist. Das Relay ist wenn das Bricklet startet nicht angezogen. Du kannst dann mit der API des Bricklets einen Monoflop auf "aus" über z.B. 5 Minuten starten, das Relay bleibt dann die nächsten 5 Minuten auch nicht angezogen. Wenn die Zeit abläuft, zieht das Bricklet das Relay an, der Stapel verliert die Stromversorgung, der Energieverbrauch des Relays zieht den Reststrom, und lässt dann wieder los. Dann ist die Stromversorgung wiederhergestellt und der Stapel startet neu.

Du kannst dann den 5-Minuten-Monoflop jede Minute neu setzen, dann verlängert sich der Monoflop um eine Minute, du hast dann also einen simplen Watchdog, der anspringt, wenn 5 Minuten lang kein Monoflop-Befehl ankam, was, wenn dein Programm durch läuft nur der Fall ist, wenn die Verbindung abreißt.

Die ganzen Zeiten usw. kannst du dir natürlich auf deinen Anwendungsfall anpassen.

Link to post
Share on other sites

Vielen Dank für die schnelle Antwort! :)

Das mit den 15 Verbindungen klingt plausibel, es ist gut möglich, dass es daran liegt. An sich bewegt sich keines der Geräte, die beteiligt sind. Jedoch ist der Aufbau etwas experimentell, da zwischen Antenne und Empfänger noch ein Repeater zwischengeschaltet ist. Beim Anpingen habe ich es zum Teil schon gesehen, dass einzelne Pakete unterwegs verloren werden.

Die Stromversorgung läuft aktuell einfach über ein USB Kabel und ein USB Netzteil. Inwiefern müsste ist das 'schlachten' um die vorgeschlagene Lösung umsetzen zu können?

Link to post
Share on other sites
13 minutes ago, MStaudinger said:

da zwischen Antenne und Empfänger noch ein Repeater zwischengeschaltet ist

Repeater machen da gerne seltsame Probleme, gut möglich, dass das das Problem ist.

13 minutes ago, MStaudinger said:

Die Stromversorgung läuft aktuell einfach über ein USB Kabel und ein USB Netzteil. Inwiefern müsste ist das 'schlachten' um die vorgeschlagene Lösung umsetzen zu können?

Du müsstest dafür die 5V-Ader des Kabels auftrennen (die entspricht im Bild dem roten Draht) und das Relay dazwischen hängen, am einfachsten ist es, wenn du einen dieser Stecker nimmst, die beim Industrial Dual Relay mitgeliefert sind, dann musst du theoretisch nicht mal löten, sondern kannst die beiden Enden der Ader in den Stecker stecken.

Link to post
Share on other sites

Ok, gut zu wissen. Dann werde ich mir einen Relay dazwischen bauen um den Fehler abzufangen.

Als kurzfristige Lösung habe ich mit in meinem Code einen Reset alle x Messungen eingefügt. Das ist nicht schön, sollte aber erstmal funktionieren bis ich den Relay habe.

Link to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...