NEWS
ioBroker Log auslesen und verarbeiten
-
-
@Psycho0verload sagte:
mit Blockly oder Node Red den Log von ioBroker auszulesen und auf einen Eintrag zu reagieren.
Mit Javascript.
-
@liv-in-sky oh, das habe ich übersehen. dann arbeite ich mich mal durch
-
@Psycho0verload - ein kleines script- ist javascript - aber sehr einfach zum handhaben - damit kannst du einfach auf log einträge reagieren - brauchst du mehr, ist das andere script zu empfehlen
es legt 2 datenpunkte an unter der javascript-instanz, in der das script läuft
wenn nun ein "error" im log kommt wird der def. datenpunkt auf true gesetzt und nach 2 sec wieder auf false - dann kannst du diesen datenpunkt überwachen - und darauf reagieren
wenn du mehr alarme brauchst kopierst du dir die einzelnen abfragen und gleichst die daten an
im script sind die anzugleichenden werte kommentiert. da du Meross und test nicht brauchst, kannst du auch diese löschen oder angleichendanke @paul53 - kannte ich noch nicht ist aber cool
-
@liv-in-sky
Weshalb verwendest Du zwei identische Trigger ?onLog('error', callback);
Man muss aufpassen, dass das Skript selbst keinen Error-Log erzeugt, sonst gerät man in eine Endlosschleife. Deshalb vor Aktivierung des Triggers die Callback-Funktion ausgiebig testen !
-
@paul53 gut das du drüber schaust - aber ich dachte, der trigger ist einmal data und einmal data2 - oder check ich was nicht
-
@liv-in-sky sagte:
dachte, der trigger ist einmal data und einmal data2
Der Trigger ist 'error' (alle Error-Logs). data ist der Parameter, der die Daten für die Callback-Funktion enthält.
-
@liv-in-sky
In der Callback-Funktion wird man filtern, um Aktionen auszuführen.// Filtern nach Error-Message function checkErrors(logs) { if(logs.message.indexOf('radar2.0') != -1) { // Aktion(en) } } onLog('error', checkErrors);
-
@paul53
wollte auch gerade vorschlagen
ist das besser -
@liv-in-sky sagte:
ist das besser
Ja, aber besser in einer separaten Funktion, damit man diese testen kann, bevor man den Trigger darauf loslässt.
dpPrefix braucht es bei den Befehlen createState(), getState() und setState() nicht. -
@paul53 ich werde es mit einer eigenen function machen und oben ausbessern - nochmals vielen dank
verbessertes script ist oben ausgebessert https://forum.iobroker.net/post/329570
-
Oh, jetzt war ich ein paar Tage nicht online und hier sind neue Lösungsansätze entstanden. Vielen Dank! Das Script https://forum.iobroker.net/topic/13971/vorlage-js-log-datei-aufbereiten-für-vis ist recht komplex. Ich versuche mal das Script von hier, es erscheint einfacher für meinen Anwendungsbereich.
-
@liv-in-sky den Fehler nach dem ich suchen möchte
radar2.0 2019-12-05 10:59:32.612 warn (515) BT already scanning!
Ich versuche dein Script mal dahingehend umzubauen, aber vielleicht kannst du auch mal schauen.
Tausend Dank schonmal für das Script!
-
probier mal das hier - hier ist eine function für warnings drin
dein beispiel ist auch eingefügt - müßte eigentlich sofort funktionieren
-
@liv-in-sky Ich werde es gleich ausprobieren!
-
@liv-in-sky Vielen Dank!
Hab das bei mir auch mal einbaut und insoweit geändert, das ich das in Node-RED weiter verarbeiten kann. -
Hallo Paul, ich weiß der Thread ist etwas älter aber ich würde bei einem bestimmten error im Log den zigbee2mqtt Service gerne restarten.
Wäre das hier so möglich mit excec?
Wie kann man sicher stellen, dass der Restart nur 1x ausgeführt wird und nicht in einer Endlosschleife?function checkErrors(data) { if(data.message.includes("SRSP - AF - dataRequest after 6000ms")){ exec('sudo systemctl restart zigbee2mqtt'); } } onLog("error", checkErrors);
Danke und Grüße
-
@diamand2k22 Denke nicht dass dein iobroker Linux-Nutzer sudo-Rechte hat, oder?
-
wohl eher nicht, aber zumindest starte ich den externen dienst so immer neu. bei iobroker selber arbeite ich in der Regel immer ohne sudo!
evtl. kann ich den service auch ohne sudo reststarten, hab ich noch nicht probiert.