Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Vorlage] JS: Log-Datei aufbereiten für VIS

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    [Vorlage] JS: Log-Datei aufbereiten für VIS

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      ple @Mic last edited by

      @Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

      @ple sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

      @Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

      @ple sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

      Vielleicht hast du eine Idee, wie ich dein Script nutzen kann als Meldearchiv.
      Eigentlich will ich mir in einer Table nur anzeigen lassen, wenn ein Aktor auf true geht, oder sonst was.
      Ähnlich Fensterzähler oder dein Garagentor. Nur soll die Meldung auch wieder weggehen, wenn z.B. dein Garagentor nicht mehr klemmt.
      Hast du da vielleicht eine Idee, wie man sowas umsetzen könnte?
      Mein rudimentärer Anfang ist hier mal dokumentiert.
      https://forum.iobroker.net/topic/30324/array-erstellen-mit-prüfung-für-json-tabelle/9

      Hi,
      das Log-Script ist nicht für deinen Anwendungsfall gedacht, es nimmt ausschließlich die Logs als Quelle. Ebenso ist es ein "Log", daher werden ältere Werte nicht nachträglich angepasst.

      Das Script ist dahingehend auch super, da man die Logs auch durchsehen kann.
      Ich frage mich gerade, wie man das Script umbauen könnte, dass die Log zwar wie jetzt geschrieben werden und dieses auch in einem Json gepackt wird, jedoch eine Bediungung eintritt, die das löschen auslöst auch wieder aus der Json entfernt.

      Vorstellen könnte ich mir das so, Fenster links ist offen, ich schreiben ein Log, Fenster wieder zu, ich überprüfe die Json, finde "Fenster links ist offen" und lösche das aus der Json. Das schreiben und Filtern dürfte ja mit deinem Script so funktionieren, nur das löschen wäre dahingehend interessant.

      Vielleicht wäre das ein Extra Script, was die Json dahingehend nachträglich bearbeitet, nur leider reichen meine Kenntnisse dafür leider nicht aus. 😞

      Vielleicht hast du beim Kaffee eine ruhige Minute, wie man das vielleicht umsetzen könnte, den Kaffee gebe ich dir gerne aus 🙂

      Ich verstehe noch nicht ganz deinen Anwendungsfall:
      Du hast wohl diverse Fensteraktoren. Was genau soll in VIS angezeigt werden, wenn mind. 1 Fenster auf ist? Wenn alle Fenster zu, soll ja wohl nichts angezeigt werden?

      Meine Beschreibungen, was ich umsetzen möchte sind nicht immer gerade der hit.
      Eigentlich wollte ich mir was von Siemens TIA abgucken, da gibt es ein Meldefenster, was anzeigt, welche Störung gerade aktiv anliegt. Z. b. "Druckluft zu niedrig". Das wollte ich zu Hause auch gerne haben mit z.B. Fenster "Wohnzimmer links offen", "Beregnungsanlage eingeschaltet", "Abluft Badezimmer eingeschaltet" usw.
      Mit deinem Script ab 4.10 kann ich defenierte Logs absenden und die rausfilter und einen Table erzeugen. Das ist soweit super. Nur leider ist es ja so, dass die Meldung ja immer noch angezeigt wird, wenn z.B. Die Abluft Badezimmer wieder ausgeschaltet ist.
      Jetzt wäre es gut, wenn ich in den Bedinungen für die Log absetzen irgendwie bei false die Meldung aus der Json wieder rauslöschen kann. Wenn die einmal gelöscht ist, sollte die ja nicht wieder hochkommen, bis die Abluft wieder eingeschaltet wird. glaube du triggers auf logon.
      Meine Anfänglichen versuche sehen so aus.

      var pfad = "javascript." + "0.Log.Meldung.";
      var output_json = pfad + "output_json"
      var output_raw = pfad + "output_raw"
      var Aktor_1 = pfad + "Aktor_1"
      var Aktor_2 = pfad + "Aktor_2"
      var Aktor_3 = pfad + "Aktor_3"
      var Aktor_4 = pfad + "Aktor_4"
      
      createState(output_json, "", {
         name: "output_json",
         desc: "",
         type: "string",
      });
      createState(output_raw, "", {
         name: "output_raw",
         desc: "",
         type: "string",
      });
      createState(Aktor_1, false, {
         name: "Aktor 1",
         desc: "",
         type: "boolean",
      });
      createState(Aktor_2, false, {
         name: "Aktor 2",
         desc: "",
         type: "boolean",
      });
      createState(Aktor_3, false, {
         name: "Aktor 3",
         desc: "",
         type: "boolean",
      });
      createState(Aktor_4, 0, {
         name: "Aktor 4",
         desc: "",
         type: "number",
      });
      
      let arr = JSON.parse(getState(output_json).val)
      
      let meldung = [
         { trigger: 'javascript.0.Log.Meldung.Aktor_1'/*Aktor 1*/, check1: "==true", check2: "==false", message: "Aktor 1 mit ist true" },
         { trigger: 'javascript.0.Log.Meldung.Aktor_2'/*Aktor 1*/, check1: "==true", check2: "==false", message: "Aktor 2 mit ist true" },
         { trigger: 'javascript.0.Log.Meldung.Aktor_3'/*Aktor 1*/, check1: "==true", check2: "==false", message: "Aktor 3 mit ist true" },
         { trigger: 'javascript.0.Log.Meldung.Aktor_4'/*Aktor 1*/, check1: '>=50', check2: "<51", message: "Aktor 4 ist über 50%" },
      ]
      
      meldung.forEach(meld => {
      
         on({ id: meld.trigger, change: "ne" }, function () {
             let trigger = getState(meld.trigger).val
             let obj = {
                 "Datum": meld.message,
                 "Meldung": meld.message
             };
      
             let alarm = false
             arr.forEach(function (Arr, Index) {
                 if (Arr.Meldung == obj.Meldung) {
                     alarm = true
                     if (eval('' + trigger + meld.check2)) {
                         arr.splice(Index, 1)
                         log("löschen")
                     }
                 } else {
                     alarm = false
      
                 }
      
             })
      
             if (eval('' + trigger + meld.check1) && (!alarm)) {
                 arr.push(obj)
      
             }
      
             log(arr)
             setState(output_json, JSON.stringify(arr))
         })
      })
      
      Da fehlt aber noch einiges drin, ala Filtermöglichkeiten usw. Da kommt dein Script ins Spiel :)
      
      Vielleicht könnte man auch bei false ein Log senden mit einem Keyword, was die Json um die Log löscht, vielleicht in dem Schritt wo du doppelte Einträge suchst.
      
      Kurz gesagt, eine Logausgabe über defenierte Zustände, die sich aber wieder löschen wenn alles wieder normal läuft.
      
      Gruß und Danke
      
      

      Glasfaser 1 Reply Last reply Reply Quote 0
      • Glasfaser
        Glasfaser @ple last edited by

        @ple

        Ist das nicht ein unnötiger großer Aufwand was du machen willst .
        Mic Skript ist zum loggen da...

        Du möchtest pro Schaltaktor (Zustand) es über den Log herrausfilteren und dann in einer Tabelle auf den Zustand anzeigen lassen.(Nur den Ist Zustand)

        Warum nimmst du nicht z.B. das MaterialDesign List Widget oder In HTML-Widget States verarbeiten/anzeigen zum anzeigen .

        P 1 Reply Last reply Reply Quote 1
        • D
          DennisMenger last edited by

          Hallo zusammen.

          Ich habe auch das Log-Skript, sowie das Alexa-Skript eingebunden. Allerdings fehlt bei mir irgendwas? Die Log-Einträge werden nicht optimal dargestellt.

          logs.png

          Was habe ich übersehen?

          sigi234 Negalein 2 Replies Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @DennisMenger last edited by

            @DennisMenger

            Anzahl der Spalten erhöhen.

            1 Reply Last reply Reply Quote 0
            • D
              DennisMenger last edited by

              Mir geht es ja darum, dass die Anzeige so wie hier aussieht. Also die Quelle und der Log-Eintrag schöner aussieht als bei mir jetzt.

              1583088439251-xsagh.png

              H Mic 2 Replies Last reply Reply Quote 0
              • H
                helfi9999 @DennisMenger last edited by Negalein

                @DennisMenger du musst die "clean " Liste ergänzen mit dem was nicht angezeigt werden soll z.B. :

                {
                   id:             'javascript.0',
                   filter_all:     ['javascript.0','+++'], // nur Logeinträge mit Level 'info'
                   filter_any:     ['+++', ' +++'],
                   blacklist:      ['', ''],
                   **%(#ff0000)[[clean:]]**          ['script.js.Alexa_Bedienung.Alexa:','script.js.Funksteckdosen.Hue_Kugel:','script.js.Funksteckdosen.Lichterkette_Kinderzimmer:','script.js.Funksteckdosen.Tablet_Strom_an_aus:','script.js.Alexa_Bedienung.Schlafzimmer_Aktivität:','script.js.Alexa_Bedienung.Alexa_Status:','script.js.Alexa_Bedienung.Wohnzimmer_Aktivität:','script.js.Alexa_Bedienung.Alexa_Status:','script.js.Harmony.Schlafzimmer_Fernbedienung:','script.js.Harmony.Wohnzimmer_Fernbedienung:','script.js.Fritz_Box.Qr-Code:','script.js.Alexa_Bedienung.Wohnzimmerbeleuchtung:','script.js.Funksteckdosen.Fluter:','script.js.Funksteckdosen.Küche:','script.js.Funksteckdosen.Lena_Lichterkette:',
                   'script.js.Kodi.Befehle:','script.js.Funksteckdosen.Küchenbeleuchtung:','script.js.Alexa_Bedienung.Beleuchtung_Winter:','script.js.Funksteckdosen.Weihnachtsbeleuchtung_Kugel:',' +++','+++','+++ +++','script.js.Alexa_Bedienung.Alles_aus:',
                   'script.js.Alexa_Bedienung.Samsung_Schlafzimmer:','script.js.Alexa_Bedienung.Samsung_Wohnzimmer:','script.js.Fritz Box.WlanGuest:',
                   'script.js.Knuddel.Alexa:','script.js.Sonos.Button_Repeat_Küche:','script.js.Sonos.Button_Repeat_Wohnzimmer:',
                   'script.js.Sonos.Gruppen:','script.js.Shelly.Wohnzimmer:','script.js.Shelly.Flurlicht:','script.js.Funksteckdosen.LED_Lichtleiste_Schlafzimmer:','script.js.Shelly.Badezimmerlicht:',`script.js.Shelly.Küchenlicht:`,`script.js.Shelly.Kinderzimmerlicht:`,'script.js.Shelly.Schlafzimmerlicht:','javascript.0.Tageszeit:','script.js.Shelly.Shelly_H+T:'],
                   merge:          false,
                   sortDescending: true,
                   jsonDateFormat: '#DD.MM.# hh:mm',
                   jsonColumns:    ['date','level','source','msg'],
                   jsonLogLength:  100,
                   jsonMaxLines:   30,
                   jsonCssToLevel: true,
                


                Mod-Edit: Code/Log in Code Tags gepackt. Bitte benutzt die Code Tags Funktion -> </>
                Hier gehts zur Hilfe.

                1 Reply Last reply Reply Quote 0
                • Mic
                  Mic Developer @DennisMenger last edited by

                  @DennisMenger sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                  Mir geht es ja darum, dass die Anzeige so wie hier aussieht. Also die Quelle und der Log-Eintrag schöner aussieht als bei mir jetzt.

                  1583088439251-xsagh.png

                  Bitte hier Lesen zur Einbindung:
                  1.) https://forum.iobroker.net/post/386960
                  2.) https://github.com/Mic-M/iobroker.logfile-script#5-neues-feature-ab-410-per-log-json-spalteninhalte-ändern

                  Es scheint, du hast das nicht zu 100% umgesetzt lt. deinem obigen Screenshot. Setzt du wirklich die aktuelle Script-Version 4.10 ein? Hast du von einer vorherigen Version upgedated?
                  Am besten mal frisch neu starten, und nach Anleitung neu einrichten.

                  1 Reply Last reply Reply Quote 0
                  • Negalein
                    Negalein Global Moderator @DennisMenger last edited by

                    @DennisMenger sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                    Allerdings fehlt bei mir irgendwas?

                    Zeig mal dein Script.

                    1 Reply Last reply Reply Quote 0
                    • D
                      DennisMenger last edited by

                      Werde ich heute Nachmittag posten, bin auf der Arbeit

                      D 1 Reply Last reply Reply Quote 0
                      • P
                        ple @Glasfaser last edited by

                        @Glasfaser sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                        @ple

                        Ist das nicht ein unnötiger großer Aufwand was du machen willst .
                        Mic Skript ist zum loggen da...

                        Du möchtest pro Schaltaktor (Zustand) es über den Log herrausfilteren und dann in einer Tabelle auf den Zustand anzeigen lassen.(Nur den Ist Zustand)

                        Warum nimmst du nicht z.B. das MaterialDesign List Widget oder In HTML-Widget States verarbeiten/anzeigen zum anzeigen .

                        Die Widgets sind soweit gut für ein paar Aktoren, Sensoren, ich wollte so an die 200 Meldungen programmieren.
                        Eventuell treten 150 davon nie auf, aber wenn doch, wäre es schön die in einer Table zu haben.
                        Fensterkontakte die offen melden wäre nur eine Sache, da würden bei 45 Stück einiges an Platz bei draufgehen.
                        Weitere Anwendungsfällte wäre z.b. meine Heizung, da würde ich mir wünschen das eine Meldung kommt, wenn der Vorlauf zu hoch ist, oder die Diff zwischen Vor und Rücklauf, oder Heizung auf Störung, oder Druck zu gering ist. Eine Meldung wäre auch schön, wenn der Füllstand der Zisterne zu niedrig ist oder oder oder.
                        Ich denke, dass Potenzial ist riesig. Wie gesagt, die Logs zu schreiben geht ja, nur das löschen, wenn die Fehler wieder weg sind wäre schön und dazu müsste man die Json anpacken.
                        ich selber komme aus dem Maschinenbau, daher auch die Idee, da unsere Anlagen halt Meldungen ausgeben, wenn was nicht stimmt, diese aber auch wieder verschwinden, wenn das Problem gelöst ist.

                        @Mic : kannst du dir sowas vorstellen? Mal eben ist das bestimmt nicht gemacht und ich bin dankbar, dass das Script bereits soweit ist, würde auch gerne ein paar Kaffee mehr spenden 🙂

                        Gruß

                        Glasfaser 1 Reply Last reply Reply Quote 0
                        • Glasfaser
                          Glasfaser @ple last edited by Glasfaser

                          @ple

                          Meinst du so , als Liste !?
                          Das ist nur ein Auszug von einer meiner Zusands Listen ...
                          Überwache damit Datenpunkte , entweder kann man ein Text als Zustand angeben oder ein Symbol .

                          Ist ganz Easy zu machen !

                          1.JPG

                          C sigi234 3 Replies Last reply Reply Quote 0
                          • D
                            DennisMenger @DennisMenger last edited by

                            @Negalein @Mic habe die Skripte einmal neu erstellt, alle Datenpunkte neu erstellen lassen. Scheint jetzt zu funktionieren.

                            logs2.png

                            Danke für den Tipp

                            Mic 1 Reply Last reply Reply Quote 0
                            • Mic
                              Mic Developer @DennisMenger last edited by

                              @DennisMenger
                              Freut mich, danke für deine Rückinfo!

                              @ple
                              Scheint wirklich ein anderer Anwendungsfall als was das Log-Script hier abdeckt:
                              Am besten bitte einen neuen Thread eröffnen mit aussagekräftigem Titel und alles bislang gepostetes einfügen als Zitat. Dann wird dir wohl schneller geholfen.

                              1 Reply Last reply Reply Quote 0
                              • C
                                Conquest @Glasfaser last edited by

                                @Glasfaser sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                                @ple

                                Meinst du so , als Liste !?
                                Das ist nur ein Auszug von einer meiner Zusands Listen ...
                                Überwache damit Datenpunkte , entweder kann man ein Text als Zustand angeben oder ein Symbol .

                                Ist ganz Easy zu machen !

                                1.JPG

                                Hi @Glasfaser
                                würdest du das Script hier zur Verfügung stellen. Glaube das könnte ich gut gebrauchen😊
                                Danke schon mal.
                                Gruß

                                1 Reply Last reply Reply Quote 0
                                • C
                                  Coffeelover @Mic last edited by

                                  @Mic sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                                  Tipp:
                                  Um im VIS anzuzeigen, ob das Script erfolgreich läuft, könnt ihr folgendes Widget benutzen:
                                  https://forum.iobroker.net/post/384051

                                  Das HTML-Widget prüft, ob innerhalb der letzten 30 Sekunden das Script erfolgreich gelaufen ist. Ausgabe-Beispiel:
                                  1_active.png

                                  Falls nicht erfolgreich gelaufen innerhalb der letzten 30 Sekunden:
                                  2_inactive.png

                                  Im Unterschied zum Datenpunkt javascript.0.scriptEnabled.Log-Script, der nur den Status anzeigt, ob das Script aktiviert ist, wird mit obigem Widget auch geprüft, ob das Script erfolgreich lief.
                                  Text "inactive" ist nicht ganz korrekt merke ich gerade, besser wäre wohl "Script Error" oder ähnliches.
                                  Anzupassen im HTML des Widgets, unter:
                                  anp.png

                                  Hi,

                                  habe mir auch gerade das Script installiert (aktuelle Version von Github) und alles ans Laufen bekommen. Einziges Problem: Dieser Status steht auf inactive, obwohl das Script schön fleißig Daten aktualisiert. Muss ich hier noch etwas einstellen?

                                  VG

                                  Glasfaser 1 Reply Last reply Reply Quote 0
                                  • Glasfaser
                                    Glasfaser @Coffeelover last edited by Glasfaser

                                    @Coffeelover

                                    Wenn du alle Einstellungen im VIEW von Mic und im Script so gelassen hast ,dann wird der Status auch angezeigt ,.

                                    Das Widget ( mini Script ) prüft den Datenpunkt " 0_userdata.0.Log-Script.All.lastTimeUpdated "

                                    2222.JPG
                                    .

                                    2.JPG

                                    C 1 Reply Last reply Reply Quote 0
                                    • sigi234
                                      sigi234 Forum Testing Most Active @Glasfaser last edited by

                                      @Glasfaser sagte in [Vorlage] JS: Log-Datei aufbereiten für VIS:

                                      Ist ganz Easy zu machen !

                                      Und wie?

                                      Glasfaser 1 Reply Last reply Reply Quote 0
                                      • Glasfaser
                                        Glasfaser @sigi234 last edited by Glasfaser

                                        @sigi234

                                        Mit einem Blockly Script

                                        sigi234 1 Reply Last reply Reply Quote 0
                                        • sigi234
                                          sigi234 Forum Testing Most Active @Glasfaser last edited by sigi234

                                          @Glasfaser

                                          Aha, jetzt verstehe ich es.
                                          Wollte das Log vom Backitup Adapter anzeigen lassen, hat nicht funtioniert. 😀

                                          Glasfaser 1 Reply Last reply Reply Quote 0
                                          • Glasfaser
                                            Glasfaser @sigi234 last edited by Glasfaser

                                            @sigi234

                                            EDIT : Meinst du So für Backitup

                                            View noch nicht fertig

                                            Negalein sigi234 2 Replies Last reply Reply Quote 2
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            481
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            60
                                            617
                                            110494
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo