Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Cpu Werte aus Windows auslesen - halb gelöst

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Cpu Werte aus Windows auslesen - halb gelöst

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      Linedancer last edited by

      Hallo Gemeinde,

      ich hätte gerne Speicherauslastung, Load, cpu-Temp u.ä. von einem Windows Recher in iobroker. Auf diesem Rechner läuft kein iobroker.

      Gefunden habe ich COre Temp http://www.alcpu.com/CoreTemp/

      Dafür gibt es ein plug in, das die Daten per http zugänglich macht.

      Die Antwort sieht so aus:

      ! {"CpuInfo":{"uiLoad":[16,11],"uiTjMax":[100],"uiCoreCnt":2,"uiCPUCnt":1,"fTemp":[43,43],"fVID":0.770019531,"fCPUSpeed":1597.264,"fFSBSpeed":99.829,"fMultipier":16,"CPUName":"Intel Core i5 6198DU (Skylake-U) ","ucFahrenheit":0,"ucDeltaToTjMax":0},"MemoryInfo":{"TotalPhys":8057,"FreePhys":3962,"TotalPage":9337,"FreePage":4541,"TotalVirtual":134217728,"FreeVirtual":134217127,"FreeExtendedVirtual":1,"MemoryLoad":50}} {"CpuInfo":{"uiLoad":[18,14],"uiTjMax":[100],"uiCoreCnt":2,"uiCPUCnt":1,"fTemp":[43,44],"fVID":0.734375,"fCPUSpeed":1297.777,"fFSBSpeed":99.829,"fMultipier":13,"CPUName":"Intel Core i5 6198DU (Skylake-U) ","ucFahrenheit":0,"ucDeltaToTjMax":0},"MemoryInfo":{"TotalPhys":8057,"FreePhys":3941,"TotalPage":9337,"FreePage":4527,"TotalVirtual":134217728,"FreeVirtual":134217126,"FreeExtendedVirtual":1,"MemoryLoad":51}}

      Jetzt habe ich einen node red flow erzeugt der die Daten als json empfängt.

      Dis Ergebnis sieht so aus:

      ! msg : Object
      ! object
      ! topic: ""
      ! payload: object
      ! CpuInfo: object
      ! uiLoad: array[2]
      ! 0: 9
      ! 1: 8
      ! uiTjMax: array[1]
      ! uiCoreCnt: 2
      ! uiCPUCnt: 1
      ! fTemp: array[2]
      ! 0: 44
      ! 1: 42
      ! fVID: 1.01794434
      ! fCPUSpeed: 2695.383
      ! fFSBSpeed: 99.829
      ! fMultipier: 27
      ! CPUName: "Intel Core i5 6198DU (Skylake-U) "
      ! ucFahrenheit: 0
      ! ucDeltaToTjMax: 0
      ! MemoryInfo: object
      ! TotalPhys: 8057
      ! FreePhys: 3964
      ! TotalPage: 9337
      ! FreePage: 4552
      ! TotalVirtual: 134217728
      ! FreeVirtual: 134217126
      ! FreeExtendedVirtual: 1
      ! MemoryLoad: 50

      Jetzt fehlt mir leider das know how, diese Ergebnis so aufzudröseln das ich damit Datenpunkte befüllen kann.

      hier der (übersichtliche) flow:

      ! [
      ! {
      ! "id": "8cf128ab.71a538",
      ! "type": "tab",
      ! "label": "Flow 2"
      ! },
      ! {
      ! "id": "68c269c.79a6798",
      ! "type": "debug",
      ! "z": "8cf128ab.71a538",
      ! "name": "",
      ! "active": false,
      ! "console": "false",
      ! "complete": "true",
      ! "x": 722.3888969421387,
      ! "y": 281.1111125946045,
      ! "wires": []
      ! },
      ! {
      ! "id": "ccda50c6.5d59a",
      ! "type": "tcp in",
      ! "z": "8cf128ab.71a538",
      ! "name": "",
      ! "server": "client",
      ! "host": "192.168.178.28",
      ! "port": "5200",
      ! "datamode": "stream",
      ! "datatype": "utf8",
      ! "newline": "",
      ! "topic": "",
      ! "base64": false,
      ! "x": 190.38890075683594,
      ! "y": 97.55559158325195,
      ! "wires": [
      ! [
      ! "9fa2a6ae.1f2c38",
      ! "e48d53bd.d3d31"
      ! ]
      ! ]
      ! },
      ! {
      ! "id": "9fa2a6ae.1f2c38",
      ! "type": "json",
      ! "z": "8cf128ab.71a538",
      ! "name": "",
      ! "x": 439.388916015625,
      ! "y": 199.4444580078125,
      ! "wires": [
      ! [
      ! "68c269c.79a6798"
      ! ]
      ! ]
      ! },
      ! {
      ! "id": "e48d53bd.d3d31",
      ! "type": "debug",
      ! "z": "8cf128ab.71a538",
      ! "name": "",
      ! "active": false,
      ! "console": "false",
      ! "complete": "false",
      ! "x": 678.3889007568359,
      ! "y": 155.11111450195312,
      ! "wires": []
      ! }
      ! ]

      Kann mir hier einer eventuell einen Schubs in die richtige Richtung geben.

      1 Reply Last reply Reply Quote 0
      • Thisoft
        Thisoft last edited by

        Hallo,

        kannst du mir mal den HTTP-Aufruf posten mit dem man erstmal den JSON-String erhält. Ich komme nämlich noch nicht mal soweit dass ich eine korrekte Antwort erhalten würde. Die Sache sieht aber interessant aus. Das Aufdröseln des JSON bekommen wir dann schon hin…

        Gruß Thilo

        1 Reply Last reply Reply Quote 0
        • L
          Linedancer last edited by

          Nachdem ich CoreTemp installiert habe, hab ich das Addon "Core Temp Remote Server" installiert und unter "Tool - Plug in Manager" gestartet.

          Dann noch unter "Tool" Logging on angehakt und fertisch.

          Auf dem iobroker Rechner im Browser 192.168.178.28:5200 reingetippt und schon kommen die Werte angeflogen wie in meinem ersten Post beschrieben.

          Dort hab ich auch den Node-red flow gepostet mit dem ich das ganze als json empfange.

          1 Reply Last reply Reply Quote 0
          • Thisoft
            Thisoft last edited by

            OK. Ich hab's soweit erstmal. Hab's auf einem anderen Rechner probiert da hat's auf Anhieb funktioniert. Nur auf dem ursprünglichen Rechner bekomme ich keinen Zugriff per TCP - nichtmal mit ausgeschalteter Firewall. Sei's drum…

            Ich melde mich wieder wenn ich weitergekommen bin...

            1 Reply Last reply Reply Quote 0
            • L
              Linedancer last edited by

              Das lässt hoffen, dank die schon mal.

              1 Reply Last reply Reply Quote 0
              • Thisoft
                Thisoft last edited by

                Kannst Du auch mit einem Javascript was anfangen? Würde nämlich jetzt ungern erst wieder Node-Red in Betrieb setzen 😉

                1 Reply Last reply Reply Quote 0
                • L
                  Linedancer last edited by

                  Ich bin zwar mehr der "Blockly Typ" aber Javascript wird schon gehen.

                  1 Reply Last reply Reply Quote 0
                  • Thisoft
                    Thisoft last edited by

                    So - hier mal ein Script:

                    ! ````
                    var pcName = 'Acer2';//Bezeichnung des zu überwachenden PC's
                    var ip = '192.168.137.9';//IP-Adresse des zu überwachenden PC's
                    var intervall = 10; //Intervall in Sekunden für das Abrufen der Werte; sollte min. 5s sein
                    ! //Initalisierung der Datenpunkte wenn noch nicht vorhanden
                    createState('HWInfo.' + pcName + '.CPU.Load', {type: 'number',def: 0, unit: '%'});
                    createState('HWInfo.' + pcName + '.CPU.Temp', {type: 'number',def: 0, unit: '°C'});
                    createState('HWInfo.' + pcName + '.CPU.Speed', {type: 'number',def: 0});
                    createState('HWInfo.' + pcName + '.CPU.Name', {type: 'string',def: ''});
                    createState('HWInfo.' + pcName + '.CPU.Power', {type: 'number',def: 0, unit: 'W'});
                    createState('HWInfo.' + pcName + '.Memory.TotalPhys', {type: 'number',def: 0, unit: 'MB'});
                    createState('HWInfo.' + pcName + '.Memory.FreePhys', {type: 'number',def: 0, unit: 'MB'});
                    createState('HWInfo.' + pcName + '.Memory.Load', {type: 'number',def: 0, unit: '%'});
                    ! schedule("*/" + intervall + " * * * * *", function(){
                    Abrufen();
                    });
                    ! function Abrufen(){
                    var s = require('net');
                    var client = s.connect(5200, ip, function(){
                    //log('client connected');
                    });
                    ! client.on('data', function(d){
                    client.destroy();
                    //log(d);
                    Auswerten(d);
                    });
                    }
                    ! function Auswerten(d){
                    var step1 = JSON.parse(d);
                    var cpuInf = step1.CpuInfo;
                    var memInf = step1.MemoryInfo;
                    ! var werte = cpuInf.uiLoad.toString().split(",");
                    var avg = (werte.reduce(function(a, b) { return parseFloat(a) + parseFloat(b); }))/werte.length;
                    setState('HWInfo.' + pcName + '.CPU.Load',avg,true);
                    werte = cpuInf.fTemp.toString().split(",");
                    avg = (werte.reduce(function(a, b) { return parseFloat(a) + parseFloat(b); }))/werte.length;
                    setState('HWInfo.' + pcName + '.CPU.Temp',avg,true);
                    setState('HWInfo.' + pcName + '.CPU.Speed',parseFloat(cpuInf.fCPUSpeed),true);
                    setState('HWInfo.' + pcName + '.CPU.Name',cpuInf.CPUName,true);
                    setState('HWInfo.' + pcName + '.CPU.Power',parseFloat(cpuInf.fPower),true);
                    setState('HWInfo.' + pcName + '.Memory.TotalPhys',parseFloat(memInf.TotalPhys),true);
                    setState('HWInfo.' + pcName + '.Memory.FreePhys',parseFloat(memInf.FreePhys),true);
                    setState('HWInfo.' + pcName + '.Memory.Load',parseFloat(memInf.MemoryLoad),true);
                    log("CPU-Werte von " + pcName + " eingelesen!");
                    }

                    Schau mal ob du damit klar kommst. Bei Fragen einfach fragen ;)
                    
                    Wäre schon fast eine Überlegung wert einen Adapter draus zu machen… ob da mehr oder weniger allgemeines Interesse besteht?
                    
                    Gruß Thilo
                    1 Reply Last reply Reply Quote 0
                    • L
                      Linedancer last edited by

                      da bin ich ja mal ziemlich begeistert. Funktioniert super.

                      Jetzt werde ich mal versuchen den Code zu verstehen.

                      Dank dir

                      1 Reply Last reply Reply Quote 0
                      • L
                        Linedancer last edited by

                        Hallo Thilo,

                        Was noch ganz gut wäre, ist eine Fehler routine falls der Server nicht erreichbar ist. Bei mir bleibt in solchen Fällen der Javascript Adapter stehen.

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

                          @Thisoft:

                          Wäre schon fast eine Überlegung wert einen Adapter draus zu machen… ob da mehr oder weniger allgemeines Interesse besteht? `
                          In dem Falle wäre es evtl eine Überlegung, die Daten per WMI abzufragen, das wäre eine externe Abhängigkeit weniger, die Fehler verursachen kann. Nur so als Denkanstoß.

                          1 Reply Last reply Reply Quote 0
                          • Thisoft
                            Thisoft last edited by

                            @Linedancer:

                            Was noch ganz gut wäre, ist eine Fehler routine falls der Server nicht erreichbar ist. Bei mir bleibt in solchen Fällen der Javascript Adapter stehen. `

                            Oh -ja. Da hast du völlig Recht - mach ich demnächst mal noch…

                            @AlCalzone:

                            In dem Falle wäre es evtl eine Überlegung, die Daten per WMI abzufragen, das wäre eine externe Abhängigkeit weniger, die Fehler verursachen kann. Nur so als Denkanstoß. `

                            Ja - hab ich auch schon nachgedacht. Schon alleine um das Drittprogramm gar nicht erst installieren zu müssen. Allerdings ist mir bisher nicht ganz klar, ob überhaupt und wenn ja wie man aus Javascript WMI ansprechen kann… :?: In .NET ist das für mich als JS-Anfänger kein Problem aber dann hätte man ja wieder ein zusätzliches Tool...

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

                              @Thisoft:

                              man aus Javascript WMI ansprechen kann… :?: In .NET ist das für mich als JS-Anfänger kein Problem aber dann hätte man ja wieder ein zusätzliches Tool... `
                              Da gibts npm Pakete für, wahrscheinlich sogar mit Beschreibung. Das dann in der package.json oder im JS Adapter vermerken und es wird bei der Installation automatisch geladen.

                              Gesendet von iPhone mit Tapatalk

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

                                z.b. hier: https://www.npmjs.com/package/ms-wmic

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                854
                                Online

                                32.0k
                                Users

                                80.5k
                                Topics

                                1.3m
                                Posts

                                3
                                14
                                2067
                                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