Hallo zusammen,
Ich würde gerne in einem Controller eine Exception einbauen, die wenn sie geworfen wird, das OpenEms Edge neustartet.
Kann mir jemand mit dem Code dafür auf die Sprünge helfen?
Beste Grüße,
Dominik Bauer
Hallo zusammen,
Ich würde gerne in einem Controller eine Exception einbauen, die wenn sie geworfen wird, das OpenEms Edge neustartet.
Kann mir jemand mit dem Code dafür auf die Sprünge helfen?
Beste Grüße,
Dominik Bauer
Hallo Dominik,
sowas sollte eigentlich nie erforderlich sein. Warum ist das notwendig?
Neustarten wäre in jedem Fall etwas, was außerhalb von OpenEMS Edge stattfinden müsste. Wenn die Java-Applikation z. B. über einen Systemd-Service verwaltet wird (wie hier in der Doku beschrieben), dann würde der Service immer neu gestartet werden, nachdem er sich beendet hat (Restart=always
). Außerdem wird dort ein Watchdog aktiviert (WatchdogSec=60
), der regelmäßig getriggert wird (siehe hier im CycleWorker).
Falls es wirklich notwendig ist, sehe zwei Ansätze:
system.exit()
(https://www.baeldung.com/java-system-exit). Nachteil: das ist ziemlich brachial und könnte z. B. dafür sorgen, dass Dateien nicht richtig geschlossen werden, Daten verloren gehen, usw.Gruß,
Stefan
Hallo Stefan,
Beispielsweise wurde gestern der SOC der Batterie falsch ausgegeben, was durch einen Neustart behoben wurde.
Eine Exception, die den Raspberry neustartet, würde prinzipiell auch funktionieren.
Beste Grüße,
Dominik Bauer
Aus dem Screenshot kann ich den SOC-Fehler noch nicht ableiten. Wie sieht das Log in dem Zeitraum aus? Wurden “falsche” Werte gelesen (also z. B. > 100 %) oder keine Werte (“UNDEFINED”)? Wird bei einem Fehler bereits eine Exception geworfen?