iobroker-community-adapters / ioBroker.device-watcher

Watchdog for adapter/instances and devices/services.
MIT License
19 stars 11 forks source link

Adapter bei Systemstart verzögert starten #340

Open Wildbill-Z opened 2 months ago

Wildbill-Z commented 2 months ago

Auf Vorschlag aus diesem Thread möchte ich anregen, den Adapter bei einem Neustart von iobroker verzögert starten zu lassen. Viele Adapter setzten ihre Geräte auf alive=false / abwesend. Wenn diese Adapter noch nicht gestartet sind, device-watcher aber die Arbeit aufnimmt, so meldet er zig Geräte als sofort als offline und dann nach und nach als online. Wenn device-watcher hier pauschal als letztes startet, oder nach einem Neustart erst einmal eine (definierbare?) Zeit warten würde, bis er auswertet, wäre das damit erschlagen. Im Thread ist von TIER-Leveln die Rede, wobei es da wohl nur 3 gibt. Das lässt sich zwar manuell einstellen, aber eine Verzögerung innerhalb des Adapters wäre vermutlich sinnvoller?!

Gruss, Jürgen

Ilovegym66 commented 2 months ago

Hi, ich verstehe das Problem, aber es sollte mit Tier 3 doch absolut ausreichend sein. Nach Level 3 gibts doch auch nichts mehr, was gestartet werden kann... wenn alles zu langsam ist, dann bessere Hardware nehmen.. denke, hier liegt eher das Problem, als an der Software... Der Device-Watcher ist Standard Level 2, was ich nicht so wirklich verstehe, denn der macht ja erst Sinn zu pruefen, wenn alle anderen gestartet sind, aber dazu reicht Level 3. Hier stellt man das ein, Expertenmodus an, dann in Instanzen den Adapter aufklappen: image

Wildbill-Z commented 2 months ago

An der Hardware liegt es sicher nicht, läuft unter Proxmox mit 16-Kern-CPU. :-) Ich komme auch klar, indem ich, wie im Thread beschrieben, Javascript, Sourceanalytix und eben den device-watcher vor einem fälligen Neustart eh anhalte und dann manuell erst starte, wenn alle anderen Instanzen wieder laufen. Mir wurde nur geraten, halt mal ein Issue zu erstellen, damit es möglicherweise mal angedacht ist, hier was einzubauen. Es gibt ja nur die 3 Level. Und wenn jetzt ein Geräte-Adapter auch auf Tier 3 startet, würfelt eben das System aus, welche Reihenfolge für die Tier-3-Instanzen gilt. Wie man es einstellt wurde im Thread bereits beschrieben. Aber nicht jeder kennt das, man muss in den Expertenmodus schalten, und möglicherweise reichen die 3 Level doch nicht aus.

Gruss, Jürgen

ciddi89 commented 2 months ago

Moin,

Also die Problematik ist mir bekannt und ich weiß wie nervig das bei einer hohen Anzahl an Geräten sein kann. Das Problem besteht auch nicht nur wenn der iobroker neustartet, sondern auch wenn einzelne Adapter neu starten. Ich hatte zb mal einprogrammiert das Geräte nur on/offline gemeldet werden wenn der dazugehörige Adapter eine gewisse Zeit läuft bzw. überhaupt läuft. Das funktioniert aber leider nicht überall. Zb zigbee2mqtt schaltet erst alle Geräte offline bevor er sich abschaltet. Hatte bis dato keine Ahnung wie ich das abfangen soll, damit man nicht massig Benachrichtigung bekommt. Hatte an einen buffer gedacht der die Nachrichten sammelt und dann zusammenfasst. Wegen System Wechsel ist das dann aber untergegangen. Ich nehme aber gerne Ideen an und würde da nacharbeiten. :)

Wildbill-Z commented 2 months ago

Ja, Zigbee2MQTT ist da in der Tat so ein Kandidat. Wenn der beendet wird, läuft Telegram bei mir heiß. Mir fällt grad ein, im device-watcher lässt sich ja für jede überwachte Instanz ein separater Timeout eintragen, der dann erst nach der Verzögerung meldet, anstatt direkt, wenn ein Adapter was offline meldet. Eventuell muss ich damit mal spielen. Das wäre ja quasi die Verzögerung, die man manuell einstellen kann und ich oben angesprochen hatte, oder?!

Gruss, Jürgen

EDIT: Greift diese Verzögerung auch beim Neustart von device-watcher oder geht der einmal alles durch und meldet sofort, wenn er neu startet?

ciddi89 commented 2 months ago

Der Device-watcher selber geht beim start nur einmal durch, reagiert aber nicht sonder schreibt nur die Listen. Problem sind die Adapter die nach dem device-watcher starten bzw. davor und die Geräte noch nicht alle erreichbar sind. Wenn die danach Online gehen, meldet er die natürlich als wieder erreichbar. Mit den Zeiten muss man Testen ob die dann auch greifen. Habe ich nie drauf geachtet bei Neustart wenn ich ehrlich bin.