NEWS
Ampel rot bekommen
-
Hallo zusammen,
ich habe mehrere Adapter und würde bei falschen Verbindungseinstellungen bzw. Verbindungsfehlern gerne die Ampel in den Instanzen auf rot haben.
Wenn ich mit
adapter.log.error
einen Fehler werfe, bleibt die Ampel allerdings grün.
Wenn ich mitthrow <Error>
eine Exception werfe, dann wird die Ampel zwar rot, allerdings steht dann auch im Loguncaught exception
, was ich eigl. vermeiden wollen würde. Außerdem führt das bei mir dazu, dass der Adapter immer wieder neustartet (jetzt schon 12x im Test).Danke und viele Grüße
Zefau -
@Zefau Hey,
führtadapter.terminate("keine Zugangsdaten", 4)
auch zu einem automatischen Neustart? -
@Zefau schau mal hier:
https://github.com/AlCalzone/ioBroker.ble/blob/master/src/main.ts#L392Die Funktion prüft, ob
adapter.terminate
existiert (ist nicht in allen Versionen verfügbar) und ruft sie auf. Falls nicht, wirdprocess.exit
mit Exit-Code 11 aufgerufen, welcher einen Neustart des Adapters verhindert (stoppt den Adapter einfach). -
@thewhobox sagte in Ampel rot bekommen:
adapter.terminate("keine Zugangsdaten", 4)
Mega, vielen Dank! Ampel bleibt rot und Adapter startet nicht mehr durch.
Fehlermeldung im Log ist:instance system.adapter.hue-lights.0 terminated by request of the instance itself and will not be restarted, before user restarts it.
-
@AlCalzone super, vielen Dank. Wofür genau steht der Integer Wert bei
terminate
? -
@Zefau Du kannst der Funktion einen Grund für die Terminierung (string) angeben, der im Log ausgegeben wird, einen Exit-Code (number), oder beides.
Die Exit-Codes kannst du hier nachlesen:
https://github.com/ioBroker/ioBroker.js-controller/blob/master/lib/exitCodes.jsDer einzig sinnvolle aus Adaptersicht ist eigentlich
ADAPTER_REQUESTED_TERMINATION: 11
-
@AlCalzone Mit dieser Methodik schlägt travis allerdings fehl, oder? Siehe https://travis-ci.org/Zefau/ioBroker.hue-extended/jobs/570010555#L582
-
Hab's schon rausbekommen. Habe die Option
{ "allowedExitCodes": [11] }
in meine Test-Dateien aufgenommen (Unit & Integration). -
@AlCalzone Nochmal kurz nachgehakt: Wenn ich
terminate
oderprocess.exit
funktioniert (logischerweise) die message-box nicht mehr (also die Kommunikation von der Adapterkonfiguration in den Adapter viaadapter.on('message', function(msg)
).Gibt's eine Möglichkeit, dass diese funktionsfähig bleibt trotz roter Ampel?
Anwendungsfall: In meinem Roomba Adapter soll eine rote Ampel gezeigt werden, wenn die Roomba Zugangsdaten fehlen. Diese Daten können aber in der Adapterkonfiguration automatisch (aus dem Adapter) geladen werden (im Adapter wird eine Verbindung zum Roomba aufgebaut).
Solange die Zugangsdaten fehlen, soll der Adapter aber rot bleiben. -
@Zefau wieso stellst du die Ampel nicht auf gelb?
Intern stopst du deine Prozesse und setzt Info.connection auf false. (damit wird die Ampel gelb)
Damit funktioniert die messages Funktion noch. -
@Zefau sagte in Ampel rot bekommen:
In meinem Roomba Adapter soll eine rote Ampel gezeigt werden, wenn die Roomba Zugangsdaten fehlen.
Dafür ist die gelbe Ampel:
rot = Adapter aus
gelb = Adapter an, aber nicht verbunden
grün = Adapter an, verbunden -
@AlCalzone Alles klar, vielen Dank für eure Antworten. Ist nirgendwo so dokumentiert oder? Werde den Adapter dann auf gelb setzen. Danke euch.