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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • Glasfaser
      Glasfaser @mguenther last edited by Glasfaser

      @mguenther

      Wenn du von Ihm das View in dein Projekt kopierst , dann mußt du auch die CCS kopieren .

      CSS:

      
      
      /******************************************
                     — LINKS —
      ******************************************/
      .noteProject a:link { color: #b8b8b8; } /* unvisited link */
      .noteProject a:visited { color: #b8b8b8; } /* visited link */
      .noteProject a:hover { color: #ffffff; } /* mouse over link */
      .pnoteProjecte a:active { color: #ffffff; } /* selected link */
      hr { border:0; height: 1px; background-color:#b8b8b8 }
      
      
      /******************************************
                     — TABLE —
      ******************************************/
      
      .tableLog .log-warn { color: orange;}
      .tableLog .log-error { color: red;}
      .tableLog .log-info { color: yellow;}
      
      
      /* Word-Break anwenden */
      .tableLog {
         word-break: break-word; 
      }
      
      
      
      /* Jede zweite Tabellenzeile formatieren */
      .tableLog tr:nth-child(even) {
         background:rgba(56,46,67,0.1);
      }
      
      /* Rand unterhalb Tabellenüberschrift */
      .tableLog .mdc-data-table__header-row {
         border-bottom: 1px solid #434343;
      }
      
      /* Zeilenhöhe und Abstände */
      .tableLog .mdc-data-table__cell  {
         line-height:1.3em;
         padding-top: 6px;
         padding-bottom: 6px;
      }
      
      
      /* Scrollbar */
      .tableLog::-webkit-scrollbar { width: 15px; }
      .tableLog::-webkit-scrollbar-track { background: transparent; }
      .tableLog::-webkit-scrollbar-thumb { background-color: rgba(63,64,71,1); border-radius: 7px; border-color: rgba(63,64,71,1); }
      .tableLog::-webkit-scrollbar-thumb:hover { background: #8f8f8f; }
      
      
      /******************************************
                     — BUTTONS —
      ******************************************/
      
      
      .leftBarBtn .materialdesign-button-body {
         justify-content: left !important; 
         margin-left: 0.9em;
      }
      

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

        @Glasfaser
        das hatte ich gesucht... ich bin blöd, bei mir stand die ganze Zeit CSS auf global und deswegen hatte ich es nicht gesehen
        danke

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

          Update: Script-Version 4.10

          Die neue Log-Script Version 4.10 erlaubt es nun, über Logs, die abgegeben werden (z.B. über Funktion log() in JavaScript oder Blockly) die Inhalte zu manipulieren. Da das Log-Script umfangreiche Filter bietet, von denen beliebig viele angelegt werden können und dann in Datenpunkten verfügbar sind, können mit dieser Funktion einfach per log() entsprechend Tabellen gefüllt werden.

          Hier im Link weitere Infos zur Verwendung.

          Beispiel:

          Folgendes Script erzeugt eine Log-Zeile, sobald ein Befehl an ein Alexa-Gerät gesprochen wird.
          Github: alexa-log-script.js

          So sieht dann das Log dieses Scripts in etwa aus:
          javascript.0 (12345) script.js.Alexa: [Alexa-Log-Script] ##{"msg":"Licht An", "source":"Sonos Küche"}##

          Anzeige im VIS durch diese neue Funktion des Log-Scripts:
          xsagh.png

          Wie zu sehen wird damit "Quelle" (wäre hier normalerweise "javascript.0") durch das Alexa-Gerät (hier: Sonos Küche) ersetzt. Außerdem wird die Message durch den gesprochenen Befehl (hier: "Licht An") ersetzt.
          Genauso können auch noch das Datum ("date") und das Log-Level ("level") ersetzt werden.

          Für dieses Script-Beispiel einfach folgenden Filter setzen:

            {
              id:             'alexa',
              filter_all:     ['[Alexa-Log-Script]', ''],
              filter_any:     [' - info: '],
              blacklist:      ['', '', ''],
              clean:          [/script\.js\.[^:]*: [Alexa-Log-Script]/, '', ''],
              merge:          false,
              sortDescending: true,
              jsonDateFormat: '#DD.MM.# hh:mm',
              jsonColumns:    ['date','level','source','msg'],
              jsonLogLength:  100,
              jsonMaxLines:   50,
              jsonCssToLevel: true,
            },
          

          Genau so können auch mehrere Filter für verschiedene Alexa-Geräte angelegt werden.
          Dazu einfach unter filter_all ein bestimmtes Alexa-Gerät, z.B. "Show 5 Küche" hinzufügen.

          Update von Vorversion
          Einfach alles unterhalb von hier ersetzen:

          /********************************************************
           * Ab hier nichts mehr ändern / Stop editing here!
           ********************************************************/
          
          Glasfaser Negalein 2 Replies Last reply Reply Quote 1
          • Glasfaser
            Glasfaser @Mic last edited by Glasfaser

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

            Beispiel:
            Folgendes Script erzeugt eine Log-Zeile, sobald ein Befehl an ein Alexa-Gerät gesprochen wird.

            Ich würde das Skript noch auf Github legen , sonst geht es hier unter !?

            EDIT: und das Filterbeispiel ...

            @Negalein .... da hat Mic was tolles für Dich gemacht 😉

            Negalein Mic 2 Replies Last reply Reply Quote 1
            • Negalein
              Negalein Global Moderator @Glasfaser last edited by

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

              da hat Mic was tolles für Dich gemacht

              Ja, definitiv!
              Schon geil, was @Mic da für Zauberhände hat.

              1 Reply Last reply Reply Quote 1
              • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            749
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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