iobroker-community-adapters / ioBroker.nuki-extended

Nuki Smart Lock - Keyless electronic door lock for smart access with your ioBroker
MIT License
29 stars 15 forks source link

Reboot Problem - Adapter startet nicht nach Systemstart #203

Open Dragon0501 opened 2 years ago

Dragon0501 commented 2 years ago

Ich habe ein Problem mit dem Adapter nach einem Reboot des Brokers. Wenn ich den Adapter noch einmal neu starte ist es kein Problem mehr und er wird grün. Der automatische Adapterstart beim Reboot des Brokers führt aber dazu, dass er sich nicht mit Gerät oder Dienst verbindet. Ich hatte den selben Effekt mal beim FB-Checkprsence Adapter. Da lag es daran, dass der History Adapter noch nicht lief beim Booten. Der Entwickler hat dann eine Prüfung in den Adapterstart mit eingebaut. Das funktionierte einwandfrei. Ist es möglich einen solchen Test auf Abhängigkeiten auch hier gleich mit einzubauen? Das Problem besteht schon seit geraumer Zeit und ist kein aktuell neues Problem.

Meine aktuell installierte Version des Adapters ist die 2.4.0, aber wie gesagt ist kein neues Problem, sondern existiert schon länger.

Screenshot 2022-02-10 09 59 53

sansonifabio commented 2 years ago

Das Problem kann ich auch bestätigen, selbes Verhalten. Startet zum Beispiel ioBroker neu dann bleibt der Nuki Adapter gelb starte ich den Nuki Adapter neu verbindet er sich und wird grün.

Superwuzy commented 2 years ago

Ich kann das Problem ebenfalls bestätigen. Daher habe ich vorerst wieder auf den Nuki-Adapter aktiviert. Die Thematik besteht aber schon länger. Nach jedem Start meines PI muss ich den Adapter manuell neu starten. Dann läuft er.

Grothesk242 commented 2 years ago

https://github.com/iobroker-community-adapters/ioBroker.nuki-extended/issues/118

sansonifabio commented 2 years ago

Guten morgen zusammen; gibt es was neues dazu? Das Problem besteht bei mir immer noch, auch mit der letzten Adapter Version v2.6.5 und auch mit NPM 16.5.1

PlatformBetriebssystem:linux Architektur:x64 CPUs:8 Geschwindigkeit:3196 MHz Modell:Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz RAM:7.4 GB System-Betriebszeit:1 T. 12:20:25 Node.js:v16.15.1 time:1655619881161 timeOffset:-120 Adapter-Anzahl:420 NPM:8.11.0 Datenträgergröße:467.0 GB freier Festplattenspeicher:437.5 GB Betriebszeit:1 T. 12:20:22 Aktive Instanzen:22 Pfad:/opt/iobroker/

sansonifabio commented 2 years ago

Also ich konnte den Fehler wohl was eingrenzen, wenn man den Web Adapter installiert hat und er nach dem booten von ioBroker vor dem Nuki Adapter offline ist verbindet sich Nuki nicht richtig Ist der Web Adapter vor Nuki Online, wird der Nuki Adapter direckt grün. Es wär schön wenn sich das mal ein Entwickler anschauen könnte und auch User das mal mit testen könnten. Vielen Dank Fabio

Nachtrag 03.07: Da sich anscheinnend hier nichts tut, habe ich den Adapter gestern gelöscht weil er mir doch einige Probleme bereitet. Danke an alle.

achimmm commented 1 year ago

Es sieht so aus, dass der Adapter bei gelb korrekt funktioniert.

Ich konnte das Problem wie folgt umschiffen:

r748 commented 1 year ago

@achimmm Vielen Dank für den wertvollen Hinweis!!!

Ich habe das nervige Problem vorläufig mit folgendem kleinen JavaScript gelöst. Funktioniert einwandfrei! Vielleicht hilft es ja jemandem weiter...

/**
 * Hilfsfunktion damit der Nuki-Extended Adapter nach einem Neustart grün wird anstatt gelb
 */
on({id: 'system.adapter.nuki-extended.0.alive', change: "ne"}, function (obj) {
    if (!obj.state.val) {
        setState("nuki-extended.0.info.connection", false);
    }
});
r748 commented 1 year ago

Wie ich gemerkt habe, reicht bei einem Neustart von ioBroker mein obiges Skript nicht, da der Javascript-Adapter in diesem Fall das Stoppen des Nuki-Extended-Adapters nicht erkennt und somit den connection Wert nicht auf false stellen kann. Ich habe mein Helferscript daher wie folgt angepasst. Damit wird der Nuki-Extended-Adapter auch nach einem ioBroker-Neustart immer grün statt gelb:

/**
 * Überwacht den Status des Nuki-Extended Adapters und setzt beim Stoppen
 * den connected Wert auf false
 */
on({id: 'system.adapter.nuki-extended.0.alive', change: "ne"}, function (obj) {
    if (!obj.state.val) {
        setState("nuki-extended.0.info.connection", false);
    }
});

/**
 * Nuki-Extended Adapter ggf. neu starten oder den connection Wert auf false setzen
 * damit der Adapter beim Neustart grün wird
 */
function fixNukiExtendedState() {
    let isNukiExtendedAlive = getState("system.adapter.nuki-extended.0.alive").val;
    let isNukiExtendedConnected = getState("system.adapter.javascript.0.connected").val;
    let isNukiExtendedAdapterConnected = getState("nuki-extended.0.info.connection").val;

    // Nuki-Extended Adapter läuft nicht, aber connection Wert ist true
    if (!isNukiExtendedAlive && isNukiExtendedAdapterConnected) {
        // Connection Wert auf false setzen
        setState("nuki-extended.0.info.connection", false);
        console.log("Fixing Nuki-Extended connection state");
    }
    // Nuki-Extended Adapter läuft und ist gelb
    else if (isNukiExtendedAlive && !isNukiExtendedConnected) {
        // Nuki extended neu starten
        exec("iobroker restart nuki-extended.0", function (error, stdout, stderr) { if (error != null) log(error.message); });
        console.log("Restarting Adapter Nuki-Extended");
    }
}

// Funktion beim Start des Javascript Adapters ausführen, damit der Nuki-Extended Adapter
// beim Neustart von ioBroker grün wird
fixNukiExtendedState();
Schwabendidi commented 1 year ago

@r748 Danke für das Script! Funktioniert bei mir ohne Anpassung auf Anhieb.