NEWS
IOBroker start - Adapter nacheinander starten
-
-
@haselchen sagte in IOBroker start - Adapter nacheinander starten:
Bitte einmal die Langfassung von
iob diag
hier in Code Tags posten
Kann ich später machen, bin noch unterwegs und das wäre gerade etwas umständlich.
Das Problem ist nicht im iobroker, das Problem bekommt die CCU wenn 4 Instanzen gleichzeitig im iobroker geladen werden. Das verursacht zu viel Last auf der CCU.
-
Ich habe auch 4 Instanzen und bevor Du Hellseher spielst , warten wir mal das iob diag Ergebnis ab.
-
@albert sagte in IOBroker start - Adapter nacheinander starten:
So wie ich das mit den Adaptern verstanden habe, starten diese doch automatisch nach einem Neustarte wenn sie zuvor schon gelaufen sind, wie kann ich diesen Neustart dann verhindern?
Genau, "wenn sie zuvor schon gelaufen sind".
Du könntest die rpc-Instanzen vor dem ´Runterfahren/Neustarten des ioBrokers stoppen. Dann starten sie beim Hochfahren/Starten des ioBrokers, soweit ich das weiß, nicht automatisch (ist zumindest bei mir so bei einer synology-Instanz). Wenn es Dir/der CCU dann paßt, könntest Du die hm-rpc-Instanzen via Skript dann starten. Das sollte auch, genau wie Du es willst (also Instanz 1 erst starten wenn Instanz 0 erfolgreich gestartet wurde usw.), mit den passenden Triggern funktionieren. -
Hab es nicht probiert aber vielleicht geht es ja. Die Datenpunkte findest du mit dem Expertenmodus.
Du musst schauen nach wie vielen Sekunden deine hm-rpc Adapter gestartet werden. Den Trigger stellst du früher ein und somit sollten die Instanzen nicht starten. Chromecast dient als Beispiel.
Den Start der Instanz kannst du auch raus zögern wenn du im Expertenmodus die Startstufe auf 3. stellst. Im Bild steht der Chromecast auf 2.
Funktioniert das mit dem anhalten des automatischen Starts kannst du wiederum mit der uptime in Sekunden des Admin deine Adapter nach und nach starten.
-
@andersmacher
So hatte ich es mir auch schon überlegt, aktuell mache ich es auch manuell so.
Wenn ich also den iobroker neustarte dann deaktiviere ich immer händisch alle hm-rpc Instanzen und aktiviere sie danach wieder.
Leider kann ich damit nicht den Fehlerfall abdecken wenn der iobroker bzw. das System auf der der iobroker läuft unerwartet neustartet. -
-
@albert sagte in IOBroker start - Adapter nacheinander starten:
unerwartet neustartet.
Da sollte man dann auch dran arbeiten.
Eigentlich soll er das nicht ^^. -
Vielen Dank die Idee hat echt etwas.
Ich bin momentan etwas am ausprobieren, deshalb auch die späte Antwort.Mein Gedanke ist, dass wenn die Skripte gestartet werden dann läuft diese Skript einmal durch, ich brauche also deshalb keinen Trigger, ich muss nur verhindern dass das Skript aktiv wird falls der Java Skript Adapter neustartet.
Funktioniert soweit nur dass die hm-rpc.0 Instanz nicht deaktiviert wird (denke das liegt an der uptime von 30) und dass die Skripte erst 4 Sekunden nach der hm-rpc.0 Instanz geladen werden.
Ich baue mir momentan eine kleine Testumgeben um damit besser rumspielen zu können ohne mein Produktivsystem zu beeinträchtigen. Dauert noch etwas ... -
@david-g sagte in IOBroker start - Adapter nacheinander starten:
@albert sagte in IOBroker start - Adapter nacheinander starten:
unerwartet neustartet.
Da sollte man dann auch dran arbeiten.
Eigentlich soll er das nicht ^^.Da gebe ich dir vollkommen recht, zum Glück kommt das auch nicht wirklich vor.
Hatte vor ein paar Wochen den Fall dass es bei uns eine Stromausfall gab, natürlich war ich nicht zu Hause und genau dann tritt der Fehler auf. Ja ja, ich weiß eine USV hätte geholfen.Prinzipiell möchte ich dass die Systeme immer wieder sauber hochkommen, egal aus welchen Gründen es zu einem Neustart kommt.
-
@haselchen sagte in IOBroker start - Adapter nacheinander starten:
Ist iob diag ein Geheimnis?
Aktuell ist das Ganze hier Glaskugel-Leserei.
Ich habe da eine andere Meinung als du aber bin natürlich froh dass du mir hier mit dem diag file helfen möchtest.
Ich werde es hochladen sobald ich wegen möglichen sensiblen Daten geschaut habe.
In den Logs sind doch einige vielsagende Skriptnamen und Seriennummern enthalten. -
@albert
Was du beachten musst dass die uptime nicht pro Sekunde aktualisiert wird. Das dauert immer ein paar Sekunden bis das Objekt den neuen Wert bekommt. Ich hab deshalb das Bild oben geändert und den Bereich für die Uptime zwischen eine Zeit gelegt. Ich hoffe du verstehst was ich meine...Theoretisch ist die uptime als einziger Trigger ja auch falsch. Machst du ein Admin Update startet das Script ja auch.
-
Mit Meiunung hat das wenig zu tun, eher mit Informationsfluss.
Das es einen Stromausfall gegeben hat, erwähnst Du jetzt mal nebenbei.
Einen Zusammenhang mit Deinem Problem erkennst Du dabei nicht?
Da kann es entweder Deine CCU zerrissen haben oder Deinen Iobroker Installation.
Da hilft Dir auch die Idee nicht Instanzen später starten zu lassen. -
Hatte vor ein paar Wochen den Fall dass es bei uns eine Stromausfall gab, natürlich war ich nicht zu Hause und genau dann tritt der Fehler auf.
Deine Hilfe in Ehren, aber ich denke, dass Problem liegt da woanders....
-
@haselchen sagte in IOBroker start - Adapter nacheinander starten:
Mit Meiunung hat das wenig zu tun, eher mit Informationsfluss.
Das es einen Stromausfall gegeben hat, erwähnst Du jetzt mal nebenbei.
Einen Zusammenhang mit Deinem Problem erkennst Du dabei nicht?
Da kann es entweder Deine CCU zerrissen haben oder Deinen Iobroker Installation.
Da hilft Dir auch die Idee nicht Instanzen später starten zu lassen.Ich erwähne das nebenbei weil es nur eines von vielen Szenarien ist.
Ich habe das Problem schon länger beobachtet und es folgt auch mehreren iobroker neu Installationen.
Ich kann es zuverlässig nachstellen indem ich den iobroker neustarte, irgendwann passiert es nicht aber, aber in ca. 10% der fälle.
Alle 4 hm-rpc Instanzen versuchen gleichzeitig mit der CCU zu kommunizieren, ich kann auf der CCU beobachten wir die Last hoch geht, bis die CCU die Grätsche macht.Für mich die naheliegendste Lösung ist die Instanzen nacheinander zu starten.
Wenn ich das manuell mache, dann geht es.
Deshalb meine Frage ob und wie ich das mit dem iobroker mache.
Aber es scheint ja nicht mit Hausmitteln zu gehen. -
Mach doch auch github mal einen Featurerequest auf, ob man da in drn Settings vom Adapter einen Delay einbauen könnte mit deiner Begründung.
-
Wir kennen immer noch nicht Dein Setup.
Software Version der CCU.
Ist es eine Originale oder Raspberrymatic etc...
Iob Diag scheint ja ein mächtiges Geheimnis zu sein.
Du lieferst für die Ursachenforschung 0,0 Infos.
Ich habe auch 4 Instanzen und die CCU langweilt sich, trotz über 30 Geräten, die permanent gepollt werden.
Ich bin jetzt raus.
Soll die Anderen Dir das aus der Nase ziehen.
Sorry -
@david-g sagte in IOBroker start - Adapter nacheinander starten:
Mach doch auch github mal einen Featurerequest auf, ob man da in drn Settings vom Adapter einen Delay einbauen könnte mit deiner Begründung.
Erst brauche ich noch die diag Ausgabe , das erste Feature Request wäre dann aber dass man die diag Ausgabe auch über das Webinterface erstellen lassen kann.
-
@david-g sagte in IOBroker start - Adapter nacheinander starten
Mach doch auch github mal einen Featurerequest auf,
Halte ich offen gestanden nicht für erforderlich. Im Standard geht es ja, daher ein eher sehr individuelles Problem, das man erstmal in seiner Konstellation suchen sollte. Die Kombination haben ja viele, nur nicht mit dem Problem.
Ich konnte auch nirgends lesen was für eine CCU im Einsatz ist. Ggf. ist die auch das Problem oder ggf. zu alt (CCU2?).
Das alles gepaart mit der unsinnigen Verweigerungshaltung zu
iob diag
ist echt schwer nachvollziehbar. -
@albert sagte: wie kann ich diesen Neustart dann verhindern?
Wenn iobroker herunter gefahren wird (kein Stromausfall), können mit der Funktion onStop() die Instanzen "disabled" werden. Beim Neustart können sie dann verzögert wieder freigegeben werden.
const idrpc0 = 'system.adapter.hm-rpc.0'; const idrpc1 = 'system.adapter.hm-rpc.1'; const idrpc2 = 'system.adapter.hm-rpc.2'; const hmrpc0 = getObject(idrpc0); const hmrpc1 = getObject(idrpc1); const hmrpc2 = getObject(idrpc2); function disableRpc() { hmrpc0.common.enabled = false; setObject(idrpc0, hmrpc0); hmrpc1.common.enabled = false; setObject(idrpc1, hmrpc1); hmrpc2.common.enabled = false; setObject(idrpc2, hmrpc2); } onStop(disableRpc); // Skripstart if(hmrpc0.common.enabled) disableRpc(); setTimeout(function() { hmrpc0.common.enabled = true; setObject(idrpc0, hmrpc0); }, 5000); setTimeout(function() { hmrpc1.common.enabled = true; setObject(idrpc1, hmrpc1); }, 10000); setTimeout(function() { hmrpc2.common.enabled = true; setObject(idrpc2, hmrpc2); }, 15000);