Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [Vorstellung] Meine zweite Visualisierung

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

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

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

[Vorstellung] Meine zweite Visualisierung

Geplant Angeheftet Gesperrt Verschoben Visualisierung
vistemplate
1.3k Beiträge 148 Kommentatoren 549.2k Aufrufe 157 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • sigi234S sigi234

    @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

    VIS-Export 10.05.19:

    Hallo, ist das jetzt als Projekt zu importieren?

    K Online
    K Online
    Kuddel
    schrieb am zuletzt editiert von
    #458

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

    sigi234S NegaleinN 2 Antworten Letzte Antwort
    0
    • K Kuddel

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

      sigi234S Online
      sigi234S Online
      sigi234
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #459

      @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

      Ok, erfolgreich importiert, ABER du musst die Passwörter bei den Kameras unbedingt rausnehmen bzw. sofort ändern!

      Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Immer Daten sichern!

      K 1 Antwort Letzte Antwort
      0
      • K Kuddel

        Nachdem ich mit der ersten Version meiner VIS nicht mehr zufreiden war, hab ich mich daran gemacht, alles einmal komplett neu zu machem.

        Die Seiten sind alle fpr mein Galaxy Tab A erstellt worden.

        Vielen Dank an @Annuit20 , der ebenfalls seine komplette VIS zur Verfügung gestellt hat. An dieser konnte ich mich orientieren und mir einige Ideen abgucken.

        Ich denke so richtig fertig ist man ja nie, aber ein Bisschen habe ich schon geschafft….

        1_Startseite.PNG

        2_Erdgeschoss_Seite_1.PNG

        2_Erdgeschoss_Seite_1.1.PNG

        2_Erdgeschoss_Seite_1.2.PNG

        2_Erdgeschoss_Seite_2.PNG

        3_Obergeschoss.PNG

        4_Wetter.PNG

        4_Wetter_regenradar.PNG

        5_System.PNG

        5_System_1_ioBroker.PNG

        5_System_2_ioBroker.PNG

        5_System_3_CCU.PNG

        5_System_4_Bewaesserung.PNG

        5_System_5_VU.PNG

        5_System_6_ESX-NUC.PNG

        5_System_7_NUT-Server.PNG

        5_System_8_USV.PNG

        5_System_9_Daniel.PNG

        5_System_10_Win10.PNG

        5_System_11_Unifi.PNG

        5_System_12_OMV.PNG

        5_System_13_WinNAS.PNG

        6_Logs.PNG

        7_ioBroker.PNG

        8_CCU.PNG

        9_Netzwerk.PNG

        10_Staubsauger.PNG

        11_Spritpreise.PNG

        12_1_Echo_Geräte.PNG

        12_2_Echo_Gruppen.PNG

        12_VMware.PNG

        13_TV.PNG

        14_Kodi+.PNG

        Damit alles korrekt dargestellt wird, müssen folgende Widgets installiert sein:
        widgtes.PNG

        Für die Icons wird des Weiteren der Adapter "icons-mfd-png" benötigt.

        Skripte

        Alle Objekte, mit denen ich in meinen Skripten arbeite, können mit einem Javascript erstellt werden:
        objekte.txt

        Hier sind alle meine Skirpte als komplett Export aus der Scriptengine

        2020-03-17-scripts.zip

        Danke an @Kaiman55 für den Test-Import.

        Anleitung Skript Import:

        1. Download der Datei "2020-03-17-scripts.zip"
        2. Eigene Skripte in Zip Datei exportieren
        3. Beide Archive entpacken und dann die Skripte / Gruppen in einem gemeinsamen Archiv zusamfenühren
        4. Import des neu erstellten Archis

        VIS-Export 06.11.19:

        2019-11-06-VIS.zip

        Hier meine Icons
        Meine_Icons.zip

        Workaround für das Hochladen der kompletten VIS

        1. Meine_Icons.zip entpacken
        2. 2019-11-06-VIS.zip entpacken
        3. Die beiden VIS-Datein und die den Icons Ordner zu einem neuen Zip Archiv zusammefügen
        4. Das neue Zip archiv importieren
        NegaleinN Offline
        NegaleinN Offline
        Negalein
        Global Moderator
        schrieb am zuletzt editiert von
        #460

        @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

        -> Leider wieder ohne Icons da das Paket sonst 16 MB groß wäre

        Wenn du möchtest, kann ich dir auf meinem Webserver einen FTP zur Verfügung stellen.

        ° Node.js: 20.17.0 NPM: 10.8.2
        ° Proxmox, Ubuntu 22.04.3 LTS
        ° Fixer ---> iob fix

        K 1 Antwort Letzte Antwort
        0
        • sigi234S sigi234

          @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

          Ok, erfolgreich importiert, ABER du musst die Passwörter bei den Kameras unbedingt rausnehmen bzw. sofort ändern!

          K Online
          K Online
          Kuddel
          schrieb am zuletzt editiert von
          #461

          @sigi234 habs gerade im Export geändert.

          Danke für den Hinweis

          sigi234S 1 Antwort Letzte Antwort
          0
          • NegaleinN Negalein

            @Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:

            -> Leider wieder ohne Icons da das Paket sonst 16 MB groß wäre

            Wenn du möchtest, kann ich dir auf meinem Webserver einen FTP zur Verfügung stellen.

            K Online
            K Online
            Kuddel
            schrieb am zuletzt editiert von
            #462

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

            Habs auf Seite 1 hinzugefügt :v:

            1 Antwort Letzte Antwort
            0
            • K Kuddel

              @sigi234 habs gerade im Export geändert.

              Danke für den Hinweis

              sigi234S Online
              sigi234S Online
              sigi234
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #463

              @Kuddel

              Wie bekomme ich die Grafiken flot angezeigt?

              Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Immer Daten sichern!

              K 1 Antwort Letzte Antwort
              0
              • sigi234S sigi234

                @Kuddel

                Wie bekomme ich die Grafiken flot angezeigt?

                K Online
                K Online
                Kuddel
                schrieb am zuletzt editiert von
                #464

                @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

                sigi234S 1 Antwort Letzte Antwort
                0
                • K Kuddel

                  @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

                  sigi234S Online
                  sigi234S Online
                  sigi234
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #465

                  @Kuddel

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

                  Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Immer Daten sichern!

                  K 1 Antwort Letzte Antwort
                  0
                  • sigi234S sigi234

                    @Kuddel

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

                    K Online
                    K Online
                    Kuddel
                    schrieb am zuletzt editiert von
                    #466

                    @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.

                    sigi234S 1 Antwort Letzte Antwort
                    0
                    • K Kuddel

                      @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.

                      sigi234S Online
                      sigi234S Online
                      sigi234
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von sigi234
                      #467

                      @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............

                      Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                      Immer Daten sichern!

                      1 Antwort Letzte Antwort
                      0
                      • K Kuddel

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

                        NegaleinN Offline
                        NegaleinN Offline
                        Negalein
                        Global Moderator
                        schrieb am zuletzt editiert von
                        #468

                        @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.

                        ° Node.js: 20.17.0 NPM: 10.8.2
                        ° Proxmox, Ubuntu 22.04.3 LTS
                        ° Fixer ---> iob fix

                        K 1 Antwort Letzte Antwort
                        0
                        • NegaleinN Negalein

                          @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 Online
                          K Online
                          Kuddel
                          schrieb am zuletzt editiert von
                          #469

                          @Negalein komisch. bei mir hat es funktioniert

                          NegaleinN 1 Antwort Letzte Antwort
                          0
                          • K Kuddel

                            @Negalein komisch. bei mir hat es funktioniert

                            NegaleinN Offline
                            NegaleinN Offline
                            Negalein
                            Global Moderator
                            schrieb am zuletzt editiert von
                            #470

                            @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?

                            ° Node.js: 20.17.0 NPM: 10.8.2
                            ° Proxmox, Ubuntu 22.04.3 LTS
                            ° Fixer ---> iob fix

                            K 1 Antwort Letzte Antwort
                            0
                            • NegaleinN Negalein

                              @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 Online
                              K Online
                              Kuddel
                              schrieb am zuletzt editiert von
                              #471

                              @Negalein habe gerade beide Datein neu heruntergeladen.

                              1. Import ohne Icons: Funzt
                              2. Neues Archiv mit VIS und Icons erstell und importiert: Funzt auch
                              NegaleinN 1 Antwort Letzte Antwort
                              0
                              • K Kuddel

                                @Negalein habe gerade beide Datein neu heruntergeladen.

                                1. Import ohne Icons: Funzt
                                2. Neues Archiv mit VIS und Icons erstell und importiert: Funzt auch
                                NegaleinN Offline
                                NegaleinN Offline
                                Negalein
                                Global Moderator
                                schrieb am zuletzt editiert von
                                #472

                                @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.

                                ° Node.js: 20.17.0 NPM: 10.8.2
                                ° Proxmox, Ubuntu 22.04.3 LTS
                                ° Fixer ---> iob fix

                                1 Antwort Letzte Antwort
                                0
                                • NashraN Offline
                                  NashraN Offline
                                  Nashra
                                  Most Active Forum Testing
                                  schrieb am zuletzt editiert von
                                  #473

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

                                  Gruß Ralf
                                  Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

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

                                  K 1 Antwort Letzte Antwort
                                  0
                                  • NashraN Nashra

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

                                    K Online
                                    K Online
                                    Kuddel
                                    schrieb am zuletzt editiert von
                                    #474

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

                                    NashraN 1 Antwort Letzte Antwort
                                    0
                                    • K Kuddel

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

                                      NashraN Offline
                                      NashraN Offline
                                      Nashra
                                      Most Active Forum Testing
                                      schrieb am zuletzt editiert von
                                      #475

                                      @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 :thinking_face:
                                      Wärst Du so nett... :grinning:

                                      Gruß Ralf
                                      Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

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

                                      crunchipC K 2 Antworten Letzte Antwort
                                      0
                                      • NashraN Nashra

                                        @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 :thinking_face:
                                        Wärst Du so nett... :grinning:

                                        crunchipC Abwesend
                                        crunchipC Abwesend
                                        crunchip
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von
                                        #476

                                        @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);
                                        
                                        

                                        umgestiegen von Proxmox auf Unraid

                                        NashraN 1 Antwort Letzte Antwort
                                        0
                                        • crunchipC crunchip

                                          @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);
                                          
                                          
                                          NashraN Offline
                                          NashraN Offline
                                          Nashra
                                          Most Active Forum Testing
                                          schrieb am zuletzt editiert von
                                          #477

                                          @crunchip sagte in [Vorstellung] Meine zweite Visualisierung:

                                          @Nashra vllt hilft dir sowas

                                          Klasse, läuft, ich Danke dir :+1:

                                          Gruß Ralf
                                          Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

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

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          364

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe