Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [Vorstellung] Meine zweite Visualisierung

    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

    [Vorstellung] Meine zweite Visualisierung

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kuddel @sigi234 last edited by

      @sigi234 habs gerade im Export geändert.

      Danke für den Hinweis

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

        @Negalein habe gerade erfolgreich einen Workaround testen können.

        Habs auf Seite 1 hinzugefügt ✌

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

          @Kuddel

          Wie bekomme ich die Grafiken flot angezeigt?

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

            @sigi234 die Grafik selber muss man sich natürlich in Flot zusammen bauen.

            Voraussetzung ist natürlich, das der Wert, der grafisch dargestellt werden soll, per History.Adapter geloggt wird.

            Hier ein Beisoiel für die CPU Auslastung vom ioBroker:

            f03305a8-663a-4926-8542-422ecce1eebe-grafik.png

            d0908921-5377-4140-9a21-f213d278a45b-grafik.png

            e75ddc9f-08c1-42ad-b44d-b1a8895646fc-grafik.png

            Dann am ende alles makieren und im VIS Wisget einfügen:
            261fad4e-bed9-470f-926c-6341e4dbc830-grafik.png

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

              @Kuddel

              Aha......ok dachte die sind dabei.....

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

                @sigi234 leider nein, Ist ja ein VIS-Export, kein Flot-Export.

                Ich könnte natürlich jetzt für alle meiner Graphen die Links posten, ich weiß nur nicht, ob die dann auch bei euch funzen.

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

                  @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

                  @sigi234 leider nein, Ist ja ein VIS-Export, kein Flot-Export.

                  Ich könnte natürlich jetzt für alle meiner Graphen die Links posten, ich weiß nur nicht, ob die dann auch bei euch funzen.

                  Das geht, man muss sie aber anpassen .........

                  Nicht alle aber eines um das Design zu erhalten............

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

                    @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

                    @sigi234 ja genau. leider ohne Icons. habe noch keinen weg gefunden, das alles in einem Paket hoch zu laden

                    Habe gerade dein Projekt importiert (nach deiner Vorgehensweise).
                    Leider funktioniert das nicht.
                    Er meldet, dass die vis-view.json nicht gefunden wird.
                    Sie ist aber im neuen Zip enthalten.

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

                      @Negalein komisch. bei mir hat es funktioniert

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

                        @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

                        @Negalein komisch. bei mir hat es funktioniert

                        Ich mach jetzt nochmal einen Download.
                        Die Datei ohne den Icons funktioniert auch nicht.

                        Wie groß ist die bei dir?

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

                          @Negalein habe gerade beide Datein neu heruntergeladen.

                          1. Import ohne Icons: Funzt
                          2. Neues Archiv mit VIS und Icons erstell und importiert: Funzt auch
                          Negalein 1 Reply Last reply Reply Quote 0
                          • Negalein
                            Negalein Global Moderator @Kuddel last edited by

                            @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

                            @Negalein habe gerade beide Datein neu heruntergeladen.

                            1. Import ohne Icons: Funzt
                            2. Neues Archiv mit VIS und Icons erstell und importiert: Funzt auch

                            dürfte beim Download was schief gegangen sein.
                            Jetzt hat es geklappt.

                            1 Reply Last reply Reply Quote 0
                            • Nashra
                              Nashra Most Active Forum Testing last edited by

                              Hallo @Kuddel
                              zu Ram in Prozent finde ich leider keinen Datenpunkt im Info-Adapter.
                              Wie hast Du das gemacht?

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

                                @Nashra das habe ich eben per Blocky aus den Daten vom Info Adapter errechnet. Man benötigt ja nur gesamt RAM und aktuell verwendeten

                                Nashra 1 Reply Last reply Reply Quote 0
                                • Nashra
                                  Nashra Most Active Forum Testing @Kuddel last edited by

                                  @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

                                  @Nashra das habe ich eben per Blocky aus den Daten vom Info Adapter errechnet. Man benötigt ja nur gesamt RAM und aktuell verwendeten

                                  Achduje, in Blockly mal reingesehen aber keinen Plan wie sowas geht 🤔
                                  Wärst Du so nett... 😀

                                  crunchip K 2 Replies Last reply Reply Quote 0
                                  • crunchip
                                    crunchip Forum Testing Most Active @Nashra last edited by

                                    @Nashra vllt hilft dir sowas

                                    var pfad            = "Systeminfos.ioBroker.Prozesse" + "."; // Pfad in dem die Datenpunkte angelegt werden
                                    
                                    // Datenpunktnamen:
                                    var idProzesse          = pfad + 'ioBroker_Prozesse';
                                    var idMemAll            = pfad + 'ioBroker_Speicher_gesamt';
                                    var idAnzProzesse       = pfad + 'ioBroker_Anzahl_Prozesse';
                                    var idCpuAll            = pfad + 'ioBroker_CPU_Gesamt';
                                    var idMemPercent        = pfad + 'ioBroker_Speicher_prozentual';
                                    var idInstanzenEinmal   = pfad + 'ioBroker_Instanzen_einmal_aktiv';
                                    
                                    
                                    // regelmässige Wiederholungen der Abfrage
                                    var cronStr         = "*/2 * * * *";
                                    
                                    var abfrage         = 'ps -A aux --sort -pmem | grep " [i]o.*"';
                                    
                                    
                                    
                                    
                                    // -----------------------------------------------------------------------------
                                    
                                    
                                    createState(idProzesse, "", {
                                         name: 'ioBroker laufende Prozesse Objekt',
                                         desc: 'ioBroker laufende Prozesse Objekt, Speicherverbrauch',
                                         type: 'string',
                                         unit: '',
                                         role: 'object'
                                    });
                                    
                                    createState(idMemAll, 0, {
                                         name: 'ioBroker Speicherverbrauch gesamt',
                                         desc: 'ioBroker Speicherverbrauch gesamt (RSS)',
                                         type: 'number',
                                         unit: 'MB',
                                         role: 'value'
                                    });
                                    
                                    createState(idAnzProzesse, 0, {
                                         name: 'ioBroker Anzahl Prozesse',
                                         desc: 'ioBroker Anzahl aktiver Prozesse',
                                         type: 'number',
                                         unit: '',
                                         role: 'value'
                                    });
                                    
                                    createState(idCpuAll, 0.0, {
                                         name: 'ioBroker CPU-Last gesamt',
                                         desc: 'ioBroker CPU-Last gesamt',
                                         type: 'number',
                                         unit: '%',
                                         role: 'value'
                                    });
                                    
                                    createState(idMemPercent, 0.0, {
                                         name: 'Speicherverbrauch prozentual',
                                         desc: 'Speicherverbrauch prozentual',
                                         type: 'number',
                                         unit: '%',
                                         role: 'value'
                                    });
                                    
                                    createState(idInstanzenEinmal, true, {
                                         name: 'keine Instanzen doppelt aktiv',
                                         desc: 'jeder aktive ioBroker Prozess ist nur einmal aktiv',
                                         type: 'boolean',
                                         unit: '',
                                         role: 'value'
                                    });
                                    
                                    
                                    
                                    // -----------------------------------------------------------------------------
                                    
                                    
                                    function doppelteProzesse(arr) {
                                        var mehrfacheProzesse = [];
                                        var anzProzesse = (arr.length);
                                        var anzProzessAktiv = 0;
                                        for (var i = 0; i < anzProzesse; i++) {
                                            if (mehrfacheProzesse.indexOf(arr[i].command) == -1) {
                                                anzProzessAktiv = zaehleProzesse(arr,arr[i].command);
                                                if (anzProzessAktiv > 1) {
                                                    log("Prozess: " + arr[i].command+", mehrfach aktiv: " + anzProzessAktiv +" mal","warn");
                                                    mehrfacheProzesse.push(arr[i].command);
                                                    mehrfacheProzesse.push(anzProzessAktiv);
                                                }
                                            }
                                        }    
                                        return mehrfacheProzesse;
                                    }
                                    
                                    function zaehleProzesse(arr,command) {
                                        var count = 0;
                                        var anzProzesse = (arr.length);
                                        for (var i = 0; i < anzProzesse; i++) {
                                            if(arr[i].command === command) {
                                                count++;
                                            }
                                        }    
                                        return count;
                                    }
                                    
                                    
                                    function writeJson(json) {
                                        return JSON.stringify(json);    // JSON in String umwandeln, damit das JSON in einem Datenpunkt geschrieben werden kann
                                    }
                                    
                                    
                                    function getMemAbsolut(json) {
                                        var anzProzesse = (json.length);
                                        var mem = 0;
                                        for (var i = 0; i < anzProzesse; i++) {
                                            mem = mem + json[i].rss;
                                        }    
                                        return mem;
                                    }
                                     
                                    function getCpu(json) {
                                        var anzProzesse = (json.length);
                                        var cpu = 0.0;
                                        for (var i = 0; i < anzProzesse; i++) {
                                            cpu = cpu + json[i].cpu;
                                        }    
                                        return cpu;
                                    }
                                    
                                    function getMem(json) {
                                        var anzProzesse = (json.length);
                                        var mem = 0.0;
                                        for (var i = 0; i < anzProzesse; i++) {
                                            mem = mem + json[i].mem;
                                        }    
                                        return mem;
                                    }
                                    
                                    
                                    function createArrayJson(arr) {
                                        var jsonArr     = [];
                                        var anzDP       = 11;                       // Anzahl Datenreihen in der Abfrage
                                        var anzProzesse = (arr.length-1)/anzDP;
                                    
                                        for (var i = 0; i < anzProzesse; i++) {
                                            jsonArr.push({
                                                command:    arr[10 + i*anzDP],              // ioBroker Prozess (COMMAND = Kommando, mit dem der Prozess gestartet wurde)
                                                pid:        arr[ 1 + i*anzDP],              // Prozess ID
                                                cpu:        parseFloat(arr[ 2 + i*anzDP]),  // aktueller CPU-Last in %
                                                mem:        parseFloat(arr[ 3 + i*anzDP]),  // aktueller Verbrauch physikalischer Speicher %
                                                vmem:       parseInt(arr[ 4 + i*anzDP]),    // 
                                                rss:        parseInt(arr[ 5 + i*anzDP]),    // physikalische Speichernutzung
                                                start:      arr[ 8 + i*anzDP],              // Startzeitpunkt des Prozesses
                                                time:       arr[ 9 + i*anzDP]               // bisher verbrauchte CPU Zeit
                                            });
                                        }
                                        return jsonArr;
                                    }
                                    
                                    
                                    function abfrageConsole() {
                                        exec(abfrage, function(err, stdout, stderr) {
                                            if (err) {
                                                log(err,"error");
                                                return;
                                            }
                                            stdout = stdout.replace(/\n+/g, " "); // neue Zeile gegen Leerzeichen ersetzen
                                            stdout = stdout.split(/ +/g);         // array erstellen, Leerzeichen als Trenner
                                            
                                            var anzProzesse = (stdout.length-1) / 11;
                                            
                                            //log(stdout);
                                            //log("Anzahl laufender ioBroker Prozesse: " + anzProzesse);
                                            
                                            var jsonArr = createArrayJson(stdout);
                                            var mem         = Math.floor(getMemAbsolut(jsonArr)/1024);
                                            var cpu         = Math.floor(getCpu(jsonArr)*10)/10;
                                            var memPercent  = Math.floor(getMem(jsonArr)*10)/10;
                                    
                                            var doppeltArr = doppelteProzesse(jsonArr);
                                            
                                            if(doppeltArr.length === 0) {
                                                setState(idInstanzenEinmal,true);
                                            } else {
                                                setState(idInstanzenEinmal,false);
                                            }
                                    
                                            setState(idProzesse     ,writeJson(jsonArr));
                                            setState(idMemAll       ,mem);
                                            setState(idAnzProzesse  ,anzProzesse);
                                            setState(idCpuAll       ,cpu);
                                            setState(idMemPercent   ,memPercent);
                                        });
                                    }
                                    
                                    
                                    function abfragen() {
                                        abfrageConsole();
                                    }
                                    
                                    // regelmässige Wiederholungen
                                    // -----------------------------------------------------------------------------
                                    schedule(cronStr, abfragen);
                                    
                                    
                                    // main
                                    // -----------------------------------------------------------------------------
                                    function main() {
                                        abfragen();
                                    }
                                    
                                    
                                    // Start Skript:
                                    // -----------------------------------------------------------------------------
                                    
                                    setTimeout(main,    500);
                                    
                                    
                                    Nashra 1 Reply Last reply Reply Quote 0
                                    • Nashra
                                      Nashra Most Active Forum Testing @crunchip last edited by

                                      @crunchip sagte in [Vorstellung] Meine zweite Visualisierung:

                                      @Nashra vllt hilft dir sowas

                                      Klasse, läuft, ich Danke dir 👍

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

                                        @Nashra in Blocky sieht es dann so aus:

                                        48dc24e3-cbb6-41c9-bb58-447e2b8aa392-grafik.png

                                        Nashra M 2 Replies Last reply Reply Quote 2
                                        • Nashra
                                          Nashra Most Active Forum Testing @Kuddel last edited by

                                          @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

                                          @Nashra in Blocky sieht es dann so aus:

                                          48dc24e3-cbb6-41c9-bb58-447e2b8aa392-grafik.png

                                          👍

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            markus-now @Kuddel last edited by

                                            @Kuddel
                                            Hallo Kuddel,
                                            Erst auch mal von mir ein Dankeschön für so eine geniale Arbeit und das du, dass Projekt zur Verfügung gestellt hast.
                                            Ich arbeite mich gerade durch das Briefkasten Skript und versuche zu verstehen, warum du mit post 0 falsch beginnt.
                                            kannst du mir da den ablauf etwas schildern arbeite noch nicht so lange mit ioBroker aber versuche intensiv zu lernen da kommt natürlisch so ein super projekt genau richtig.
                                            Kannst du mir da den Ablauf etwas schildern arbeite noch nicht so lange mit ioBroker aber versuche intensiv zu lernen da kommt natürlich so ein super Projekt genau richtig.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            756
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            template vis
                                            148
                                            1324
                                            482926
                                            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