NEWS
Datenpunktabfrage nach Neustart
-
hi!
gibt es einen datenpunkt, den man abfragen kann, um festzustellen ob der ioBroker nach einem neustart wieder komplett hochgefahren ist? (bzw. alle adapter geladen und bereit sind).
gruß
arni -
@arniworx Also bei mir startet iobroker nach einem Neustart wieder genau die Instanzen, die vor dem Stoppen aktiv waren. Das ist Standard und sollte bei jedem so sein. Wenn bei Dir irgendeine Instanz nach einem Neustart nicht mehr startet, so solltest Du eher da schauen, was den Start der Instanz behindert bzw. mal genau schreiben, welche Instanzen das betrifft.
Und komplett hochgefahren ist iobroker, wenn alle Instanzen gestartet sind. Dazu gibt es AFAIK keinen eigenen Datenpunkt. Eventuell wäre es mit einem Script möglich, welches Dir das ausliest. Im Expertenmodus taucht in den Objekten ein „Ordner“ system auf. Darunter gibt es Adapters und darin für jede Instanz einen Unterordner mit einem Datenpunkt „alive“. Der zeigt vermutlich an, ob die Instanz läuft.Gruss, Jürgen
-
-
Ich habe den Thread hier hin verschoben
- er ist nicht auf Englisch
- bisher habe ich auch keine Verbindung zu Javascript gefunden
-
Mach Dir halt einen JSON Objekt indem Dir alle Adapter antworten und werte dieses halt aus - so mach ich das halt - mit NodeRed, kannst aber natürlich jede Logikmaschine Deiner Wahl verwenden.
Unter jedem Adapter findest Du in der Regel einen alive Datenpunkt.
z. Bsp.
system.adapter.admin.0.aliveDas heißt Du kannst theoretisch mit
system.adapter.*.*.alive
alle Datenpunkte/Adapter abonnieren.Wenn Du willst kannst Du in diesem Objekt nicht nur prüfen, ob alle Adapter gestartet sind, sondern ggf. eigene Indikatoren verwenden.
-
@arniworx Wie gesagt, sag uns halt mal, was Du warum genau sehen willst. Bestimmter Adapter? Nur als Nachricht, dass iobroker, warum auch immer, neu gestartet wurde? Dann kann man Dir am Besten sagen, ob, und wie es funktionieren könnte.
Gruss, Jürgen
-
@arniworx sagte: festzustellen ob der ioBroker nach einem neustart wieder komplett hochgefahren ist? (bzw. alle adapter geladen und bereit sind).
Per Javascript:
const instances = 6; // alle aktiven Instanzen im Mode "daemon" const ids = $('system.adapter.*.alive'); var alive = 0; ids.each(function(id) { // alle bereits laufenden Instanzen if(existsState(id) && getState(id).val) alive++; }); ids.on(function(dp) { // alle nach Javascript startenden Instanzen if(dp.state.val) alive++; if(alive == instances) log('Alle Instanzen laufen'); });
Anstelle der Log-Ausgabe kann auch ein Datenpunkt geschrieben werden.
-
danke für eure antworten!
die anforderung ist eher banal: ich möchte eine nachricht (z.b. telegram) bekommen wenn der ioBroker nach einem neustart wieder vollständig geladen und funktionstüchtig ist.
zur zeit starte ich den dienst einmal, die woche per cron neu. vor dem neustart eine nachricht zu schicken, klappt wunderbar (klar, da läuft ja auch noch alles).
den ansatz von @mickym finde ich gut - hab allerdings keine ahnung, wie ich das in javascript umsetzen soll.
danke
arni -
@paul53 funktioniert perfekt! genau das, was ich gesucht hab. vielen dank!