NEWS
Script Adapter neu Starten lassen
-
Hallo zusammen,
ich bräuchte mal wieder euere Hilfe Und zwar geht es darum das ich ein Script bräuchte was den Parser Adapter neu Starten lässt.
Sprich wenn 5 Minuten keine Werte an Iobroker übertragen werden das der Parser Adapter neu Startet wie realisiert man sowas ?Grüße Timo
-
var obj = getObject("system.adapter.parser.0"); obj.common.enabled = false; // Adapter ausschalten setObject("system.adapter.parser.0", obj);
und umgekehrt wieder einschalten
var obj = getObject("system.adapter.parser.0"); obj.common.enabled = true; // Adapter einschalten setObject("system.adapter.parser.0", obj);
-
Oder hier als Funktion:
adapterOnOff()Würde aber immer die Ursache angehen, wenn möglich. Eigentlich sollte es nicht notwendig sein, einen Adapter öfters neu zu starten.
-
Hallo und danke erstmal.
Ich suche ein Script was wenn der Adapter 5 Min keine werte liefert Automatisch neu Startet. Also sprich über einen Zeit Stempel von dem Abgerufenen Wert.
@Mic die Ursache versteht ich nicht. Der Parser Adapter ruft werte von einem Raspi alle 30sec ab. Aber manchmal hängt sich der Adapter einfach auf. Am Raspi liegt es nicht weil wenn der Parser keine Daten abruft der Raspi Automatisch neu Startet.
Grüße
-
Hallo,
keiner eine Idee bzw. Vorschlag ?
-
@kasperfunsurfer
Unten ein Beispiel. Musst halt mit den Zeiten spielen. Wird jede Minute ausgeführt, und prüft, ob State länger als 5 Minuten nicht geändert wurde.Empfehle Dir trotzdem, ein Github-Issue zu öffnen oder hier noch mal im Forum genau das Problem mit dem Adapter zu schildern (neuer Thread mit aussagekräftigem Betreff).
const STATE_PATH = 'HIER PFAD ZU STATE EINTRAGEN'; let mSchedule; let wieOft = '* * * * *'; // Jede Minute clearSchedule(mSchedule); mSchedule = schedule(wieOft, function(){checkStateTs(STATE_PATH)}); function checkStateTs(statePath) { // Prüfe, ob sich innerhalb der letzten 5 Minuten der State geändert hat. let timestampState = new Date(getState(statePath).ts); let timestampStatePlusFiveMin = new Date(timestampState.getTime() + (5 * 60000)); // 5 Minuten Differenz let timeCurrent = new Date(); if(timestampStatePlusFiveMin > timeCurrent) { log('State hat sich innerhalb der letzten 5 Minuten geändert.') } else { log('State hat sich innerhalb der letzten 5 Minuten NICHT geändert.') } }