Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Journal-Log erstellen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Journal-Log erstellen

Scheduled Pinned Locked Moved Node-Red
62 Posts 5 Posters 4.1k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T tomily

    @mickym
    WOW! Ich bin beeindruckt von so viel Aktivität, Kompetenz und Geschwindigkeit.
    Ihr seid ja alle der Hammer.

    DANKE für die Lösung von Dir mickym. Die Flows sind alle mit den Node-Red Bordmitteln und geben das Log im endeffekt so aus wie ich das wollte 🙂
    Hat nach dem importieren sofort funktioniert. Werde das mal noch versuchen auf mein eigenes Log anzuwenden, damit auch das voll läuft.

    Da ich kein großer und guter Scripter bin, werde ich mir die Scripting-Vorschläge auf jeden Fall anschauen. Fürchte aber, dass die Regex und andere Geschichten mich überfordern.

    Zunächst nochmal Herzlichen Dank. Melde mich gerne nochmal nach erfolgreichem Test zurück

    👍

    mickymM Online
    mickymM Online
    mickym
    Most Active
    wrote on last edited by mickym
    #61

    @tomily Das freut mich natürlich, wenn es so klappt, wie Du Dir das vorgestellt hast. Ich mache das ja gerne, weil ich selbst daran lerne und auch mit vorhandenen Kenntnissen, diese anders anzuwenden, als ich das heute bereits tue.

    Ich mache inzwischen ja kein Hehl mehr daraus, dass ich inzwischen ein großer NR-Fan bin und man, wenn man das Prinzip verstanden hat, mit quasi kaum Programmierkenntnissen einiges erreichen kann. Jedenfalls bin ich der Meinung, dass man bei blockly mehr Kenntnisse benötigt und für mich ist es eben auch nicht so intuitiv - da ich immer nach den entsprechenden Puzzlestückchen suchen muss und meist nie finde. 😉

    Die ganze Arbeit ist mit ca. 5-6 Nodes getan und auch die function Node ist nicht besonders aufwändig programmiert. In Kombination mit dem iobroker hat man halt in meinen Augen 2 Systeme, die sich ideal mit Ihren Stärken ergänzen. Das NR war - habe ich glaube schon früher mal geschrieben - von der IBM eine kommerzielles Produkt, was dann aber wohl freigegeben wurde. So genau weiß ich das nicht. Die Nodes jedenfalls sind mit Adaptern des iobrokers zu vergleichen - ich versuche gerade selbst welche zur Anbindung an den iobroker über socket.io zu entwickeln. Die Community hierzu ist deshalb noch wesentlich größer als IOB.

    NR hat jedoch überhaupt keine brauchbare Methode, die Zustände also die Datenbank anzuzeigen und zu verwalten. Für reine NR Benutzer war zu diesem Zweck MQTT - als Broker und Datenverwalter vorgesehen. Das ist auch der Grund, warum dieses Protokoll soviele Geräte benutzen. Hierfür hast Du dann aber wieder Drittmittel gebraucht, um das vernünftig anzuzeigen. Von solchen Features wie Aliases etc. ganz zu schweigen - das sind die wirklichen Stärken des IOB.

    Mein Ziel war es ja außerdem, quasi Hilfe zur Selbsthilfe zu vermitteln. Dir nicht einfach nur den Flow zur Verfügung zu stellen, sondern auch herzuleiten, wie ich/man so eine Lösung entwickeln kann. Dazu darf man oft nicht den Blick auf das Ganze verlieren. Das ist manchmal schwierig - aber mir macht es auch manchmal Spaß zu erkennen, was man selbst für ein Brett vor dem Kopf hat. 😉

    Beispiel: Du warst mit der Tail-Node, wie ich beschrieb schon auf dem richtigen Weg. Dieser Thread zeigt so eine Entwicklung in meinen Augen hervorragend. Dann hast Du Dich geärgert, dass die Tail-Node immer nur die letzte Zeile ausspuckt. Anstelle darüber nachzudenken, warum es vielleicht sinnvoll sein könnte nur 1 Zeile auszugeben, war nun Dein nächster Schritt eine Lösung zu suchen, mehrere Zeilen aus einem Log auszulesen, anstelle diese Zeilen eben in NR zu einem größeren Ganzen zu entwickeln. Dabei entlastet Dich NR ja gerade wegen der "Kleinheit" der Information. Einen größeren Informationsblock muss man mit Schleifen zerhacken, um letztlich eine Zeile in seine Bedeutungsbestandteile zu zerlegen und das wurde Dir abgenommen. NR ist ein Flow Tool - ich stelle mir immer vor, ich wäre eine payload und müsste mich durch die Nodes bewegen. Wenn ich also die letzte Zeile eines Logs wäre, dann wäre mein Ziel ja - nach der Aufgabenstellung - mal irgendwo in einer Tabelle als Klartext aufzutauchen - neben Geschwistern. Das sich für eine Ausgabe von Events ein Array anbietet durch das man einfach "durchiterieren" also durchzählen kann, hätte Dich vielleicht darauf gebracht, das Große zu sehen und hättest Dich nicht so sehr auf 50 Zeilen LOG lesen konzentriert.

    Ich hoffe es ist OK, wenn ich das mal so ausführlich schreibe. 😉

    Noch ein Wort zu den regulären Ausdrücken. Ich habe diese kryptischen Dinge gehasst, wie die Pest und bin da heute noch manchmal am fluchen. Deswegen habe ich Dir die Seite gepostet, die mir ungemein hilft.

    Trotzdem hier mal ein kleines Tutorial:

    Ich werde es nochmals am iobroker Log versuchen zu verdeutlichen, damit Du es auf die anderen Logs anwenden kannst.
    Dann drückst Du als erstes Mal den "New" button.

    Am Anfang muss man sich etwas auf der Seite zu Recht finden:

    1. Mit New - machst Du erstmal alles "clean" auf der Seite.

    2. Das zeigt schon aufgeklappt die Zeichenklassen.

    3. Ich habe mal als Beispiel \d für eine Zahl ausgewählt. Das heißt der regEx Ausdruck matched wenn er eine Zahl finden. Hier im Thread haben die Kollegen [0-9] genommen, das ist das Gleiche wie \d. Im Prinzip ist alles was Du in eckige Klammern packst, maßgebend für 1 Match. Wenn Du also [123] oder [1-3] gibst, dann muss der String oder die Zeichenfolge eben eine 1,2 oder 3 enthalten damit das matched. Man kann auch beliebiges kombinieren [123abc], dann gäbe es einen Match bei 1,2,3 oder a,b,c und zwar nicht als 1 Wort, sondern als 1 Zeichen als Auswahl aus dem was in den Klammern steht.

    4. Anhand des Beispielstrings siehst Du dann wie oft \d matched. Also dort 11 mal. Eine Regel für Dich muss später sein, dass ein Ausdruck genau EINMAL matched - nur so bekommst Du Eindeutigkeit.
      5 und 6. Dann sind noch die Quantifiers wichtig. Ein Punkt '.', wie zu Beginn vorgegeben steht für ein beliebiges Zeichen. Egal ob sichtbar oder nicht, ob Zahl Buchstabe etc. Wenn man New gedrückt hat, sieht man dass jedes der 4 Zeichen (da ja beliebiges Zeichen) matched. Also steht rechts (4 matches). Ausserdem siehst Du um jedes Muster, das matched ein blaues Quadrat. Der Quantifier gibt an wie oft man das vorhergehende Zeichen wiederholen muss, damit ein match erfolgt.
      screen.png

    5. Wenn Du also in dem RegEx nach dem Punkt einen * schreibst, was soviel bedeutet, dass das beliebige Zeichen - beliebig oft auftreten darf zu einem Match, dann siehst Du in

    6. das nun nicht mehr jeder einzelne Buchstabe mit einem blauen Quadrat umrandet ist, sondern das ganze Wort.

    7. Allerdings ist das nicht zu verwenden, da dieser regEx Ausdruck auf alles zutrifft und somit sinnlos ist - deswegen gibt es rechts die Warnung.

    screen2.png

    1. Um es spezifisch zu machen - kann man nun sagen es soll matchen wenn in der Zeichenfolge ein T gefolgt von beliebig vielen Zeichen folgt.
      e0c496dc-61aa-44e7-936a-f59230525aa1-image.png

    Du siehst 1 Match - was in der Regel das Ziel ist.

    1. Wenn man nur auf die Existenz von einem Zeichen oder einer bestimmten Zeichenfolge aus ist, dann ist es egal wie oft es matched ansonsten aber immer schauen dass es einmal matched.
      58078761-a69d-417f-a312-ec4dbc33ff7a-image.png

    2. So nun zu Deinen anderen Logdateien. Ich demonstriere es nochmal am iobroker Log.
      Kopiere einfach eine Zeile in das Textfeld - nachdem Du "New" gedrückt hast.
      screen.png

    Du siehst mit dem '.' alleine hast Du 134 matches und dann klicke unten auf Details. Ich kopiere jetzt die regEX da rein, die ich in den Change Nodes verwendet habe. Alles was in runden Klammern steht bildet Gruppen die Du von links nach rechts mit $1, $2, $3 referenzieren kannst.

    Wenn Du also folgenden Ausdruck oben reinkopierst, dann erhältst Du folgende Ausgabe im Detailfenster:

    (\d{4}-\d{2}-\d{2}\s\d{2}\:\d{2}:\d{2}).*\[\d\dm(\w{4}\w?).*39m:\s(.*)
    

    d48f43ee-e7d6-4ca4-8c0d-3cb42fc5f1f4-image.png

    1 Match für die Eindeutigkeit und dann siehst Du wie ich aus einer Logzeile über die Gruppe 1 = $1, den Zeitstempel, die Gruppe 2 die Severty und mit der Gruppe 3 den Rest aus der Zeile analysiere.

    So ich hoffe diese kleine Tutorial nimmt Dir bisschen die Angst vor regulären Ausdrücken und hilft Dir Deine übrigen Logdateien zu analysieren.

    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

    T 1 Reply Last reply
    1
    • mickymM mickym

      @tomily Das freut mich natürlich, wenn es so klappt, wie Du Dir das vorgestellt hast. Ich mache das ja gerne, weil ich selbst daran lerne und auch mit vorhandenen Kenntnissen, diese anders anzuwenden, als ich das heute bereits tue.

      Ich mache inzwischen ja kein Hehl mehr daraus, dass ich inzwischen ein großer NR-Fan bin und man, wenn man das Prinzip verstanden hat, mit quasi kaum Programmierkenntnissen einiges erreichen kann. Jedenfalls bin ich der Meinung, dass man bei blockly mehr Kenntnisse benötigt und für mich ist es eben auch nicht so intuitiv - da ich immer nach den entsprechenden Puzzlestückchen suchen muss und meist nie finde. 😉

      Die ganze Arbeit ist mit ca. 5-6 Nodes getan und auch die function Node ist nicht besonders aufwändig programmiert. In Kombination mit dem iobroker hat man halt in meinen Augen 2 Systeme, die sich ideal mit Ihren Stärken ergänzen. Das NR war - habe ich glaube schon früher mal geschrieben - von der IBM eine kommerzielles Produkt, was dann aber wohl freigegeben wurde. So genau weiß ich das nicht. Die Nodes jedenfalls sind mit Adaptern des iobrokers zu vergleichen - ich versuche gerade selbst welche zur Anbindung an den iobroker über socket.io zu entwickeln. Die Community hierzu ist deshalb noch wesentlich größer als IOB.

      NR hat jedoch überhaupt keine brauchbare Methode, die Zustände also die Datenbank anzuzeigen und zu verwalten. Für reine NR Benutzer war zu diesem Zweck MQTT - als Broker und Datenverwalter vorgesehen. Das ist auch der Grund, warum dieses Protokoll soviele Geräte benutzen. Hierfür hast Du dann aber wieder Drittmittel gebraucht, um das vernünftig anzuzeigen. Von solchen Features wie Aliases etc. ganz zu schweigen - das sind die wirklichen Stärken des IOB.

      Mein Ziel war es ja außerdem, quasi Hilfe zur Selbsthilfe zu vermitteln. Dir nicht einfach nur den Flow zur Verfügung zu stellen, sondern auch herzuleiten, wie ich/man so eine Lösung entwickeln kann. Dazu darf man oft nicht den Blick auf das Ganze verlieren. Das ist manchmal schwierig - aber mir macht es auch manchmal Spaß zu erkennen, was man selbst für ein Brett vor dem Kopf hat. 😉

      Beispiel: Du warst mit der Tail-Node, wie ich beschrieb schon auf dem richtigen Weg. Dieser Thread zeigt so eine Entwicklung in meinen Augen hervorragend. Dann hast Du Dich geärgert, dass die Tail-Node immer nur die letzte Zeile ausspuckt. Anstelle darüber nachzudenken, warum es vielleicht sinnvoll sein könnte nur 1 Zeile auszugeben, war nun Dein nächster Schritt eine Lösung zu suchen, mehrere Zeilen aus einem Log auszulesen, anstelle diese Zeilen eben in NR zu einem größeren Ganzen zu entwickeln. Dabei entlastet Dich NR ja gerade wegen der "Kleinheit" der Information. Einen größeren Informationsblock muss man mit Schleifen zerhacken, um letztlich eine Zeile in seine Bedeutungsbestandteile zu zerlegen und das wurde Dir abgenommen. NR ist ein Flow Tool - ich stelle mir immer vor, ich wäre eine payload und müsste mich durch die Nodes bewegen. Wenn ich also die letzte Zeile eines Logs wäre, dann wäre mein Ziel ja - nach der Aufgabenstellung - mal irgendwo in einer Tabelle als Klartext aufzutauchen - neben Geschwistern. Das sich für eine Ausgabe von Events ein Array anbietet durch das man einfach "durchiterieren" also durchzählen kann, hätte Dich vielleicht darauf gebracht, das Große zu sehen und hättest Dich nicht so sehr auf 50 Zeilen LOG lesen konzentriert.

      Ich hoffe es ist OK, wenn ich das mal so ausführlich schreibe. 😉

      Noch ein Wort zu den regulären Ausdrücken. Ich habe diese kryptischen Dinge gehasst, wie die Pest und bin da heute noch manchmal am fluchen. Deswegen habe ich Dir die Seite gepostet, die mir ungemein hilft.

      Trotzdem hier mal ein kleines Tutorial:

      Ich werde es nochmals am iobroker Log versuchen zu verdeutlichen, damit Du es auf die anderen Logs anwenden kannst.
      Dann drückst Du als erstes Mal den "New" button.

      Am Anfang muss man sich etwas auf der Seite zu Recht finden:

      1. Mit New - machst Du erstmal alles "clean" auf der Seite.

      2. Das zeigt schon aufgeklappt die Zeichenklassen.

      3. Ich habe mal als Beispiel \d für eine Zahl ausgewählt. Das heißt der regEx Ausdruck matched wenn er eine Zahl finden. Hier im Thread haben die Kollegen [0-9] genommen, das ist das Gleiche wie \d. Im Prinzip ist alles was Du in eckige Klammern packst, maßgebend für 1 Match. Wenn Du also [123] oder [1-3] gibst, dann muss der String oder die Zeichenfolge eben eine 1,2 oder 3 enthalten damit das matched. Man kann auch beliebiges kombinieren [123abc], dann gäbe es einen Match bei 1,2,3 oder a,b,c und zwar nicht als 1 Wort, sondern als 1 Zeichen als Auswahl aus dem was in den Klammern steht.

      4. Anhand des Beispielstrings siehst Du dann wie oft \d matched. Also dort 11 mal. Eine Regel für Dich muss später sein, dass ein Ausdruck genau EINMAL matched - nur so bekommst Du Eindeutigkeit.
        5 und 6. Dann sind noch die Quantifiers wichtig. Ein Punkt '.', wie zu Beginn vorgegeben steht für ein beliebiges Zeichen. Egal ob sichtbar oder nicht, ob Zahl Buchstabe etc. Wenn man New gedrückt hat, sieht man dass jedes der 4 Zeichen (da ja beliebiges Zeichen) matched. Also steht rechts (4 matches). Ausserdem siehst Du um jedes Muster, das matched ein blaues Quadrat. Der Quantifier gibt an wie oft man das vorhergehende Zeichen wiederholen muss, damit ein match erfolgt.
        screen.png

      5. Wenn Du also in dem RegEx nach dem Punkt einen * schreibst, was soviel bedeutet, dass das beliebige Zeichen - beliebig oft auftreten darf zu einem Match, dann siehst Du in

      6. das nun nicht mehr jeder einzelne Buchstabe mit einem blauen Quadrat umrandet ist, sondern das ganze Wort.

      7. Allerdings ist das nicht zu verwenden, da dieser regEx Ausdruck auf alles zutrifft und somit sinnlos ist - deswegen gibt es rechts die Warnung.

      screen2.png

      1. Um es spezifisch zu machen - kann man nun sagen es soll matchen wenn in der Zeichenfolge ein T gefolgt von beliebig vielen Zeichen folgt.
        e0c496dc-61aa-44e7-936a-f59230525aa1-image.png

      Du siehst 1 Match - was in der Regel das Ziel ist.

      1. Wenn man nur auf die Existenz von einem Zeichen oder einer bestimmten Zeichenfolge aus ist, dann ist es egal wie oft es matched ansonsten aber immer schauen dass es einmal matched.
        58078761-a69d-417f-a312-ec4dbc33ff7a-image.png

      2. So nun zu Deinen anderen Logdateien. Ich demonstriere es nochmal am iobroker Log.
        Kopiere einfach eine Zeile in das Textfeld - nachdem Du "New" gedrückt hast.
        screen.png

      Du siehst mit dem '.' alleine hast Du 134 matches und dann klicke unten auf Details. Ich kopiere jetzt die regEX da rein, die ich in den Change Nodes verwendet habe. Alles was in runden Klammern steht bildet Gruppen die Du von links nach rechts mit $1, $2, $3 referenzieren kannst.

      Wenn Du also folgenden Ausdruck oben reinkopierst, dann erhältst Du folgende Ausgabe im Detailfenster:

      (\d{4}-\d{2}-\d{2}\s\d{2}\:\d{2}:\d{2}).*\[\d\dm(\w{4}\w?).*39m:\s(.*)
      

      d48f43ee-e7d6-4ca4-8c0d-3cb42fc5f1f4-image.png

      1 Match für die Eindeutigkeit und dann siehst Du wie ich aus einer Logzeile über die Gruppe 1 = $1, den Zeitstempel, die Gruppe 2 die Severty und mit der Gruppe 3 den Rest aus der Zeile analysiere.

      So ich hoffe diese kleine Tutorial nimmt Dir bisschen die Angst vor regulären Ausdrücken und hilft Dir Deine übrigen Logdateien zu analysieren.

      T Offline
      T Offline
      tomily
      wrote on last edited by
      #62

      @mickym
      Lieber mickym.

      Erst mal sorry für die späte Antwort. Ich betreibe das als Hobby und komme nicht immer sofort zum antworten und testen.
      Ein ganz arg fettes DANKE für deine Rückmeldung. Das ist ja schon eine richtige Dokumentation.

      Danke für deine Zeit und den Input. Ich habe erst mal einige Dinge zum testen und umsetzen.
      Sicherlich kommen irgendwann noch ein paar Rückfragen, möchte mich zum lernen aber erst mal durchbeißen und schauen wie weit ich komme :=)

      Nochmals: DANKE!

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      Support us

      ioBroker
      Community Adapters
      Donate

      457

      Online

      32.4k

      Users

      81.4k

      Topics

      1.3m

      Posts
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      ioBroker Community 2014-2025
      logo
      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Recent
      • Tags
      • Unread 0
      • Categories
      • Unreplied
      • Popular
      • GitHub
      • Docu
      • Hilfe