NEWS
CPU-Temperatur Win-PC in iobroker darstellen
-
ich wollte mal die Temperatur meines Desktop PC (Windows 10) im IoBroker überwachen - falls da jmd interesse hat. ist ein wenig umständlich und könnte für manche pc-hardware nicht funktionieren - evtl auch interessant für iobroker user auf windows
(wahrscheinlich geht das auch mit irgendwelchen powershell commands - hab ich nicht hinbekommen - auch irgendwelche snmp lösungen arbeiteten nicht)
die temperatur der 2 cores wird alle 20 sekunden zum iobroker geschickt
wie funktioniert es:
- das tool "cpu temp" schreibt alle 10 sekunden ein log-file
- in der aufgabenplanung läuft ein batchjob ( nircmd - siehe bild unten ), der folgendes macht
- das logfile wird gelesen und ausgewertet - bei mir mit 2 cores - also 2 datenpunkten im iobroker ( awk )
- dann werden die daten über simple api an iobroker gesendet ( curl )
was braucht man:
-
iobroker mit simpleapi adapter ( im curl befehl des batchfiles wird die ip des iobroker und der port des simpleapi adapters eingetragen )
-
drei externe tools im windows\system32 verzeichnis (curl, awk, nircmd)
-sind im auch im internet erhältlich
-ich habe awk.exe und nircmd.exe in system32 gelegt (man kann aber auch mit der PATH variablen arbeiten
gawk-3.1.6-1-setup.exe
curl-7.62.0-win64-mingw.zip
nircmd-x64.zip -
einen task in windows der das überwachungsprogram (batch script) startet ( trigger :bei rechner start und alle 2 minuten wiederholen )
-rechte auf das installationsverzeichnis von core temp ("program files\core temp") müssen extra vergeben werden ! (ordner mit rechter maus-taste und dann unter sicherheit)
-nircmd verhindert , dass man das batch script in einem "command"-fenster sieht ( wird in aufgabenplanung gebraucht - zum aufrufen des batch files) -
das programm core temp 1.15.1
-setting : alle 10 sekunden in das log file schreiben
-bevor man alles einrichtet, sollte man dieses tool installieren und testen es könnte sein, dass die hareware nicht ausgelesen werden kann
-beim installieren des programms auf den server verzichten (wird abgefragt im setup)
Core-Temp-setup.exe -
das batchfile, welches benötigt wird, um das logfile von core temp auszulesen - dabei wird das log file immer wieder gelöscht - somit kann es auch die platte nicht vollmüllen - das ganze ist so eingestellt, dass im aufgabenplaner eine wiederholung des batches für alle 2 minuten eingestellt werden muss - dieses file liegt bei mir unter c:\batch-files\cputempMessen.cmd - einfach ein txt file öffnen - den code (unten) hineinkopieren - und das file mit der endung .cmd speichern. dieses file wird dann in der aufgabenplanung aufgerufen mit dem nircmd befehl ( nircmd execmd c:\batch-files\cputempMessen.cmd ) . das file kann durch doppelklick zum laufen gebracht werden - um einen ersten test zu starten
rem @echo Started: %date% %time% set /a loop=0 :start set /a loop=%loop%+1 if %loop%== 7 goto GANZRAUS rem goto test1 setlocal enabledelayedexpansion erase "c:\program files\core temp\renamed.txt" /Q erase "c:\program files\core temp\*.csv" /Q timeout /T 19 FOR /F "delims=|" %%I IN ('DIR "c:\program files\core temp\*.csv" /B /O:D') DO SET NewestFile=%%I echo %NewestFile% rem xcopy /f /y /D "c:\program files\core temp\%NewestFile%" \\192.168.178.59\Daten\cpuNucInfo.txt* rename "c:\program files\core temp\%NewestFile%" renamed.txt type "c:\program files\core temp\renamed.txt" | awk.exe -F "," "{print $2}" | for /f "tokens=*" %%f in ('more') do ( curl http://192.168.178.59:8087/set/controll-own.0.FUTRO.CPUTempNUC1?value=%%f ) type "c:\program files\core temp\renamed.txt" | awk.exe -F "," "{print $3}" | for /f "tokens=*" %%f in ('more') do ( curl http://192.168.178.59:8087/set/controll-own.0.FUTRO.CPUTempNUC2?value=%%f ) goto start :GANZRAUS rem @echo Enden: %date% %time% exit
der task in der aufgabenplanung sieht folgendermaßen aus: (hier wird nircmd eingesetzt - damit der task kein command-fenster öffnet)
-
Vielen Dank für die ausführliche Anleitung. Sowas habe ich schon lange gesucht. Muss ich mal in Ruhe ausprobieren ob ich das bei mir zum laufen bring. Weil ich schätze in fünf min ist das nicht erledigt
-
Also....
Core temp läuft und log wird alle 10 Sekunden aktualisiert, simple api Adapter ist installiert und die 3 extra tools sind runtergeladen. Ich habe aber natürlich noch ein paar Fragen:
-
in dem Ordner gawk finde ich die Datei awk.exe nicht. Kannst du mir sagen in welchen Unterordner diese liegt?
-
ich weiß nicht wie man diesen task für die batch Datei in windows erstellt, geschweige davon wie ich die Rechte vom Installationsverzeichnis von core temp extra vergebe. Wäre super wenn du dadrauf noch etwas eingehen könntest...
-
was muss ich bei mir alles in der batch datei anpassen? Die ip mit dem port 8087 ist die vom NUC von dem ich die Core temp auslesen will, richtig?
-
-
werde morgen noch ein wenig dazu schreiben
-
1:
habe das installiert und im ordner, wo es installiert wurde (program files\bin ) liegt es dann - sorry habe falsches file hochgeladen
gawk-3.1.6-1-setup.exe2: rechte - auf den ordner program files\core temp mit rechter maustaste unter sicherheit deinen user nochmal eingeben
3 wird viel zu erklären - sollen wir mal teamviewer machen ? lieber wäre mir anydesk (ähnliches produkt wie temviewer)
-
zu 3:
die ip ist die ip des iobroker servers - der port ist im simpleapi adapter setting eingestellt - auch wenn der rechner mit dem batch , der gleiche rechner wie der iobroker server ist
ich habe den batch nochmal geändert der läuft jetzt in einer schleife - 6 mal - dann bricht er ab - somit muss in der aufgabenplanung eine wiederholung von 2 minuten angegeben werden
das ist dafür, dass wenn der batch mal hängen bleibt, er alle 2 minuten gestartet wird
-
Danke schaue ich mir mal in ruhe heute abend an
-
@saeft_2003 habe oben die beschreibung nochmal etwas verbessert
-
ich probier mal wie weit ich komme. Wenn ich nicht weiter kommen sollte komme ich gerne auf dein Angebot mit anydesk zurück...
-
@saeft_2003 geht klar
-
so ich hab ein wenig weiter rumprobiert und weitere Fragen.
-
Ich glaube ich habe deine batchdatei jetzt ein wenig besser kapiert, aber was genau bedeutet das: \192.168.178.59\Daten\cpuNucInfo.txt* Brauch ich auch diese Textdatei?
-
Wenn ich in core temp das logging aktiviere werden die logs automatisch auf dem desktop gespeichert. Ich habe keine Einstellung gefunden wo man das ändern kann, aber bei dir werden die doch unter c:\program files\core temp\ gespeichert oder? —> hat sich erledigt wird jetzt richtig gespeichert keine Ahnung an was es gelegen hat.
-
Ich habe jetzt eine neue Aufgabe in der Aufgabenplanung erstellt. Schau die dir bitte mal an ob das so passen würde. Sorry für die schlechten Bilder, ging grad nicht anders...
-
-
1 - sorry schreibe rem davor - ist ein überbleibsel von mir - ich wollte zuerst das file auf den iobroker umleiten und dort unter linux bearbeiten, doch dann habe ich es doch unter windows gemacht - habe es oben auch geändert
2- habe das tool nochmal auf einem anderen rechner installiert - die logfiles sind im verzeichnis - weiß nicht, wieso das bei dir anders ist - wenn du das nicht in das verzeichnis bekommst, mußt die pfade auf den desktop umleiten
3 -
fenster 1- wenn der server sich automatisch einloggt ist das ok - sonst unabhängig ... nehmen
fenster 2 - nicht nach zeitplan starten sondern siehe bild
fenster 3 - das nircmd in der 2ten zeile gehört da nicht hin - die geht mit execmd an -
Ok danke. Ich denke das ich heute abend mal die ersten test machen werde...
-
Was jetzt hoffentlich passen sollte:
- Aufgabenplanung habe ich so abgeändert wie du gesagt hast
- batchfile habe ich die ip vom iobroker server angepasst. Ich denke der Rest kann so bleiben?!
- die logs von core temp werden jetzt auch unter c:\program files\core temp gespeichert
- der User hat jetzt Vollzugriff auf den Ordner core temp
Es sind aber noch weitere Fragen aufgetaucht:
- Spielt Groß und Kleinschreibung in der batchfile eine Rolle? Ist c:\program files\core temp gleich C:\Program Files\Core Temp ?
- Die drei Programme awk.exe, nircmd.exe und curl.exe liegen bei mir im Moment noch in Dokumente. Ich gehe im Moment davon aus das es egal ist wo nircmd.exe liegt solange der Pfad in der Aufgabenplanung passt, richtig? Muss ich jetzt noch awk.exe und curl.exe in c:\windows\system32 verschieben? Weil so wie es aussieht werden die von der batchdatei ausgeführt. In dieser steht aber kein Pfad sondern nur "awk.exe"
z.B. type "c:\program files\core temp\renamed.txt" | awk.exe -F "," "{print $2}" | for /f "tokens=*" %%f in ('more') do (
-
zu 2 bei mir sind alle ausser curl im system32
zu 1 - bei windows ist die großschreibung unwichtig - im gegensatz zu linux - daher muss im curl befehl der datenpunkt stimmen (groß-klein)- den du übrigens auch anlegen mußt - unter user_data.0 soll man das ja machenzum testen des ganzen kannst du erstmal einfach einen doppelklick auf den batch machen - und auch im curlbefehl anpassen- um fehler darin zu entdecken füge ein "pause" vor dem exit ein - dann siehst du in der console, wo es hakt
-
ok werde ich morgen testen. Ist es egal wo curl liegt?
-
@saeft_2003 weiß ich ehrlich gesagt nicht- ist so lange her - habe es installiert und dann könnte ich es ausführen - ohne pfad - einfach testen - mit doppelklick auf den batch - dann kommen die fehler von allein ans licht
-
Alles klar. Noch eine Frage zum Datenpunkt anlegen. Ich habe alle selbstangelegten bei mir unter admin. Das sollte so auch gehen, oder? z.B. admin.0.cputempnuc
Sorry für die vielen Fragen
-
natürlich -sollt kein thema sein
-
Wenn ich pause vor exit schreibe bzw selbst wenn ich exit ganz lösche, bleibt kein Fenster offen. An was könnte das liegen?