smarthome-tricks.de

ioBroker Adapter-Neustart über VIS

In diesem Artikel zeige ich Dir, wie ich einen Adapter-Neustart über VIS gelöst habe.

Ich hatte in den letzten Wochen manchmal das Problem, dass der InfluxDB-Adapter aus nicht erklärlichen Gründen die Verbindung zur InfluxDB verloren hatte. Der Adapter wurde dann in der Liste der Instanzen gelb oder rot dargestellt. In diesem Fall habe ich den Adapter dann händisch neu gestartet. Im Artikel zeige ich Dir, wie Du einen solchen Adapter-Neustart auch über die Visualisierung direkt umsetzen kannst.

Im ersten Schritt wechseln wir jetzt in die ioBroker Objekte und aktivieren den hier markierten Expertenmodus um weitere Adapter-Datenpunkte einblenden zu können. In der Expertenmodus-Ansicht finden wir jetzt neue Ordner und Datenpunkte für die einzelnen Adapter. In unserem konkreten Beispiel betrachten wir die Datenpunkte system.adapter.influxdb.0. Der Datenpunkt alive dient zur Anzeige und Steuerung des Adapter-Status. Der Wert true bedeutet, dass das Adapter aktuell gestartet ist. False steht für gestoppt. Wenn der Adapter gestartet, aber nicht mit der InfluxDB verbunden ist, dann steht der Wert des Datenpunktes connected auf false.

Nach dem wir uns jetzt die benötigten Datenpunkte für die Steuerung des Adapter angesehen haben, erstellen wir uns im nächsten Schritt einen eigenen Datenpunkt für die Steuerung. Hierfür habe ich mir im Bereich userdata einen eigenen Datenpunkt mit dem Namen „AdapterRestart.influxdb“ angelegt. Der Datenpunkt speichert einen logischen Wert (true/false).

Bevor wir mit dem Script beginnen, setzen wir den Datenpunkt jetzt noch auf den Wert false.

Im nächsten Schritt wechseln wir in den Bereich Scripts und erstellen und hier über die Plus-Schaltfläche ein neues Script.

Als Script-Typ habe ich hier JavaScript gewählt. Über Blockly würde die Steuerung natürlich genauso aufgebaut werden können.

Als Namen verwende ich hier wie immer einen sprechenden Namen. Im Script kann ich so später bei Bedarf noch weitere Adapter aufnehmen.

Jetzt kommen wir zum eigentlichen Script zur Steuerung des Adapters. Im Script wird eine On-Subscription auf den manuell angelegten AdapterRestart Datenpunkt erzeugt, welcher über die Bedingung „val: true“ nur ausgelöst wird, wenn der Wert des Datenpunkts auf true gesetzt. Nach einer Aktualisierung des Datenpunkts wird dann der alive-Datenpunkt des Adapters auf false gesetzt und somit der Adapter gestoppt. Über die setTimeout() Funktion warten wir dann 2000 ms (2 Sekunden) und setzen den alive-Datenpunkt dann auf true. Somit wird der Adapter wieder gestartet. Abschließend setzen wir dann noch unseren AdapterRestart-Datenpunkt auf false.

on({id: '0_userdata.0.AdapterRestart.influxdb', val: true}, function (obj) {  
    // Adapter stoppen
    setState("system.adapter.influxdb.0.alive", false);

    setTimeout(function() {
        // Adapter nach 2 Sekunden starten
        setState("system.adapter.influxdb.0.alive", true);

        // AdapterRestart-Datenpunkt zurücksetzen
        setState("0_userdata.0.AdapterRestart.influxdb", false);
    }, 2000);
});

Nach dem wir das Script dann gespeichert und aktiviert haben, können wir im nächsten Schritt mit der Visualisierung beginnen. Ich habe dazu meine Visualisierung um einen Button erweitert und hier in den Datenpunkt AdapterRestart.influxdb den Wert true gesetzt. Somit wird unser erstelltes Script ausgeführt und ein Adapter-Neustart durchgeführt.

Ich hoffe Dir gefällt der Artikel. Über Kommentare, Anregungen oder Ideen freue ich mich wie immer 🙂

Die mobile Version verlassen