NEWS
Cpu Werte aus Windows auslesen - halb gelöst
-
Das lässt hoffen, dank die schon mal.
-
Kannst Du auch mit einem Javascript was anfangen? Würde nämlich jetzt ungern erst wieder Node-Red in Betrieb setzen
-
Ich bin zwar mehr der "Blockly Typ" aber Javascript wird schon gehen.
-
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
-
da bin ich ja mal ziemlich begeistert. Funktioniert super.
Jetzt werde ich mal versuchen den Code zu verstehen.
Dank dir
-
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.
-
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ß. -
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…
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...
-
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
-
z.b. hier: https://www.npmjs.com/package/ms-wmic