Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  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.7k

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

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

Journal-Log erstellen

Scheduled Pinned Locked Moved Node-Red
62 Posts 5 Posters 4.2k 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

    @liv-in-sky
    Bisher gibt es das LOG so noch nicht. Ich werde das durch andere Scripte erstellen und befüllen lassen.
    Somit sind noch alle Wege offen. Das Testlog habe ich mit vi einfach selbst untereinander geschrieben.

    Denkbar und Sinnvoll wäre es, dass ich jede neue Zeile mit Datum, Uhrzeit + ": " Doppelpunkt am Ende beginne. Also z.B.

    08.02.21 - 14:31: Zeile 1
    08.02.21 - 14:31: Zeile 2
    08.02.21 - 14:32: Bla
    08.02.21 - 14:34: Bla bla

    Wäre das zum parsen Sinnvoll?

    HomoranH Do not disturb
    HomoranH Do not disturb
    Homoran
    Global Moderator Administrators
    wrote on last edited by
    #37

    @tomily sagte in Journal-Log erstellen:

    08.02.21 - 14:31: Zeile 1
    08.02.21 - 14:31: Zeile 2
    08.02.21 - 14:32: Bla
    08.02.21 - 14:34: Bla bla

    Wäre das zum parsen Sinnvoll?

    dann wäre da einfach ein Zeilenende? oder was sehe ich da nicht?
    oder willst du nur den Text und nicht den Timestamp haben?

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    T 1 Reply Last reply
    0
    • HomoranH Homoran

      @tomily sagte in Journal-Log erstellen:

      08.02.21 - 14:31: Zeile 1
      08.02.21 - 14:31: Zeile 2
      08.02.21 - 14:32: Bla
      08.02.21 - 14:34: Bla bla

      Wäre das zum parsen Sinnvoll?

      dann wäre da einfach ein Zeilenende? oder was sehe ich da nicht?
      oder willst du nur den Text und nicht den Timestamp haben?

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

      @homoran
      Schön wäre es, wenn einfach exakt der Inhalt der LogDatei im Dashbaord erscheint. Und zwar Zeile für Zeile, statt hintereinander.

      Wenn es zum Formatieren einfacher ist, würde ich das Datum/Uhrzeit zusätzlich in die LogDatei in jede Zeile schreiben lassen, um den Zeilenanfang erkennen zu können.

      HomoranH 1 Reply Last reply
      0
      • T tomily

        @homoran
        Schön wäre es, wenn einfach exakt der Inhalt der LogDatei im Dashbaord erscheint. Und zwar Zeile für Zeile, statt hintereinander.

        Wenn es zum Formatieren einfacher ist, würde ich das Datum/Uhrzeit zusätzlich in die LogDatei in jede Zeile schreiben lassen, um den Zeilenanfang erkennen zu können.

        HomoranH Do not disturb
        HomoranH Do not disturb
        Homoran
        Global Moderator Administrators
        wrote on last edited by
        #39

        @tomily
        @liv-in-sky

        Wenn jeder eintrag mit einem Zeilenumbruch endet, geht das zumindest theoretisch einfach
        logdatei.png

        Das RegEx wäre ([^\n]+)
        und dann wieder +das Umbruchzeichen <br> ode /n aneinanderreihen

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        liv-in-skyL 1 Reply Last reply
        0
        • HomoranH Homoran

          @tomily
          @liv-in-sky

          Wenn jeder eintrag mit einem Zeilenumbruch endet, geht das zumindest theoretisch einfach
          logdatei.png

          Das RegEx wäre ([^\n]+)
          und dann wieder +das Umbruchzeichen <br> ode /n aneinanderreihen

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          wrote on last edited by liv-in-sky
          #40

          @homoran

          @Homoran gibt es dafür eine bessere schreibweise - damit kann ich ein </br> am anfang einfügen und bekomme das im html angezeigt

          ([0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9] [0-9][0-9]\:[0-9][0-9]\:[0-9][0-9]\.[0-9][0-9][0-9]).*?
          

          Image 11.png

          Image 10.png

          Image 12.png

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          HomoranH 1 Reply Last reply
          0
          • liv-in-skyL liv-in-sky

            @homoran

            @Homoran gibt es dafür eine bessere schreibweise - damit kann ich ein </br> am anfang einfügen und bekomme das im html angezeigt

            ([0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9] [0-9][0-9]\:[0-9][0-9]\:[0-9][0-9]\.[0-9][0-9][0-9]).*?
            

            Image 11.png

            Image 10.png

            Image 12.png

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by
            #41

            @liv-in-sky sagte in Journal-Log erstellen:

            gibt es dafür eine bessere schreibweise

            hast du mein Regex nicht gesehen?
            eine Gruppe (), darin beliebig viele alles außer \n = [^\n]+

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            liv-in-skyL 1 Reply Last reply
            0
            • HomoranH Homoran

              @liv-in-sky sagte in Journal-Log erstellen:

              gibt es dafür eine bessere schreibweise

              hast du mein Regex nicht gesehen?
              eine Gruppe (), darin beliebig viele alles außer \n = [^\n]+

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              wrote on last edited by liv-in-sky
              #42

              @homoran

              jetzt schon :-)

              bin mir nicht sicher, ob es \n enthält - teste ich mal

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              HomoranH 1 Reply Last reply
              0
              • liv-in-skyL liv-in-sky

                @homoran

                jetzt schon :-)

                bin mir nicht sicher, ob es \n enthält - teste ich mal

                HomoranH Do not disturb
                HomoranH Do not disturb
                Homoran
                Global Moderator Administrators
                wrote on last edited by Homoran
                #43

                @liv-in-sky sagte in Journal-Log erstellen:

                bin mir nicht sicher, ob es \n enthält

                hat es - siehe Screenshot

                wenn nicht, bräuchte ich mal eine echte logdatei von @tomily

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                liv-in-skyL 1 Reply Last reply
                0
                • HomoranH Homoran

                  @liv-in-sky sagte in Journal-Log erstellen:

                  bin mir nicht sicher, ob es \n enthält

                  hat es - siehe Screenshot

                  wenn nicht, bräuchte ich mal eine echte logdatei von @tomily

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  wrote on last edited by
                  #44

                  @homoran

                  die haben wir ja noch nicht - muss er erst erstellen oder umbauen - auf jeden fall wissen wir, wie es funktionieren soll

                  ich arbeite ja damit - mit dem logfile von iobroker - das ist aber nur der test - das sind \r und \n drin - linux halt

                  2021-02-08 13:59:54.536  - error: node-red.0 (1794) 8 Feb 13:59:54 - [error] [change:b0f28e3c.41e57] Ungültiges 'from' Merkmal: Invalid regular expression: / [/: Unterminated character class
                  
                  2021-02-08 14:00:12.159  - error: node-red.0 (1794) 8 Feb 14:00:12 - [error] [change:b0f28e3c.41e57] Ungültiges 'from' Merkmal: Invalid regular expression: / [/: Unterminated character class
                  
                  2021-02-08 14:05:02.428  - info: javascript.0 (1123) Stop script script.js.Armin_Schalter.AAAtail
                  2021-02-08 14:05:02.736  - info: javascript.0 (1123) Start javascript script.js.Armin_Schalter.AAAtail
                  
                  2021-02-08 14:05:39.151  - error: node-red.0 (13376) install: [""]
                  2021-02-08 14:05:44.482  - warn: node-red.0 (13376) 8 Feb 14:05:44 - [warn] Projekte inaktiviert: editorTheme.projects.enabled=false
                  

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  HomoranH 1 Reply Last reply
                  0
                  • liv-in-skyL liv-in-sky

                    @homoran

                    die haben wir ja noch nicht - muss er erst erstellen oder umbauen - auf jeden fall wissen wir, wie es funktionieren soll

                    ich arbeite ja damit - mit dem logfile von iobroker - das ist aber nur der test - das sind \r und \n drin - linux halt

                    2021-02-08 13:59:54.536  - error: node-red.0 (1794) 8 Feb 13:59:54 - [error] [change:b0f28e3c.41e57] Ungültiges 'from' Merkmal: Invalid regular expression: / [/: Unterminated character class
                    
                    2021-02-08 14:00:12.159  - error: node-red.0 (1794) 8 Feb 14:00:12 - [error] [change:b0f28e3c.41e57] Ungültiges 'from' Merkmal: Invalid regular expression: / [/: Unterminated character class
                    
                    2021-02-08 14:05:02.428  - info: javascript.0 (1123) Stop script script.js.Armin_Schalter.AAAtail
                    2021-02-08 14:05:02.736  - info: javascript.0 (1123) Start javascript script.js.Armin_Schalter.AAAtail
                    
                    2021-02-08 14:05:39.151  - error: node-red.0 (13376) install: [""]
                    2021-02-08 14:05:44.482  - warn: node-red.0 (13376) 8 Feb 14:05:44 - [warn] Projekte inaktiviert: editorTheme.projects.enabled=false
                    

                    HomoranH Do not disturb
                    HomoranH Do not disturb
                    Homoran
                    Global Moderator Administrators
                    wrote on last edited by
                    #45

                    @liv-in-sky sagte in Journal-Log erstellen:

                    die haben wir ja noch nicht - muss er erst erstellen oder umbauen

                    @tomily
                    kannst du uns bitte mal eine Datei zur Verfügung stellen, die du auswerten willst

                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    liv-in-skyL 1 Reply Last reply
                    0
                    • HomoranH Homoran

                      @liv-in-sky sagte in Journal-Log erstellen:

                      die haben wir ja noch nicht - muss er erst erstellen oder umbauen

                      @tomily
                      kannst du uns bitte mal eine Datei zur Verfügung stellen, die du auswerten willst

                      liv-in-skyL Offline
                      liv-in-skyL Offline
                      liv-in-sky
                      wrote on last edited by
                      #46

                      @homoran danke dir

                      habe es jetzt für mein beispiel so gelöst

                      (.*?)(?<!\r)\n
                      

                      genug getestet - muss jetzt wieder an anderem script "wurschteln" - das nervt schon seit tagen

                      Image 13.png

                      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                      1 Reply Last reply
                      1
                      • HomoranH Homoran

                        @liv-in-sky sagte in Journal-Log erstellen:

                        zur not hilft uns vielleicht der regex meister ( @Homoran )

                        und irgendwann bringst du mir noch das parsen in js (Blockly) bei.
                        dann kann ich auch mit wget Daten holen

                        liv-in-skyL Offline
                        liv-in-skyL Offline
                        liv-in-sky
                        wrote on last edited by liv-in-sky
                        #47

                        @homoran sagte in Journal-Log erstellen:

                        und irgendwann bringst du mir noch das parsen in js (Blockly) bei.
                        dann kann ich auch mit wget Daten holen

                        vielleicht magst du dich damit spielen - braucht minimal javascript - kann aber mehrere reg-auflöungen hintereinander machen - du mußt dafür nur die array's richtig (myFilterRegexEvent5,myFilterRegexEvent6) füllen

                        Image 14.png

                        orange: regex ausdruck - was wird gesucht
                        grün: mit was wird es ersetzt

                        da diese variablke ein array ist, kannst du ein komma setzen und in beiden arrays einfach ein zweites regex einsetzen - das wird dann anschliessend ausgeführt

                        ein beispiel aus meinem ical script (zuerst wird nach Biathlon... gesucht und ersetzt (mit Bia) und anschliessend nach SACK und ersetzt (mit Tonne):

                          let myFilterRegexEvent5=[/Biathlon(: .*)/,/(GELBE)R SACK/];                        // Regex für EventAnzeige: event=event.replace(myFilterRegexEvent,myFilterRegexEvent2)
                          let myFilterRegexEvent6=["Biat$1","$1 Tonne"];  
                        

                        myFilterRegexEvent5 und myFilterRegexEvent6 müssen immer gleich viele einträge haben - sonst mag das script nix ausfühen

                        <xml xmlns="https://developers.google.com/blockly/xml">
                         <variables>
                           <variable id="y-|J0d(aR`$MnV$s%a1l">val0</variable>
                           <variable id="tHZ5N|7tx.:_t~bL$-X,">result</variable>
                         </variables>
                         <block type="exec" id="pVw*=SO,Qv)T=Z3WsR+o" x="162" y="212">
                           <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                           <field name="WITH_STATEMENT">TRUE</field>
                           <field name="LOG"></field>
                           <value name="COMMAND">
                             <shadow type="text" id="~(8H1A)J70YzQZ)mS1VL">
                               <field name="TEXT">tail -n 10 /opt/iobroker/log/iobroker.current.log</field>
                             </shadow>
                           </value>
                           <statement name="STATEMENT">
                             <block type="debug" id="tEH3%[uQpaLwhAr(pux6">
                               <field name="Severity">log</field>
                               <value name="TEXT">
                                 <shadow type="text" id="L155Yy0phV@yz(uu84WI">
                                   <field name="TEXT">test</field>
                                 </shadow>
                                 <block type="variables_get" id="iC=px]qekkTJ;rBvty~e">
                                   <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="variables_set" id="%eq_T!.3]_F()B#nlEqO">
                                   <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                   <value name="VALUE">
                                     <block type="procedures_callcustomreturn" id="@klX@R2]ZG)nM1JHh6|Y">
                                       <mutation name="regex-schleife">
                                         <arg name="val0"></arg>
                                       </mutation>
                                       <value name="ARG0">
                                         <block type="variables_get" id="gI3(os?-yIJlXxVr-#4H">
                                           <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="debug" id="|dD!fZ(Zm*(9!Uo]QigF">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text">
                                           <field name="TEXT">test</field>
                                         </shadow>
                                         <block type="variables_get" id="M@Lxxz.*YLgf]KOaOdE9">
                                           <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="control" id="v(kx8Kic0u3Ng#yXxQ2b">
                                           <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                           <field name="OID">0_userdata.0.TestTail</field>
                                           <field name="WITH_DELAY">FALSE</field>
                                           <value name="VALUE">
                                             <block type="variables_get" id="#K@),KPbR8T4#?m-^O1(">
                                               <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                             </block>
                                           </value>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </statement>
                         </block>
                         <block type="procedures_defcustomreturn" id="p~-buWNdttPkl!wwvsKR" x="663" y="362">
                           <mutation statements="false">
                             <arg name="val0" varid="y-|J0d(aR`$MnV$s%a1l"></arg>
                           </mutation>
                           <field name="NAME">regex-schleife</field>
                           <field name="SCRIPT">ICBsZXQgbXlGaWx0ZXJSZWdleEV2ZW50NT1bLyhbMC05XVswLTldWzAtOV1bMC05XVwtWzAtOV1bMC05XVwtWzAtOV1bMC05XSBbMC05XVswLTldXDpbMC05XVswLTldXDpbMC05XVswLTldXC5bMC05XVswLTldWzAtOV0pLio/L2dtXTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdleCBmw7xyIEV2ZW50QW56ZWlnZTogZXZlbnQ9ZXZlbnQucmVwbGFjZShteUZpbHRlclJlZ2V4RXZlbnQsbXlGaWx0ZXJSZWdleEV2ZW50MikNCiAgbGV0IG15RmlsdGVyUmVnZXhFdmVudDY9WyI8L2JyPiQxIl07ICAgICAgIA0KDQoNCiAgaWYgKG15RmlsdGVyUmVnZXhFdmVudDUubGVuZ3RoPT1teUZpbHRlclJlZ2V4RXZlbnQ2Lmxlbmd0aCl7DQogICAgICAgIGZvcihsZXQgej0wO3o8bXlGaWx0ZXJSZWdleEV2ZW50NS5sZW5ndGg7eisrKXt2YWwwPXZhbDAucmVwbGFjZShteUZpbHRlclJlZ2V4RXZlbnQ1W3pdLG15RmlsdGVyUmVnZXhFdmVudDZbel0pfX0NCg0KcmV0dXJuIHZhbDA7</field>
                           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                         </block>
                        </xml>
                        

                        Image 15.png

                        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                        HomoranH 2 Replies Last reply
                        1
                        • liv-in-skyL liv-in-sky

                          @homoran sagte in Journal-Log erstellen:

                          und irgendwann bringst du mir noch das parsen in js (Blockly) bei.
                          dann kann ich auch mit wget Daten holen

                          vielleicht magst du dich damit spielen - braucht minimal javascript - kann aber mehrere reg-auflöungen hintereinander machen - du mußt dafür nur die array's richtig (myFilterRegexEvent5,myFilterRegexEvent6) füllen

                          Image 14.png

                          orange: regex ausdruck - was wird gesucht
                          grün: mit was wird es ersetzt

                          da diese variablke ein array ist, kannst du ein komma setzen und in beiden arrays einfach ein zweites regex einsetzen - das wird dann anschliessend ausgeführt

                          ein beispiel aus meinem ical script (zuerst wird nach Biathlon... gesucht und ersetzt (mit Bia) und anschliessend nach SACK und ersetzt (mit Tonne):

                            let myFilterRegexEvent5=[/Biathlon(: .*)/,/(GELBE)R SACK/];                        // Regex für EventAnzeige: event=event.replace(myFilterRegexEvent,myFilterRegexEvent2)
                            let myFilterRegexEvent6=["Biat$1","$1 Tonne"];  
                          

                          myFilterRegexEvent5 und myFilterRegexEvent6 müssen immer gleich viele einträge haben - sonst mag das script nix ausfühen

                          <xml xmlns="https://developers.google.com/blockly/xml">
                           <variables>
                             <variable id="y-|J0d(aR`$MnV$s%a1l">val0</variable>
                             <variable id="tHZ5N|7tx.:_t~bL$-X,">result</variable>
                           </variables>
                           <block type="exec" id="pVw*=SO,Qv)T=Z3WsR+o" x="162" y="212">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                             <field name="WITH_STATEMENT">TRUE</field>
                             <field name="LOG"></field>
                             <value name="COMMAND">
                               <shadow type="text" id="~(8H1A)J70YzQZ)mS1VL">
                                 <field name="TEXT">tail -n 10 /opt/iobroker/log/iobroker.current.log</field>
                               </shadow>
                             </value>
                             <statement name="STATEMENT">
                               <block type="debug" id="tEH3%[uQpaLwhAr(pux6">
                                 <field name="Severity">log</field>
                                 <value name="TEXT">
                                   <shadow type="text" id="L155Yy0phV@yz(uu84WI">
                                     <field name="TEXT">test</field>
                                   </shadow>
                                   <block type="variables_get" id="iC=px]qekkTJ;rBvty~e">
                                     <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="variables_set" id="%eq_T!.3]_F()B#nlEqO">
                                     <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                     <value name="VALUE">
                                       <block type="procedures_callcustomreturn" id="@klX@R2]ZG)nM1JHh6|Y">
                                         <mutation name="regex-schleife">
                                           <arg name="val0"></arg>
                                         </mutation>
                                         <value name="ARG0">
                                           <block type="variables_get" id="gI3(os?-yIJlXxVr-#4H">
                                             <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="debug" id="|dD!fZ(Zm*(9!Uo]QigF">
                                         <field name="Severity">log</field>
                                         <value name="TEXT">
                                           <shadow type="text">
                                             <field name="TEXT">test</field>
                                           </shadow>
                                           <block type="variables_get" id="M@Lxxz.*YLgf]KOaOdE9">
                                             <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                           </block>
                                         </value>
                                         <next>
                                           <block type="control" id="v(kx8Kic0u3Ng#yXxQ2b">
                                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                             <field name="OID">0_userdata.0.TestTail</field>
                                             <field name="WITH_DELAY">FALSE</field>
                                             <value name="VALUE">
                                               <block type="variables_get" id="#K@),KPbR8T4#?m-^O1(">
                                                 <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                               </block>
                                             </value>
                                           </block>
                                         </next>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </statement>
                           </block>
                           <block type="procedures_defcustomreturn" id="p~-buWNdttPkl!wwvsKR" x="663" y="362">
                             <mutation statements="false">
                               <arg name="val0" varid="y-|J0d(aR`$MnV$s%a1l"></arg>
                             </mutation>
                             <field name="NAME">regex-schleife</field>
                             <field name="SCRIPT">ICBsZXQgbXlGaWx0ZXJSZWdleEV2ZW50NT1bLyhbMC05XVswLTldWzAtOV1bMC05XVwtWzAtOV1bMC05XVwtWzAtOV1bMC05XSBbMC05XVswLTldXDpbMC05XVswLTldXDpbMC05XVswLTldXC5bMC05XVswLTldWzAtOV0pLio/L2dtXTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdleCBmw7xyIEV2ZW50QW56ZWlnZTogZXZlbnQ9ZXZlbnQucmVwbGFjZShteUZpbHRlclJlZ2V4RXZlbnQsbXlGaWx0ZXJSZWdleEV2ZW50MikNCiAgbGV0IG15RmlsdGVyUmVnZXhFdmVudDY9WyI8L2JyPiQxIl07ICAgICAgIA0KDQoNCiAgaWYgKG15RmlsdGVyUmVnZXhFdmVudDUubGVuZ3RoPT1teUZpbHRlclJlZ2V4RXZlbnQ2Lmxlbmd0aCl7DQogICAgICAgIGZvcihsZXQgej0wO3o8bXlGaWx0ZXJSZWdleEV2ZW50NS5sZW5ndGg7eisrKXt2YWwwPXZhbDAucmVwbGFjZShteUZpbHRlclJlZ2V4RXZlbnQ1W3pdLG15RmlsdGVyUmVnZXhFdmVudDZbel0pfX0NCg0KcmV0dXJuIHZhbDA7</field>
                             <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                           </block>
                          </xml>
                          

                          Image 15.png

                          HomoranH Do not disturb
                          HomoranH Do not disturb
                          Homoran
                          Global Moderator Administrators
                          wrote on last edited by
                          #48

                          @liv-in-sky DANKE!
                          Das sieht schaffbar aus - muss ich mal ventilieren :grin:

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          1 Reply Last reply
                          0
                          • liv-in-skyL liv-in-sky

                            @homoran sagte in Journal-Log erstellen:

                            und irgendwann bringst du mir noch das parsen in js (Blockly) bei.
                            dann kann ich auch mit wget Daten holen

                            vielleicht magst du dich damit spielen - braucht minimal javascript - kann aber mehrere reg-auflöungen hintereinander machen - du mußt dafür nur die array's richtig (myFilterRegexEvent5,myFilterRegexEvent6) füllen

                            Image 14.png

                            orange: regex ausdruck - was wird gesucht
                            grün: mit was wird es ersetzt

                            da diese variablke ein array ist, kannst du ein komma setzen und in beiden arrays einfach ein zweites regex einsetzen - das wird dann anschliessend ausgeführt

                            ein beispiel aus meinem ical script (zuerst wird nach Biathlon... gesucht und ersetzt (mit Bia) und anschliessend nach SACK und ersetzt (mit Tonne):

                              let myFilterRegexEvent5=[/Biathlon(: .*)/,/(GELBE)R SACK/];                        // Regex für EventAnzeige: event=event.replace(myFilterRegexEvent,myFilterRegexEvent2)
                              let myFilterRegexEvent6=["Biat$1","$1 Tonne"];  
                            

                            myFilterRegexEvent5 und myFilterRegexEvent6 müssen immer gleich viele einträge haben - sonst mag das script nix ausfühen

                            <xml xmlns="https://developers.google.com/blockly/xml">
                             <variables>
                               <variable id="y-|J0d(aR`$MnV$s%a1l">val0</variable>
                               <variable id="tHZ5N|7tx.:_t~bL$-X,">result</variable>
                             </variables>
                             <block type="exec" id="pVw*=SO,Qv)T=Z3WsR+o" x="162" y="212">
                               <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                               <field name="WITH_STATEMENT">TRUE</field>
                               <field name="LOG"></field>
                               <value name="COMMAND">
                                 <shadow type="text" id="~(8H1A)J70YzQZ)mS1VL">
                                   <field name="TEXT">tail -n 10 /opt/iobroker/log/iobroker.current.log</field>
                                 </shadow>
                               </value>
                               <statement name="STATEMENT">
                                 <block type="debug" id="tEH3%[uQpaLwhAr(pux6">
                                   <field name="Severity">log</field>
                                   <value name="TEXT">
                                     <shadow type="text" id="L155Yy0phV@yz(uu84WI">
                                       <field name="TEXT">test</field>
                                     </shadow>
                                     <block type="variables_get" id="iC=px]qekkTJ;rBvty~e">
                                       <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="variables_set" id="%eq_T!.3]_F()B#nlEqO">
                                       <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                       <value name="VALUE">
                                         <block type="procedures_callcustomreturn" id="@klX@R2]ZG)nM1JHh6|Y">
                                           <mutation name="regex-schleife">
                                             <arg name="val0"></arg>
                                           </mutation>
                                           <value name="ARG0">
                                             <block type="variables_get" id="gI3(os?-yIJlXxVr-#4H">
                                               <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="debug" id="|dD!fZ(Zm*(9!Uo]QigF">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="variables_get" id="M@Lxxz.*YLgf]KOaOdE9">
                                               <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="control" id="v(kx8Kic0u3Ng#yXxQ2b">
                                               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                               <field name="OID">0_userdata.0.TestTail</field>
                                               <field name="WITH_DELAY">FALSE</field>
                                               <value name="VALUE">
                                                 <block type="variables_get" id="#K@),KPbR8T4#?m-^O1(">
                                                   <field name="VAR" id="tHZ5N|7tx.:_t~bL$-X,">result</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </next>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                             </block>
                             <block type="procedures_defcustomreturn" id="p~-buWNdttPkl!wwvsKR" x="663" y="362">
                               <mutation statements="false">
                                 <arg name="val0" varid="y-|J0d(aR`$MnV$s%a1l"></arg>
                               </mutation>
                               <field name="NAME">regex-schleife</field>
                               <field name="SCRIPT">ICBsZXQgbXlGaWx0ZXJSZWdleEV2ZW50NT1bLyhbMC05XVswLTldWzAtOV1bMC05XVwtWzAtOV1bMC05XVwtWzAtOV1bMC05XSBbMC05XVswLTldXDpbMC05XVswLTldXDpbMC05XVswLTldXC5bMC05XVswLTldWzAtOV0pLio/L2dtXTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWdleCBmw7xyIEV2ZW50QW56ZWlnZTogZXZlbnQ9ZXZlbnQucmVwbGFjZShteUZpbHRlclJlZ2V4RXZlbnQsbXlGaWx0ZXJSZWdleEV2ZW50MikNCiAgbGV0IG15RmlsdGVyUmVnZXhFdmVudDY9WyI8L2JyPiQxIl07ICAgICAgIA0KDQoNCiAgaWYgKG15RmlsdGVyUmVnZXhFdmVudDUubGVuZ3RoPT1teUZpbHRlclJlZ2V4RXZlbnQ2Lmxlbmd0aCl7DQogICAgICAgIGZvcihsZXQgej0wO3o8bXlGaWx0ZXJSZWdleEV2ZW50NS5sZW5ndGg7eisrKXt2YWwwPXZhbDAucmVwbGFjZShteUZpbHRlclJlZ2V4RXZlbnQ1W3pdLG15RmlsdGVyUmVnZXhFdmVudDZbel0pfX0NCg0KcmV0dXJuIHZhbDA7</field>
                               <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                             </block>
                            </xml>
                            

                            Image 15.png

                            HomoranH Do not disturb
                            HomoranH Do not disturb
                            Homoran
                            Global Moderator Administrators
                            wrote on last edited by
                            #49

                            @liv-in-sky Aber wenn ich gar nichts ersetzen (replace) will, sondern nur den Wert anzeigen/in eine Variable schreiben will??

                            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            liv-in-skyL 1 Reply Last reply
                            0
                            • HomoranH Homoran

                              @liv-in-sky Aber wenn ich gar nichts ersetzen (replace) will, sondern nur den Wert anzeigen/in eine Variable schreiben will??

                              liv-in-skyL Offline
                              liv-in-skyL Offline
                              liv-in-sky
                              wrote on last edited by liv-in-sky
                              #50

                              @homoran

                              mit klammer suchen und ersetzen mit $1 - müßte funktionieren

                              oder check ich was nicht

                              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                              HomoranH 1 Reply Last reply
                              0
                              • liv-in-skyL liv-in-sky

                                @homoran

                                mit klammer suchen und ersetzen mit $1 - müßte funktionieren

                                oder check ich was nicht

                                HomoranH Do not disturb
                                HomoranH Do not disturb
                                Homoran
                                Global Moderator Administrators
                                wrote on last edited by
                                #51

                                @liv-in-sky sagte in Journal-Log erstellen:

                                oder check ich was nicht

                                du schon :joy:

                                ich jetzt auch

                                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                1 Reply Last reply
                                0
                                • T tomily

                                  Hallo zusammen,

                                  ich oute mich mal wieder als NodeRed-Beginner und hoffe, dass meine Anfrage korrekt plaziert ist :-)
                                  Ich nutze Node-Red samt Dashboard um einige Funktionen u.A. mein Monitoring abzudecken. Das funktioniert tadellos.

                                  Mein Ziel ist es, im Dashboard eine Art "Journal" bzw. "LOG/History" zu erstellen. Ich möchte mir die letzten Schaltvorgänge und aktivitäten aus anderen Logs anzeigen lassen.

                                  Es würde mir reichen, wenn ich alles im Linux in eine Log-Datei schreibe und mir im Dashboard die letzten 50 Zeilen Dieser Datei anzeigen lasse.

                                  Mit dem Tail-Node funktioniet das an sich, alledings immer nur mit der letzten Zeile:
                                  9512f50a-dd9a-4a48-ab99-15807ddd12e1-grafik.png

                                  c94711d4-d1e8-4bd2-9efd-6da0ee456533-grafik.png

                                  Hat jemand eine Idee, wie ich entweder einen tail - 50 /pfad-zur.log ausgeben kann. Oder gibt es bessere Ansätze, um eine neue Textzeile einem Bestehenden Text-Node hinzuzufügen?

                                  Freue mich auf eure Rückmeldungen.

                                  Grüße
                                  Tomily

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

                                  @tomilyIch misch mich mal wieder ein.

                                  Um eine eigene Logdatei zu schreiben bzw. anzuzeigen willst musst Du Dir ja ne Struktur aufbauen. Ich empfehle Dir ein Array mit Objekten gleichen Aufbaus - wie Datum, Ereignis usw.

                                  Eingabe:

                                  Die Log Dateien kannst Du mit Standard Nodes (wie file in) einlesen. Damit bekommst Du schon mal für jede Zeile eine Nachricht.
                                  Die Aufteilung einer Zeile kannst Du dann wie @Homoran schreibt mit regulären Ausdrücken machen.

                                  Das geht auch mit regulären Ausdrücken in NodeRed ohne irgendwelche Funktionen nutzen zu müssen. Du kannst auch mit Gruppen ($1 und $2 ...) arbeiten und diese dann weiterverarbeiten. Damit kannst Du direkt neue Nachrichten erzeugen so habe ich das hier gemacht:

                                  Damit kannst Du dann zum Beispiel schon mal ausfiltern welche Zeit Du haben willst.

                                  Wie die Mitstreiter habe ich als Beispiel auch mal die iobroker log genommen und mit der file in eingelesen.

                                  somit bekommst Du für jede Zeile eine Nachricht - die leeren Zeilen wurden herausgefiltert.

                                  Wie Du siehst funktioniert das soweit ganz gut.

                                  ebd0590e-21f8-4ad0-aea7-e00bb0570452-image.png

                                  Zur Analyse der Logdateien bietet sich die Gruppenfunktion mit regulären Ausdrücken an, die NodeRed mit Hausmitteln bereits unterstützt.

                                  Das siehst Du an diesem Change Node:

                                  Ich sichere hier die Zeile / payload in 2 Zwischenobjekte und analysiere das Datum und das Ereignis aus und speichere es in einem eigenen Objekt, damit ich die payload dann löschen kann und als Objekt neu aufbauen kann:

                                  c039d155-d574-4427-93d7-ee1a45cb399e-image.png

                                  Als Ergebnis erhälst Du dann ein wundeschönes Payload Objekt mit den Eigenschaften Date und Event die Du dann im weiteren Verlauf analysieren kannst.

                                  7a13d8ed-edd7-4cfc-a9ff-6c5b53e7bc74-image.png

                                  Nun empfehle ich Dir solche Objekte in einem Array mit der gleichen Struktur als Flow Variable anzulegen.

                                  und verarbeiten ... (Teil 2 folgt!)

                                  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.

                                  mickymM 1 Reply Last reply
                                  0
                                  • mickymM mickym

                                    @tomilyIch misch mich mal wieder ein.

                                    Um eine eigene Logdatei zu schreiben bzw. anzuzeigen willst musst Du Dir ja ne Struktur aufbauen. Ich empfehle Dir ein Array mit Objekten gleichen Aufbaus - wie Datum, Ereignis usw.

                                    Eingabe:

                                    Die Log Dateien kannst Du mit Standard Nodes (wie file in) einlesen. Damit bekommst Du schon mal für jede Zeile eine Nachricht.
                                    Die Aufteilung einer Zeile kannst Du dann wie @Homoran schreibt mit regulären Ausdrücken machen.

                                    Das geht auch mit regulären Ausdrücken in NodeRed ohne irgendwelche Funktionen nutzen zu müssen. Du kannst auch mit Gruppen ($1 und $2 ...) arbeiten und diese dann weiterverarbeiten. Damit kannst Du direkt neue Nachrichten erzeugen so habe ich das hier gemacht:

                                    Damit kannst Du dann zum Beispiel schon mal ausfiltern welche Zeit Du haben willst.

                                    Wie die Mitstreiter habe ich als Beispiel auch mal die iobroker log genommen und mit der file in eingelesen.

                                    somit bekommst Du für jede Zeile eine Nachricht - die leeren Zeilen wurden herausgefiltert.

                                    Wie Du siehst funktioniert das soweit ganz gut.

                                    ebd0590e-21f8-4ad0-aea7-e00bb0570452-image.png

                                    Zur Analyse der Logdateien bietet sich die Gruppenfunktion mit regulären Ausdrücken an, die NodeRed mit Hausmitteln bereits unterstützt.

                                    Das siehst Du an diesem Change Node:

                                    Ich sichere hier die Zeile / payload in 2 Zwischenobjekte und analysiere das Datum und das Ereignis aus und speichere es in einem eigenen Objekt, damit ich die payload dann löschen kann und als Objekt neu aufbauen kann:

                                    c039d155-d574-4427-93d7-ee1a45cb399e-image.png

                                    Als Ergebnis erhälst Du dann ein wundeschönes Payload Objekt mit den Eigenschaften Date und Event die Du dann im weiteren Verlauf analysieren kannst.

                                    7a13d8ed-edd7-4cfc-a9ff-6c5b53e7bc74-image.png

                                    Nun empfehle ich Dir solche Objekte in einem Array mit der gleichen Struktur als Flow Variable anzulegen.

                                    und verarbeiten ... (Teil 2 folgt!)

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

                                    So mit dem Teil2 kommen wir also zur Verarbeitung - nachdem Du nun events und Datum hast - kannst Du einzelne Nachrichten wegschmeissen herausfilter usw.

                                    Nach der Verarbeitung (der einzelnen Events) - schmeißen wir alle wieder zusammen in ein Array. Das macht die JOIN Node.

                                    Man kann ihr entweder über einen trigger mitteilen wann das Array fertig ist (msg.complete = true) - ich habe hier der Einfachheit mal ein Zeitlimit eingegeben - da mein Log in der Regel selbst wenn es groß ist, in 10 Minuten eingelesen ist.

                                    Wir haben also nur noch eine Nachricht - die alle Events in einem Array in einer Payload enthält.

                                    Ich hoffe Du folgst mir - ich versuche es ja mit Screenshots immer zu erklären:

                                    28a4b38e-acd7-4351-8391-2c0d89d73490-image.png

                                    So ein Array kannst Du dann auch in einer flow Variablen speichern und ggf. getriggert für weitere Untersuchungen verwenden. Das macht die 2. Change Node - die aber sonst keine Aufgabe hat - außer die Payload - das Array in einer Variablen zu speichern.

                                    Im Kontext Menü sieht das dann so aus.

                                    f9f53dd3-c17d-4fb2-a3cd-4404240ae842-image.png

                                    Die Ausgabe erfolgt im 3. Teil.

                                    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.

                                    mickymM 1 Reply Last reply
                                    0
                                    • mickymM mickym

                                      So mit dem Teil2 kommen wir also zur Verarbeitung - nachdem Du nun events und Datum hast - kannst Du einzelne Nachrichten wegschmeissen herausfilter usw.

                                      Nach der Verarbeitung (der einzelnen Events) - schmeißen wir alle wieder zusammen in ein Array. Das macht die JOIN Node.

                                      Man kann ihr entweder über einen trigger mitteilen wann das Array fertig ist (msg.complete = true) - ich habe hier der Einfachheit mal ein Zeitlimit eingegeben - da mein Log in der Regel selbst wenn es groß ist, in 10 Minuten eingelesen ist.

                                      Wir haben also nur noch eine Nachricht - die alle Events in einem Array in einer Payload enthält.

                                      Ich hoffe Du folgst mir - ich versuche es ja mit Screenshots immer zu erklären:

                                      28a4b38e-acd7-4351-8391-2c0d89d73490-image.png

                                      So ein Array kannst Du dann auch in einer flow Variablen speichern und ggf. getriggert für weitere Untersuchungen verwenden. Das macht die 2. Change Node - die aber sonst keine Aufgabe hat - außer die Payload - das Array in einer Variablen zu speichern.

                                      Im Kontext Menü sieht das dann so aus.

                                      f9f53dd3-c17d-4fb2-a3cd-4404240ae842-image.png

                                      Die Ausgabe erfolgt im 3. Teil.

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

                                      So nun zur Ausgabe (Teil3 )- ich bin leider kein HTML Programmierer - da gibts hier viel fittere Leute an Board und ich hab das für Dich nur mal schnell so quick & dirty hingebastelt. Du magst Dich vielleicht fragen, warum ich das Ganze in ein Array gepackt habe.

                                      Node Red hat die tolle Eigenschaft auch in dem Dashboard dass die Angular JS unterstützt wird.

                                      Wie Du hier ja selbst angemerkt hast - eignet sich hier für die Ausgabe die Template Node am Besten:

                                      Neben dem ganzen Formatierung ist das Geniale diese ng-repeat Direktive (alles verlinkt hier).

                                      Im Quelltext kannst Du nämlich mit ein paar läppischen Zeilen durch das ganze Array durchgehen.

                                      Das ist nämlich dann alles - was Du zur Ausgabe des Logs brauchst. ;)

                                      <div class="main">
                                      
                                          <table id="t01">
                                      
                                         
                                          <tr><th width=20%>Datum</th><th  width=70%>Event</th></tr>
                                           <tr ng-repeat="item in msg.payload">
                                          <td  align=left>{{item.date}}</td><td align=left>{{item.event}}</td>
                                          </tr>
                                          
                                          </table>
                                      
                                      
                                      </div>
                                      

                                      Alles ist bei mir nicht schön rausgekommen aber zur Verdeutlichung langt es - also hier nun das iobroker Log als HTML Tabelle im Node Red Dashboard:

                                      Wie gesagt - das geht alles viel schöner

                                      858b3322-173f-4aa8-b7df-14c6ca714d20-image.png

                                      Also keine Fragen zur HTML Formatierung bitte - das können hier andere an Board viel besser.

                                      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.

                                      mickymM 1 Reply Last reply
                                      0
                                      • mickymM mickym

                                        So nun zur Ausgabe (Teil3 )- ich bin leider kein HTML Programmierer - da gibts hier viel fittere Leute an Board und ich hab das für Dich nur mal schnell so quick & dirty hingebastelt. Du magst Dich vielleicht fragen, warum ich das Ganze in ein Array gepackt habe.

                                        Node Red hat die tolle Eigenschaft auch in dem Dashboard dass die Angular JS unterstützt wird.

                                        Wie Du hier ja selbst angemerkt hast - eignet sich hier für die Ausgabe die Template Node am Besten:

                                        Neben dem ganzen Formatierung ist das Geniale diese ng-repeat Direktive (alles verlinkt hier).

                                        Im Quelltext kannst Du nämlich mit ein paar läppischen Zeilen durch das ganze Array durchgehen.

                                        Das ist nämlich dann alles - was Du zur Ausgabe des Logs brauchst. ;)

                                        <div class="main">
                                        
                                            <table id="t01">
                                        
                                           
                                            <tr><th width=20%>Datum</th><th  width=70%>Event</th></tr>
                                             <tr ng-repeat="item in msg.payload">
                                            <td  align=left>{{item.date}}</td><td align=left>{{item.event}}</td>
                                            </tr>
                                            
                                            </table>
                                        
                                        
                                        </div>
                                        

                                        Alles ist bei mir nicht schön rausgekommen aber zur Verdeutlichung langt es - also hier nun das iobroker Log als HTML Tabelle im Node Red Dashboard:

                                        Wie gesagt - das geht alles viel schöner

                                        858b3322-173f-4aa8-b7df-14c6ca714d20-image.png

                                        Also keine Fragen zur HTML Formatierung bitte - das können hier andere an Board viel besser.

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

                                        Teil4 - so wie gesagt, warum ich NodeRed liebe - das Ganze hier ist bis auf den Code der HTML Formatierung mit wenigen Nodes erledigt:

                                        4a8f8645-accf-4092-9f59-e3e893a5842e-image.png

                                        und erfordert quasi 0 Programmierung. ;) Alles mit Standard-Nodes und ohne Function-Nodes mit irgendwelchen Programmzeilen. ;)

                                        Hier der Flow zum Importieren und Spielen - die wichtigsten Dinge habe ich ja nun erklärt:

                                        [
                                            {
                                                "id": "cf77d4c3.528018",
                                                "type": "file in",
                                                "z": "6e170384.60c96c",
                                                "name": "",
                                                "filename": "/opt/iobroker/log/iobroker.current.log",
                                                "format": "lines",
                                                "chunk": false,
                                                "sendError": false,
                                                "encoding": "none",
                                                "x": 2490,
                                                "y": 1620,
                                                "wires": [
                                                    [
                                                        "514882c5.47d2fc"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "243bb718.488838",
                                                "type": "inject",
                                                "z": "6e170384.60c96c",
                                                "name": "",
                                                "props": [
                                                    {
                                                        "p": "payload"
                                                    }
                                                ],
                                                "repeat": "",
                                                "crontab": "",
                                                "once": false,
                                                "onceDelay": 0.1,
                                                "topic": "",
                                                "payload": "true",
                                                "payloadType": "bool",
                                                "x": 2250,
                                                "y": 1620,
                                                "wires": [
                                                    [
                                                        "cf77d4c3.528018"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "cffc5b65.bd9258",
                                                "type": "change",
                                                "z": "6e170384.60c96c",
                                                "name": "",
                                                "rules": [
                                                    {
                                                        "t": "set",
                                                        "p": "date",
                                                        "pt": "msg",
                                                        "to": "payload",
                                                        "tot": "msg"
                                                    },
                                                    {
                                                        "t": "set",
                                                        "p": "event",
                                                        "pt": "msg",
                                                        "to": "payload",
                                                        "tot": "msg"
                                                    },
                                                    {
                                                        "t": "change",
                                                        "p": "date",
                                                        "pt": "msg",
                                                        "from": "(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}\\:\\d{2}:\\d{2}).*39m:\\s(.*)",
                                                        "fromt": "re",
                                                        "to": "$1",
                                                        "tot": "str"
                                                    },
                                                    {
                                                        "t": "change",
                                                        "p": "event",
                                                        "pt": "msg",
                                                        "from": "(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}\\:\\d{2}:\\d{2}).*39m:\\s(.*)",
                                                        "fromt": "re",
                                                        "to": "$2",
                                                        "tot": "str"
                                                    },
                                                    {
                                                        "t": "delete",
                                                        "p": "payload",
                                                        "pt": "msg"
                                                    },
                                                    {
                                                        "t": "move",
                                                        "p": "date",
                                                        "pt": "msg",
                                                        "to": "payload.date",
                                                        "tot": "msg"
                                                    },
                                                    {
                                                        "t": "move",
                                                        "p": "event",
                                                        "pt": "msg",
                                                        "to": "payload.event",
                                                        "tot": "msg"
                                                    }
                                                ],
                                                "action": "",
                                                "property": "",
                                                "from": "",
                                                "to": "",
                                                "reg": false,
                                                "x": 2980,
                                                "y": 1620,
                                                "wires": [
                                                    [
                                                        "c002b3a.6a1af5"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "514882c5.47d2fc",
                                                "type": "switch",
                                                "z": "6e170384.60c96c",
                                                "name": "keine leeren Zeilen",
                                                "property": "payload",
                                                "propertyType": "msg",
                                                "rules": [
                                                    {
                                                        "t": "nempty"
                                                    }
                                                ],
                                                "checkall": "true",
                                                "repair": false,
                                                "outputs": 1,
                                                "x": 2770,
                                                "y": 1620,
                                                "wires": [
                                                    [
                                                        "cffc5b65.bd9258"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "cb053236.8d8cc",
                                                "type": "join",
                                                "z": "6e170384.60c96c",
                                                "name": "",
                                                "mode": "custom",
                                                "build": "array",
                                                "property": "payload",
                                                "propertyType": "msg",
                                                "key": "topic",
                                                "joiner": "\\n",
                                                "joinerType": "str",
                                                "accumulate": false,
                                                "timeout": "10",
                                                "count": "",
                                                "reduceRight": false,
                                                "reduceExp": "",
                                                "reduceInit": "",
                                                "reduceInitType": "",
                                                "reduceFixup": "",
                                                "x": 3390,
                                                "y": 1620,
                                                "wires": [
                                                    [
                                                        "d3088cf.965347",
                                                        "5283a3de.98e1fc"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "c002b3a.6a1af5",
                                                "type": "switch",
                                                "z": "6e170384.60c96c",
                                                "name": "date !== undefined",
                                                "property": "payload.date",
                                                "propertyType": "msg",
                                                "rules": [
                                                    {
                                                        "t": "neq",
                                                        "v": "undefined",
                                                        "vt": "str"
                                                    }
                                                ],
                                                "checkall": "true",
                                                "repair": false,
                                                "outputs": 1,
                                                "x": 3210,
                                                "y": 1620,
                                                "wires": [
                                                    [
                                                        "cb053236.8d8cc"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "d3088cf.965347",
                                                "type": "change",
                                                "z": "6e170384.60c96c",
                                                "name": "speicher in fIOBLog",
                                                "rules": [
                                                    {
                                                        "t": "set",
                                                        "p": "fIOBLog",
                                                        "pt": "flow",
                                                        "to": "payload",
                                                        "tot": "msg"
                                                    }
                                                ],
                                                "action": "",
                                                "property": "",
                                                "from": "",
                                                "to": "",
                                                "reg": false,
                                                "x": 3590,
                                                "y": 1560,
                                                "wires": [
                                                    []
                                                ]
                                            },
                                            {
                                                "id": "5283a3de.98e1fc",
                                                "type": "ui_template",
                                                "z": "6e170384.60c96c",
                                                "group": "921e7aba.1e8358",
                                                "name": "IOB Log Ausgabe",
                                                "order": 0,
                                                "width": "30",
                                                "height": "22",
                                                "format": "<style>\n.main\n{\n    height:100%;\n    width:100%;\n    /* background:lightblue; */\n        \n}\n\n\n#t01 th {\n     \n  padding: 5px;\n  font-size:120%;\n  color: var(--nr-dashboard-groupTextColor);\n   /* color:#0eb8c0;  */\n}\n#t01 td {\n     \n  padding: 5px;\n\n}\n    \n</style>\n\n<div class=\"main\">\n\n    <table id=\"t01\">\n\n   \n    <tr><th width=20%>Datum</th><th  width=70%>Event</th></tr>\n     <tr ng-repeat=\"item in msg.payload\">\n    <td  align=left>{{item.date}}</td><td align=left>{{item.event}}</td>\n    </tr>\n    \n    </table>\n\n\n</div>",
                                                "storeOutMessages": true,
                                                "fwdInMessages": false,
                                                "resendOnRefresh": false,
                                                "templateScope": "local",
                                                "x": 3590,
                                                "y": 1620,
                                                "wires": [
                                                    []
                                                ]
                                            },
                                            {
                                                "id": "921e7aba.1e8358",
                                                "type": "ui_group",
                                                "name": "Tabelle Test",
                                                "tab": "dc25fe35.866f",
                                                "order": 2,
                                                "disp": true,
                                                "width": "30",
                                                "collapse": false
                                            },
                                            {
                                                "id": "dc25fe35.866f",
                                                "type": "ui_tab",
                                                "name": "Test",
                                                "icon": "dashboard",
                                                "order": 14,
                                                "disabled": false,
                                                "hidden": false
                                            }
                                        ]
                                        

                                        Als Hilfsmittel zum Analysieren Deiner Logdatein eignen sich wie ja hier schon erwähnt die regulären Ausdrücke gut.

                                        Ich teste immer hier - da sieht man dann auch was in den Gruppe $1 usw. entahlten ist. https://regexr.com/

                                        Ansonsten fragen, warum ich was gemacht habe - aber nun bist Du am Zug - Deine Wünsche zu realisieren.

                                        Neue Logzeilen hängst Du einfach an das Array an usw. Um Tabellen in Spalten zu sortieren, wie gesagt dass können Dir HTML Programmieren sicher besser erklären - bzw. im Moment weiß ich sowas einfach nicht.

                                        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.

                                        mickymM 1 Reply Last reply
                                        0
                                        • mickymM mickym

                                          Teil4 - so wie gesagt, warum ich NodeRed liebe - das Ganze hier ist bis auf den Code der HTML Formatierung mit wenigen Nodes erledigt:

                                          4a8f8645-accf-4092-9f59-e3e893a5842e-image.png

                                          und erfordert quasi 0 Programmierung. ;) Alles mit Standard-Nodes und ohne Function-Nodes mit irgendwelchen Programmzeilen. ;)

                                          Hier der Flow zum Importieren und Spielen - die wichtigsten Dinge habe ich ja nun erklärt:

                                          [
                                              {
                                                  "id": "cf77d4c3.528018",
                                                  "type": "file in",
                                                  "z": "6e170384.60c96c",
                                                  "name": "",
                                                  "filename": "/opt/iobroker/log/iobroker.current.log",
                                                  "format": "lines",
                                                  "chunk": false,
                                                  "sendError": false,
                                                  "encoding": "none",
                                                  "x": 2490,
                                                  "y": 1620,
                                                  "wires": [
                                                      [
                                                          "514882c5.47d2fc"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "243bb718.488838",
                                                  "type": "inject",
                                                  "z": "6e170384.60c96c",
                                                  "name": "",
                                                  "props": [
                                                      {
                                                          "p": "payload"
                                                      }
                                                  ],
                                                  "repeat": "",
                                                  "crontab": "",
                                                  "once": false,
                                                  "onceDelay": 0.1,
                                                  "topic": "",
                                                  "payload": "true",
                                                  "payloadType": "bool",
                                                  "x": 2250,
                                                  "y": 1620,
                                                  "wires": [
                                                      [
                                                          "cf77d4c3.528018"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "cffc5b65.bd9258",
                                                  "type": "change",
                                                  "z": "6e170384.60c96c",
                                                  "name": "",
                                                  "rules": [
                                                      {
                                                          "t": "set",
                                                          "p": "date",
                                                          "pt": "msg",
                                                          "to": "payload",
                                                          "tot": "msg"
                                                      },
                                                      {
                                                          "t": "set",
                                                          "p": "event",
                                                          "pt": "msg",
                                                          "to": "payload",
                                                          "tot": "msg"
                                                      },
                                                      {
                                                          "t": "change",
                                                          "p": "date",
                                                          "pt": "msg",
                                                          "from": "(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}\\:\\d{2}:\\d{2}).*39m:\\s(.*)",
                                                          "fromt": "re",
                                                          "to": "$1",
                                                          "tot": "str"
                                                      },
                                                      {
                                                          "t": "change",
                                                          "p": "event",
                                                          "pt": "msg",
                                                          "from": "(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}\\:\\d{2}:\\d{2}).*39m:\\s(.*)",
                                                          "fromt": "re",
                                                          "to": "$2",
                                                          "tot": "str"
                                                      },
                                                      {
                                                          "t": "delete",
                                                          "p": "payload",
                                                          "pt": "msg"
                                                      },
                                                      {
                                                          "t": "move",
                                                          "p": "date",
                                                          "pt": "msg",
                                                          "to": "payload.date",
                                                          "tot": "msg"
                                                      },
                                                      {
                                                          "t": "move",
                                                          "p": "event",
                                                          "pt": "msg",
                                                          "to": "payload.event",
                                                          "tot": "msg"
                                                      }
                                                  ],
                                                  "action": "",
                                                  "property": "",
                                                  "from": "",
                                                  "to": "",
                                                  "reg": false,
                                                  "x": 2980,
                                                  "y": 1620,
                                                  "wires": [
                                                      [
                                                          "c002b3a.6a1af5"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "514882c5.47d2fc",
                                                  "type": "switch",
                                                  "z": "6e170384.60c96c",
                                                  "name": "keine leeren Zeilen",
                                                  "property": "payload",
                                                  "propertyType": "msg",
                                                  "rules": [
                                                      {
                                                          "t": "nempty"
                                                      }
                                                  ],
                                                  "checkall": "true",
                                                  "repair": false,
                                                  "outputs": 1,
                                                  "x": 2770,
                                                  "y": 1620,
                                                  "wires": [
                                                      [
                                                          "cffc5b65.bd9258"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "cb053236.8d8cc",
                                                  "type": "join",
                                                  "z": "6e170384.60c96c",
                                                  "name": "",
                                                  "mode": "custom",
                                                  "build": "array",
                                                  "property": "payload",
                                                  "propertyType": "msg",
                                                  "key": "topic",
                                                  "joiner": "\\n",
                                                  "joinerType": "str",
                                                  "accumulate": false,
                                                  "timeout": "10",
                                                  "count": "",
                                                  "reduceRight": false,
                                                  "reduceExp": "",
                                                  "reduceInit": "",
                                                  "reduceInitType": "",
                                                  "reduceFixup": "",
                                                  "x": 3390,
                                                  "y": 1620,
                                                  "wires": [
                                                      [
                                                          "d3088cf.965347",
                                                          "5283a3de.98e1fc"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "c002b3a.6a1af5",
                                                  "type": "switch",
                                                  "z": "6e170384.60c96c",
                                                  "name": "date !== undefined",
                                                  "property": "payload.date",
                                                  "propertyType": "msg",
                                                  "rules": [
                                                      {
                                                          "t": "neq",
                                                          "v": "undefined",
                                                          "vt": "str"
                                                      }
                                                  ],
                                                  "checkall": "true",
                                                  "repair": false,
                                                  "outputs": 1,
                                                  "x": 3210,
                                                  "y": 1620,
                                                  "wires": [
                                                      [
                                                          "cb053236.8d8cc"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "d3088cf.965347",
                                                  "type": "change",
                                                  "z": "6e170384.60c96c",
                                                  "name": "speicher in fIOBLog",
                                                  "rules": [
                                                      {
                                                          "t": "set",
                                                          "p": "fIOBLog",
                                                          "pt": "flow",
                                                          "to": "payload",
                                                          "tot": "msg"
                                                      }
                                                  ],
                                                  "action": "",
                                                  "property": "",
                                                  "from": "",
                                                  "to": "",
                                                  "reg": false,
                                                  "x": 3590,
                                                  "y": 1560,
                                                  "wires": [
                                                      []
                                                  ]
                                              },
                                              {
                                                  "id": "5283a3de.98e1fc",
                                                  "type": "ui_template",
                                                  "z": "6e170384.60c96c",
                                                  "group": "921e7aba.1e8358",
                                                  "name": "IOB Log Ausgabe",
                                                  "order": 0,
                                                  "width": "30",
                                                  "height": "22",
                                                  "format": "<style>\n.main\n{\n    height:100%;\n    width:100%;\n    /* background:lightblue; */\n        \n}\n\n\n#t01 th {\n     \n  padding: 5px;\n  font-size:120%;\n  color: var(--nr-dashboard-groupTextColor);\n   /* color:#0eb8c0;  */\n}\n#t01 td {\n     \n  padding: 5px;\n\n}\n    \n</style>\n\n<div class=\"main\">\n\n    <table id=\"t01\">\n\n   \n    <tr><th width=20%>Datum</th><th  width=70%>Event</th></tr>\n     <tr ng-repeat=\"item in msg.payload\">\n    <td  align=left>{{item.date}}</td><td align=left>{{item.event}}</td>\n    </tr>\n    \n    </table>\n\n\n</div>",
                                                  "storeOutMessages": true,
                                                  "fwdInMessages": false,
                                                  "resendOnRefresh": false,
                                                  "templateScope": "local",
                                                  "x": 3590,
                                                  "y": 1620,
                                                  "wires": [
                                                      []
                                                  ]
                                              },
                                              {
                                                  "id": "921e7aba.1e8358",
                                                  "type": "ui_group",
                                                  "name": "Tabelle Test",
                                                  "tab": "dc25fe35.866f",
                                                  "order": 2,
                                                  "disp": true,
                                                  "width": "30",
                                                  "collapse": false
                                              },
                                              {
                                                  "id": "dc25fe35.866f",
                                                  "type": "ui_tab",
                                                  "name": "Test",
                                                  "icon": "dashboard",
                                                  "order": 14,
                                                  "disabled": false,
                                                  "hidden": false
                                              }
                                          ]
                                          

                                          Als Hilfsmittel zum Analysieren Deiner Logdatein eignen sich wie ja hier schon erwähnt die regulären Ausdrücke gut.

                                          Ich teste immer hier - da sieht man dann auch was in den Gruppe $1 usw. entahlten ist. https://regexr.com/

                                          Ansonsten fragen, warum ich was gemacht habe - aber nun bist Du am Zug - Deine Wünsche zu realisieren.

                                          Neue Logzeilen hängst Du einfach an das Array an usw. Um Tabellen in Spalten zu sortieren, wie gesagt dass können Dir HTML Programmieren sicher besser erklären - bzw. im Moment weiß ich sowas einfach nicht.

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

                                          So noch ein paar Ergänzungen:

                                          Die tail-Node ist hervorragend, da sie ja aus sich selbst herausgetriggert wird und immer die letzte Zeile ausgibt.

                                          ebba6ee5-f6db-4503-8a35-c440323987ef-image.png

                                          Wenn man die Join-Node kann man nun natürlich so konfigurieren - dass sie anstelle von 10 sekunden - das Array erst nach 300s bildet - dann bildet sie das Array erst nach 300s und zusammen mit der Tailnode habe ich nur die Einträge der letzten 5 Minuten drin.

                                          Oder ich konfigurieren die JOIN Node so, dass sie auf einen externen Trigger reagiert habe ich folgenden mit einem Inject Node dargestellt. Der kann entweder zyklisch ablaufen - das LOG wird mit jedem neuen Array ja gelöscht. Im Prinzip kann man natürlich statt der JOIN Node eine Function Node machen und im Function Node Kontext das Array aufbauen. Das wird dann nicht mehr gelöscht und man hängt mit Array.push jede payload hinten dran. Ausgegeben wird das ganze Array wieder via trigger.

                                          So kann statt der Inject Node ja einfach die uicontrol Node dienen, die dann triggert wenn Du die entsprechende Seite in Deinem Dashboard öffnest.

                                          Also mir fallen 1000 Dinge ein. ;)

                                          Das ist zum Beispiel die Ausgabe mit der TAIL Node - nachdem ich die JOIN Node auf 300s gestellt habe und in der Zwischenzeit den Info-Adapter neu gestartet habe.

                                          9d9464ec-2ec3-4d1a-90f4-ca7c6e58bcd7-image.png

                                          Mit msg.complete als trigger kann man das auch vorher ausgeben, selbst wenn das Zeitintervall noch nicht abgelaufen ist.

                                          263f5241-64f7-4112-b307-330f00cb8355-image.png

                                          1e3a21a8-0987-4437-adb2-bfdc3fe18f48-image.png

                                          Also den Möglichkeiten sind kaum Grenzen gesetzt. Der Inject Node kann wie gesagt selbst als Trigger dienen nicht nur manuell:

                                          Hier mal die Ausgabe des Logs im 15 Minuten Intervall:

                                          927f93d2-6677-484b-bcc0-6293cf35e457-image.png

                                          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
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          997

                                          Online

                                          32.4k

                                          Users

                                          81.5k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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