NEWS
Warema WMS >> Adapter Neustart nach bestimmten Log Einträgen
-
@tt-tom sagte in Warema WMS >> Adapter Neustart nach bestimmten Log Einträgen:
@blacktigga
spontan fällt mir da nix Neues ein. Wende dich doch mal an den Entwickler, vielleicht kann er weiterhelfen.@tombox Kennst Du ähnliche Auffälligkeiten, dass es in Verbindung mit Nutzung des IoBroker Adapters zu Verbindungsverlsuten zwischen Warema Access Point und Warema Aktoren kommt?
Die Access Box wurde bei mir schon mal getauscht. Der Fehler ist geblieben, so dass Warema das Problem jetzt im Moment eher nicht bei sich sieht, sondern in Verbindung mit der Smarthome Anbindung.
Danke Dir für eine kurze Einschätzung/Rückinfo.
-
In der Warema App sind dann in den beschriebenen Momenten sämtliche Schalt-Icons ausgegraut und entsprechend nicht bedienbar:
-
@blacktigga und wir sind jetzt noch beim eigentlichen "Problem" / "Thread" ? weil ...
@blacktigga sagte in Warema WMS >> Adapter Neustart nach bestimmten Log Einträgen:
n der Warema App sind dann in den beschriebenen Momenten sämtliche Schalt-Icons ausgegraut und entsprechend nicht bedienbar:
Wenn das eigentliche Thema erledigt ist dann bitte den Thread auf [gelöst] setzen und für Sonstiges einen neuen Beitrag aufmachen.
-
@djmarc75
Ja und Nein... ich wäre natürlich an der eigentlichen Ursache interessiert ansttatt mir da so eine Krücke mit Schaltsteckdose und hartem Neustart basteln zu müssen.Aber dafür benötige ich immer noch einen Trigger, und derzeitig kann ich nur über die o.g. Logeinträge erkennen, dass ein Neustart erfoderlich ist. Bis jetzt noch keine Lösung für Trigger aus Logeintrag für Umsetzung in Blockly.
-
Probiere mal das Script, es sollte bei einer Error Meldung von der Instanz einen Datenpunkt auf true setzen, den könntest du triggern.
const instanzname = 'javascript'; const dp_userdata = '0_userdata.0.example_boolean'; const Debug = true; onLog('error', data => { if (Debug) console.log('Fehler von: ' + data.from + ' mit Meldung: ' + data.message + ' ' + data.severity + ' ' + data.ts); let loginstanzname = data.from.split('.', 1); if (Debug) console.log(loginstanzname[0]) if (loginstanzname[0] == instanzname) { let logTimeout = null; if (logTimeout) { clearTimeout(logTimeout) }; setState(dp_userdata, true, true); if (Debug) console.log('Datenpunkt ' + dp_userdata + ' gesetzt') logTimeout = setTimeout(async function () { setState(dp_userdata, false, true); if (Debug) console.log('Datenpunkt ' + dp_userdata + ' zurückgesetzt') }, 5000); } });
lege dir unter 0_userdata ein Datenpunkt vom Typ Boolean an. Den Pfad dann im Script eintragen und den Instanznamen
EDIT: Script nochmal angepasst, nach 5s geht der Datenpunkt wieder auf false. Wenn du die Log-Meldungen nicht mehr brauchst, setzte Debug auf false.
-
Danke Dir für deine Hilfe.
Hab es jetzt so gemacht:const instanzname = wmswebcontrol.0; const dp_userdata = 0_userdata.0.var_Instantz_WMS_Trigger_aus_Log; const Debug = true; onLog('error', data => { if (Debug) console.log('Fehler von: ' + data.from + ' mit Meldung: ' + data.message + ' ' + data.severity + ' ' + data.ts); let loginstanzname = data.from.split('.', 1); if (Debug) console.log(loginstanzname[0]) if (loginstanzname[0] == instanzname) { let logTimeout = null; if (logTimeout) { clearTimeout(logTimeout) }; setState(dp_userdata, true, true); if (Debug) console.log('Datenpunkt ' + dp_userdata + ' gesetzt') logTimeout = setTimeout(async function () { setState(dp_userdata, false, true); if (Debug) console.log('Datenpunkt ' + dp_userdata + ' zurückgesetzt') }, 5000); } });
Erhalte aber eine Fehlermeldung beim Start des Skripts:
-
@BlackTigga
ja ist klar, du musst auch Springs übergeben, alsoconst instanzname = 'wmswebcontrol'; const dp_userdata = '0_userdata.0.var_Instantz_WMS_Trigger_aus_Log';
die "0" bleibt weg bei der Instanz
-
wenn du es testen willst, bau dir ein blockly und nehme als Instanzname
const instanzname = 'javascript';
bei jedem Neustart des Blockly sollte das Script auslösen
-
@tt-tom sagte in Warema WMS >> Adapter Neustart nach bestimmten Log Einträgen:
Der Test sieht im Log jetzt so aus:. Aus meiner Sicht erstmal erfolgreich, oder?
javascript.0 2023-06-01 12:48:31.612 info script.js.common.Warema_Neustart_Trigger_aus_Log_Eintrag: Datenpunkt 0_userdata.0.var_Instantz_WMS_Trigger_aus_Log zurückgesetzt javascript.0 2023-06-01 12:48:26.609 info script.js.common.Warema_Neustart_Trigger_aus_Log_Eintrag: Datenpunkt 0_userdata.0.var_Instantz_WMS_Trigger_aus_Log gesetzt javascript.0 2023-06-01 12:48:26.607 info script.js.common.Warema_Neustart_Trigger_aus_Log_Eintrag: javascript javascript.0 2023-06-01 12:48:26.605 info script.js.common.Warema_Neustart_Trigger_aus_Log_Eintrag: Fehler von: javascript.0 mit Meldung: javascript.0 (24658) script.js.common.00_Test: test error 1685616506599 javascript.0 2023-06-01 12:48:26.600 info script.js.common.00_Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 2023-06-01 12:48:26.599 error script.js.common.00_Test: test javascript.0 2023-06-01 12:48:26.578 info Start javascript script.js.common.00_Test javascript.0 2023-06-01 12:48:26.549 info Stop script script.js.common.00_Test
-
ja, so sollte es sein. Im nächsten Schritt könnte man noch die Meldung vergleichen, um nur bei einer bestimmten auszulösen.
Für den Anfang sollte es aber so passen.
-
Super, Danke Dir. Ich werde es testen und mich zurückmelden bei Erfolg/Misserfolg.
-
@blacktigga sagte: Schaltsteckdose davor geschaltet um dann in diesen Fällen das Stromlosschalten und den Neutsart automatisch durchlaufen zu lassen.
Vorschlag:
const idPlug = ''; // DP-ID der Steckdose eintragen! const instanz = 'wmswebcontrol.0'; const msg = 'Get device status failed'; var timer = null; onLog('error', data => { if(data.from == instanz && data.message.includes(msg)) { setState(idPlug, false); // Steckdose aus if(timer) clearTimeout(timer); timer = setTimeout(function () { setState(idPlug, true); // Steckdose ein }, 5000); } });
-
Hi, vielen Dank für die Erweiterung. Ich bin kein Experte für Coding, aber vorgefertigte Skripte bekomme ich der Regel dann irgendwie eingebunden. Dennoch versuche ich zumindest immer den Code ein weinig zu "verstehen".
Was ich ier noch nicht ganz verstanden habe, wodurch genau dein Skript jetzt angetriggert wird.
Es muss ja hiermit zu tun haben:
if(data.from == instanz && data.message.includes(msg)) wobei msg als Konstante mit 'Get device status failed' deklariert ist. Zu welchem Zeitpunkt haben wir denn die Meldung 'Get device status failed' irgendwo anstehen damit das in diesem Skript verarbeitet werden kann?Und muss in ein separates Skript eingefügt werden?
-
@blacktigga sagte: Zu welchem Zeitpunkt haben wir denn die Meldung 'Get device status failed' irgendwo anstehen
So steht es im ersten Beitrag.
@blacktigga sagte in Warema WMS >> Adapter Neustart nach bestimmten Log Einträgen:
Und muss in ein separates Skript eingefügt werden?
Ja, es sollte ein separates Skript sein.
@blacktigga sagte in Warema WMS >> Adapter Neustart nach bestimmten Log Einträgen:
wodurch genau dein Skript jetzt angetriggert wird.
Der Trigger ist onLog('error'), der bei jedem Error-Log triggert. Die Prüfung filtert die zugehörige Meldung heraus.
-
@paul53
Besten Dank, ist verstanden! Ich werde berichten.