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@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 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.
    • Negalein
      Negalein Global Moderator last edited by

      @Mic

      Ich bekomm folgenden Error und das Log-Script geht auf Pause (Gelb).

      javascript.0	2020-03-01 20:31:44.477	error	(591) at Script.runInContext (vm.js:133:20)
      javascript.0	2020-03-01 20:31:44.477	error	(591) at script.js.System.IOBroker_Log:285:21
      javascript.0	2020-03-01 20:31:44.476	error	(591) SyntaxError: Invalid regular expression: /script\.js\.[^:]*: [Alexa-Log-Script]/: Range out of order in character class
      javascript.0	2020-03-01 20:31:44.476	error	(591) ^
      javascript.0	2020-03-01 20:31:44.476	error	(591) clean: [/script\.js\.[^:]*: [Alexa-Log-Script]/, '', ''],
      javascript.0	2020-03-01 20:31:44.475	error	(591) script.js.System.IOBroker_Log: script.js.System.IOBroker_Log:285
      

      /******************************************************************************************************
       * History der Alexa-Sprachbefehle in VIS darstellen.
       * Erfordert das Log-Script: https://github.com/Mic-M/iobroker.logfile-script
       ******************************************************************************************************/
      
      // Normalerweise wird die "summary", also der Befehl an Alexa, in Kleinbuchstaben zurückgegeben, also 
      // z.B. "flurlicht einschalten". Wenn diese Option auf "true" ist, wird die Ausgabe zu 
      // "Flurlicht Einschalten", also jeweils erster Buchstabe groß. 
      // Falls nicht gewünscht, auf "false" setzen.
      const CAPITALIZE_FIRSTS = true;
      
      /*************************************************************************************************************************
       * Ab hier nichts mehr ändern / Stop editing here!
       *************************************************************************************************************************/
      
      main();
      function main() {
          // All instances, so alexa2.0.History.json, alexa2.1.History.json, alexa2.2.History.json, etc.
          on({id: /^alexa2\.\d\.History\.json$/, change:'any'}, function(obj) {
      
              // obj.state.val: JSON string of oject.
              // Like: {"name":"Alexa Flur","serialNumber":"xxxxxxxxxx","summary":"Wohnlicht an","creationTime":1582843794820, ... }
              let objHistory = JSON.parse(obj.state.val); 
      
              // ignore alexa keywords or empty value.
              if(! (['', 'alexa','echo','computer'].includes(objHistory['summary']) )) {
                  // ignore "sprich mir nach"
                  if (!(objHistory['summary'].includes('sprich mir nach '))) {
                      log('[Alexa-Log-Script] ##{"msg":"' + formatAlexaSummary(objHistory['summary']) + '", "source":"' + objHistory['name'] + '"}##');
                  }
              }
          });
      }
      
      /**
       * Formats the Alexa summary text accordingly.
       * @param {string} summaryText   The summary text
       * @return {string} the formatted summary
       */
      function formatAlexaSummary(summaryText) {
          if (CAPITALIZE_FIRSTS) summaryText = summaryText.replace(/(^|\s)\S/g, l => l.toUpperCase()); // Capitalize if set. https://stackoverflow.com/questions/2332811/
          return summaryText;
      }
      


      Log-Script.txt

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

        @Glasfaser
        @Negalein
        Vielen Dank für euer Feedback 😊

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

        Ich würde das Skript noch auf Github legen

        Guter Hinweis, erledigt (da ist auch das Filterbeispiel drin): https://github.com/Mic-M/iobroker.logfile-script/blob/master/alexa/alexa-log-script.js

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

          @Mic

          Hm, ist das jetzt ein eigenes Skript?

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

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

            Hm, ist das jetzt ein eigenes Skript?

            das kurze Script wird benötigt, um mit den neuen Log-Script die Alexa-History auszulesen.

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

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

              @Mic
              Ich bekomm folgenden Error und das Log-Script geht auf Pause (Gelb).

              Leider stellt das Forum hier Regex in Codes nicht korrekt dar, bitte kopiere den Filter noch mal von hier:
              https://github.com/Mic-M/iobroker.logfile-script/blob/master/alexa/alexa-log-script.js
              (Zeile: "clean:" ersetzen reicht)

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

                @Mic

                Muss ich das was ändern und es in das Große Skript kopieren?

                Screenshot (1883).png

                Gecheckt!

                Mic Negalein 2 Replies Last reply Reply Quote 0
                • Mic
                  Mic Developer @sigi234 last edited by

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

                  Muss ich das was ändern und es in das Große Skript kopieren?

                  Nein, sieht gut aus. Ist ein separates Script nur für Alexa.

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

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

                    Muss ich das was ändern

                    Nein

                    und es in das Große Skript kopieren

                    Zeile 18 bis 30 ins Log-Script

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

                      @Mic

                      perfekt wie immer 🙂

                      vis (43).png

                      sigi234 Mic K 3 Replies Last reply Reply Quote 1
                      • sigi234
                        sigi234 Forum Testing Most Active @Negalein last edited by

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

                        @Mic

                        perfekt wie immer 🙂

                        Dem schließe ich mich an!

                        Screenshot (1887).png

                        Glasfaser 1 Reply Last reply Reply Quote 1
                        • Glasfaser
                          Glasfaser @Mic last edited by

                          @Mic

                          Dein Beispiel-Projekt würde ich auch noch anheften …
                          ... sonst geht es auch hier unter 😉

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

                            @sigi234

                            1.JPG

                            Das ist mal Cool Danke zu sagen 😉 👍

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

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

                              perfekt wie immer 🙂

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

                              Dem schließe ich mich an!

                              Vielen Dank, auch an Sigi für den Alexa-Befehl 😎 ☺

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

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

                                Dein Beispiel-Projekt würde ich auch noch anheften …
                                ... sonst geht es auch hier unter 😉

                                Danke, ist hier dokumentiert, und nun auch verlinkt: https://github.com/Mic-M/iobroker.logfile-script/blob/master/README.md#3-log-ausgaben-im-vis-darstellen

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

                                  @Mic

                                  Ich überlege gerade wie ich am Besten ein aufklappbares Menü mache da es sicher noch mehr wird.

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

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

                                    @Mic

                                    Ich überlege gerade wie ich am Besten ein aufklappbares Menü mache da es sicher noch mehr wird.

                                    Vielleicht über List Widget ...

                                    K 1 Reply Last reply Reply Quote 0
                                    • K
                                      Kuddel @Mic last edited by

                                      Ich habe das Skript gerade importiert, auf meine Umgebung angepasst und gestartet.

                                      Ich erhalte folgedn Fehlermeldung:

                                      javascript.0	2020-03-02 07:41:26.748	error	(3135) at Script.runInContext (vm.js:133:20)
                                      javascript.0	2020-03-02 07:41:26.748	error	(3135) at script.js.java.abfragen.log_vis_neu:540:1
                                      javascript.0	2020-03-02 07:41:26.748	error	(3135) at init (script.js.java.abfragen.log_vis_neu:544:5)
                                      javascript.0	2020-03-02 07:41:26.748	error	(3135) ReferenceError: onLogUnregister is not defined
                                      javascript.0	2020-03-02 07:41:26.748	error	(3135) ^
                                      javascript.0	2020-03-02 07:41:26.748	error	(3135) onLogUnregister(G_LogHandler);
                                      javascript.0	2020-03-02 07:41:26.748	error	(3135) script.js.java.abfragen.log_vis_neu: script.js.java.abfragen.log_vis_neu:544
                                      
                                      K 1 Reply Last reply Reply Quote 0
                                      • 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:

                                        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 🙂

                                        Mic 1 Reply Last reply Reply Quote 0
                                        • Iccube
                                          Iccube last edited by Iccube

                                          Hallo,
                                          top Script besten Dank an @mic noch mal.
                                          Habe das Problem das bei mir die Blacklist-Global nicht berücksichtigt wird.

                                          log.png
                                          log_java.png
                                          log2.png

                                          B 1 Reply Last reply Reply Quote 0
                                          • B
                                            blackeagle998 @Iccube last edited by blackeagle998

                                            @Icube
                                            Das Komma hinter dem letzten Eintrag in der global Blacklist muss weg, sonst erwartet er noch einen Eintrag.

                                            Gleiches gilt für die Filter. Wenn die eckige Klammer zugeht, darf davor kein Komma stehen.

                                            Hoffe das löst dein Problem.

                                            Iccube 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            579
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            60
                                            617
                                            115149
                                            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