Eine Wetterstation, die regelmäßig ausfällt ist ja auch irgendwie ein Wetterphänomen. Meine fällt aus wenn es in kurzer Zeit zu viel regnet, früher hätte man gesagt wenn es schüttet wie aus Eimern, heute nennt man es Starkregen, also Erderwärmung, Greta usw. – genau genommen reagiert sie auf den Klimawandel. Auch irgendwie cool.
Es scheint wohl so dass der Sender bei Starkregen einen Wert sendet, der zu groß ist um von der Empfangseinheit verarbeitet werden zu können und die hängt sich dann einfach auf. Buffer Overflow, klassisch. Die Empfangseinheit hängt via USB an einem Raspberry Pi und wird von dort mit Strom versorgt und auch ausgelesen. Die Werte werden erst lokal aufbereitet und dann versendet. Bei dem Setup gibt es zwei Lösungsmöglichkeiten um das Ganze robuster zu bekommen:
- Man hängt Raspi samt Empfangseinheit an eine schaltbare Steckdose, wertet die Wetterdaten mit der Heimautomatisierung aus und wenn die nicht plausibel sind, dann nimmt man ein paar Sekunden den Strom weg, startet das Gespann also neu.
- Oder – und das ist viel geekiger – man wertet die empfangen Werte am Raspberry Pi direkt aus und wenn nichts mehr kommt, dann deaktiviert man die Stromversorgung vom USB-Interface für ein paar Sekunden und startet nur die Empfangseinheit neu. Und das geht direkt auf der Kommandozeile!
Option 1 ist eine klassische Client-Server Lösung, Option 2 ist Edge-Computing. Und du so? Ouzo? Nee, mehr so Edge-Computing. Wie das Deaktivieren der USB-Schnittstelle funktioniert, ist hier recht weit unten im Absatz „Es funktioniert auch ohne zusätzliche Programme, ABER …“ beschrieben. Falls man unterwegs ist, sollte man den Absatz erst ganz durchlesen bevor man Befehle der Reihe nach ausführt. Weil die Info dass die Ethernet-Schnittstelle auch deaktiviert wird, habe ich leider zu spät gelesen.
Für heute bleibt in dem Fall nur Olli Schulz zu zitieren: Mach mich nicht an ich kann den Death Kick – und ich mach davon Gebrauch – aber nur im Notfall – denn der Angreifer stirbt auch. Aber rein von der Theorie her sollte es mit diesem Befehl von unterwegs aus möglich sein die Empfangseinheit wieder zum Laufen zu animieren:
sudo echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/unbind && sleep 5 && sudo echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/bind