NEWS
[Gelöst] CPU Temperatur von Proxmox VM
[Gelöst] CPU Temperatur von Proxmox VM
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@marcuskl Ach ja, du hast ja zwei Zeilen mit "temp1:". Du kannst statt 'temp1:' auch mal 'Package id 0:' versuchen, dann solltest du nur eine Zeile erhalten.
root@pve:/usr/local/bin# bash cpu_temp_send_iobroker.sh {"id":"info.0.sysinfo.cpu.temperature.main","valuroot@pve:/usr/local/bin# bash cpu_temp_send_iobroker.shErstmal mit der Verbesserung funktioniert es auch ohne -g
Aber es ändert jz den wert auf "d" wenn ich package id 0 nehme
@marcuskl Dann nimmt er "d " von "package id 0". Versuch es mit dem Befehl von @liv-in-sky oder mit '{print $4}' statt '{print $2}'.
-
@marcuskl Dann nimmt er "d " von "package id 0". Versuch es mit dem Befehl von @liv-in-sky oder mit '{print $4}' statt '{print $2}'.
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@marcuskl Dann nimmt er "d " von "package id 0". Versuch es mit dem Befehl von @liv-in-sky oder mit '{print $4}' statt '{print $2}'.
root@pve:/usr/local/bin# bash cpu_temp_send_iobroker.sh {"id":"info.0.sysinfo.cpu.temperature.main","value":48,"val":48}root@pve:/usr/local/bin#Ja funktioniert.
Super danke euch!!! -
Für alle nochmal das verbesserte Skript:
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #ioBroker-IP:Port IPP=192.168.0.195:8087 #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) #an ioBroker senden sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} -
Für alle nochmal das verbesserte Skript:
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #ioBroker-IP:Port IPP=192.168.0.195:8087 #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) #an ioBroker senden sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL}@marcuskl Freut mich! Dann markiere den Thread bitte noch als "gelöst".
Und noch was: Du hast den ersten 'curl'-Befehl vergessen. Also direkt vor 'sleep 10'.
-
So jetzt aber.
Wie ich vorgegangen bin:
- Unter Verzeichnis
cd /usr/local/bin/gegangen
- Mit Nano Skript angelegt
nano cpu_temp_send_iobroker.shIm Editor folgenden Skript eingefügt:
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #ioBroker-IP:Port IPP=192.168.0.195:8087 #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) #an ioBroker senden curl http://${IPP}/set/${DP}?value={$SQL} #Sendet alle 10 Sekunden an iobroker sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL}Strg+X gespeichert.
(Achtung!!! Simple API Adapter erforderlich und dann den Port vom Adapter eintragen)Datenpunkt vom Info Adapter zum Schreiben freigegeben
- Getestet mit:
bash /usr/local/bin/cpu_temp_send_iobroker.sh(Ich musste vorher noch Curl installieren)
- Crontab angelegt:
crontab -eGanz unten Zeile eingefügt:
* * * * * bash /usr/local/bin/cpu_temp_send_iobroker.shFertig, Danke an alle für sie Hilfe !!!
-
@Homoran Von dir hätte ich schon erwartet zu wissen was der curl-Befehl macht.

Aber für dich und alle anderen:
Im Proxmox-Host wird per 'sensors' die Temperatur (des NUC) ausgelesen. Weil in der Ausgabe viel mehr als nur die gewünschte Information steht, wird mit 'grep', 'awk' und 'cut' der reine Zahlenwert der aktuellen Systemtemperatur "herausgeschnitten".
Dann wird mit 'curl' der ermittelte Wert an ioBroker gesendet. Dazu braucht man natürlich die IP und den Port von ioBroker. Ob das auch per https:// funktioniert habe ich nicht getestet. Was ich zuvor noch vergessen hatte: unter ioBroker muss man den 'simpleAPI Adapter' installiert haben!
So kann man jeden Datenpunkt von "außen" setzen.
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@Homoran Von dir hätte ich schon erwartet zu wissen was der curl-Befehl macht.
So kann man sich täuschen.
Auch wenn man es nicht merkt (Danke dafür!) , ich bin der Quoten-Noob im Team -
So jetzt aber.
Wie ich vorgegangen bin:
- Unter Verzeichnis
cd /usr/local/bin/gegangen
- Mit Nano Skript angelegt
nano cpu_temp_send_iobroker.shIm Editor folgenden Skript eingefügt:
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #ioBroker-IP:Port IPP=192.168.0.195:8087 #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) #an ioBroker senden curl http://${IPP}/set/${DP}?value={$SQL} #Sendet alle 10 Sekunden an iobroker sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) curl http://${IPP}/set/${DP}?value=${SQL}Strg+X gespeichert.
(Achtung!!! Simple API Adapter erforderlich und dann den Port vom Adapter eintragen)Datenpunkt vom Info Adapter zum Schreiben freigegeben
- Getestet mit:
bash /usr/local/bin/cpu_temp_send_iobroker.sh(Ich musste vorher noch Curl installieren)
- Crontab angelegt:
crontab -eGanz unten Zeile eingefügt:
* * * * * bash /usr/local/bin/cpu_temp_send_iobroker.shFertig, Danke an alle für sie Hilfe !!!
@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Strg+X gespeichert.
(Achtung!!! Simple API Adapter erforderlich und dann den Port vom Adapter eintragen)du hast noch das ausführbar machen für das script vergessen
chmod +x cpu_temp_send_iobroker.sh -
@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Strg+X gespeichert.
(Achtung!!! Simple API Adapter erforderlich und dann den Port vom Adapter eintragen)du hast noch das ausführbar machen für das script vergessen
chmod +x cpu_temp_send_iobroker.sh@liv-in-sky sagte in [Gelöst] CPU Temperatur von Proxmox VM:
@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Strg+X gespeichert.
(Achtung!!! Simple API Adapter erforderlich und dann den Port vom Adapter eintragen)du hast noch das ausführbar machen für das script vergessen
chmod +x cpu_temp_send_iobroker.shDas habe ich aber nicht gemacht.
Wofür ist das ? -
@liv-in-sky sagte in [Gelöst] CPU Temperatur von Proxmox VM:
@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Strg+X gespeichert.
(Achtung!!! Simple API Adapter erforderlich und dann den Port vom Adapter eintragen)du hast noch das ausführbar machen für das script vergessen
chmod +x cpu_temp_send_iobroker.shDas habe ich aber nicht gemacht.
Wofür ist das ?@marcuskl damit wird eine Datei unter Linux "ausführbar"
wenn Du in einem Linux-Verzeichnis den Befehlelseingibst, dann bekommst Du eine Liste der Dateien und Unterverzeichnisse angezeigt
Wenn Du den Befehl allerdings als
ls -laeingibst, dann werden dir auch die "Berechtigungen" (lesen, schreiben, ausführen) angezeigt.
Google mal nach "chmod" oder "Linux chmod"
-
@marcuskl damit wird eine Datei unter Linux "ausführbar"
wenn Du in einem Linux-Verzeichnis den Befehlelseingibst, dann bekommst Du eine Liste der Dateien und Unterverzeichnisse angezeigt
Wenn Du den Befehl allerdings als
ls -laeingibst, dann werden dir auch die "Berechtigungen" (lesen, schreiben, ausführen) angezeigt.
Google mal nach "chmod" oder "Linux chmod"
@BBTown sagte in [Gelöst] CPU Temperatur von Proxmox VM:
@marcuskl damit wird eine Datei unter Linux "ausführbar"
wenn Du in einem Linux-Verzeichnis den Befehlelseingibst, dann bekommst Due eine Liste der Dateien und Unterverzeichnisse angezeigt
Wenn Du den Befehl allerdings als
ls -laeingibst, dann werden dir auch die "Berechtigungen" (lesen, schreiben, ausführen) angezeigt.
Google mal nach "chmod" oder "Linux chmod"
Kann des sein, dass deswegen nicht gleich der Cronjob funktioniert hat ?
Ich habe jz im Cron "Bash" mit in den Cron geschrieben, dann ging es erst. -
@BBTown sagte in [Gelöst] CPU Temperatur von Proxmox VM:
@marcuskl damit wird eine Datei unter Linux "ausführbar"
wenn Du in einem Linux-Verzeichnis den Befehlelseingibst, dann bekommst Due eine Liste der Dateien und Unterverzeichnisse angezeigt
Wenn Du den Befehl allerdings als
ls -laeingibst, dann werden dir auch die "Berechtigungen" (lesen, schreiben, ausführen) angezeigt.
Google mal nach "chmod" oder "Linux chmod"
Kann des sein, dass deswegen nicht gleich der Cronjob funktioniert hat ?
Ich habe jz im Cron "Bash" mit in den Cron geschrieben, dann ging es erst.@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Kann des sein, dass deswegen nicht gleich der Cronjob funktioniert hat ?
Ich habe jz im Cron "Bash" mit in den Cron geschrieben, dann ging es erst. -
@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Kann des sein, dass deswegen nicht gleich der Cronjob funktioniert hat ?
Ich habe jz im Cron "Bash" mit in den Cron geschrieben, dann ging es erst.@BBTown sagte in [Gelöst] CPU Temperatur von Proxmox VM:
@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Kann des sein, dass deswegen nicht gleich der Cronjob funktioniert hat ?
Ich habe jz im Cron "Bash" mit in den Cron geschrieben, dann ging es erst.Ok danke, dass wusste ich nicht.
-
@BBTown sagte in [Gelöst] CPU Temperatur von Proxmox VM:
@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Kann des sein, dass deswegen nicht gleich der Cronjob funktioniert hat ?
Ich habe jz im Cron "Bash" mit in den Cron geschrieben, dann ging es erst.Ok danke, dass wusste ich nicht.
-
@BBTown sagte in [Gelöst] CPU Temperatur von Proxmox VM:
@marcuskl damit wird eine Datei unter Linux "ausführbar"
wenn Du in einem Linux-Verzeichnis den Befehlelseingibst, dann bekommst Due eine Liste der Dateien und Unterverzeichnisse angezeigt
Wenn Du den Befehl allerdings als
ls -laeingibst, dann werden dir auch die "Berechtigungen" (lesen, schreiben, ausführen) angezeigt.
Google mal nach "chmod" oder "Linux chmod"
Kann des sein, dass deswegen nicht gleich der Cronjob funktioniert hat ?
Ich habe jz im Cron "Bash" mit in den Cron geschrieben, dann ging es erst.@marcuskl sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Kann des sein, dass deswegen nicht gleich der Cronjob funktioniert hat ?
Ich habe jz im Cron "Bash" mit in den Cron geschrieben, dann ging es erst.Richtig, entweder das Skript mit Bash aufrufen oder direkt ausführbar machen. Führt beides ans Ziel.
-
Ich habe mir jetzt noch ein Datenpunkt hinzugefügt, das mir die letzte Aktualisierung (Datum und Uhrzeit) anzeigt., damit ich weiß das die Werte Up to Date sind.
Hier das Skript#!/bin/bash #ioBroker-Datenpunkt temperatur DP=info.0.sysinfo.cpu.temperature.main #ioBroker Datenpunkt Zeit DP1=info.0.sysinfo.cpu.temperature.last_change #ioBroker-IP:Port IPP=192.168.0.195:8087 #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) #Zeit abfragen d=`date +%Y-%m-%d@%H:%M` #an ioBroker senden curl http://${IPP}/set/${DP}?value={$SQL} curl http://${IPP}/set/${DP1}?value={$d} #alle 10 sek senden sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) d=`date +%Y-%m-%d@%H:%M` curl http://${IPP}/set/${DP}?value=${SQL} curl http://${IPP}/set/${DP1}?value={$d} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) d=`date +%Y-%m-%d@%H:%M` curl http://${IPP}/set/${DP}?value=${SQL} curl http://${IPP}/set/${DP1}?value={$d} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) d=`date +%Y-%m-%d@%H:%M` curl http://${IPP}/set/${DP}?value=${SQL} curl http://${IPP}/set/${DP1}?value={$d} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) d=`date +%Y-%m-%d@%H:%M` curl http://${IPP}/set/${DP}?value=${SQL} curl http://${IPP}/set/${DP1}?value={$d} sleep 10 SQL=$(sensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3) d=`date +%Y-%m-%d@%H:%M` curl http://${IPP}/set/${DP}?value=${SQL} curl http://${IPP}/set/${DP1}?value={$d} -
Ich bin vor kurzem auf die gleiche Idee gekommen und habe es etwas simpler gelöst, ich poste es mal als alternative Lösung da es vielleicht der ein oder andere brauchen kann.
Per Bashscript führe ich folgenden Befehl 1x pro Minute per Blockly Script aus:
paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) \ | column -s $'\t' -t | sed 's/\(.\)..$/.\1/' | grep x86_pkg_temp | cut -d " " -f3Ausgegeben wird nur der CPU Temperatur Wert vom Host also nicht die Werte der einzelnen Cores, dafür funktioniert der Code ootb, es müssen keine Abhängigkeiten oder Adapter installiert werden.
Der code kann entweder direkt auf dem Proxmox Host, oder innerhalb einer VM/LXC ausgeführt werden, ich führe es auf dem Container vom iobroker aus.
-
@TeNNo2k5 sagte in [Gelöst] CPU Temperatur von Proxmox VM:
paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp)
| column -s $'\t' -t | sed 's/(.)..$/.\1/' | grep x86_pkg_temp | cut -d " " -f3In der VM klappt das bei mir nicht (gibt keine Verzeichnisse 'thermal_zone*'). Im Host funktioniert es aber. Man sieht: viele Wege führen nach Rom. Danke für den Tipp...
-
@TeNNo2k5 sagte in [Gelöst] CPU Temperatur von Proxmox VM:
paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp)
| column -s $'\t' -t | sed 's/(.)..$/.\1/' | grep x86_pkg_temp | cut -d " " -f3In der VM klappt das bei mir nicht (gibt keine Verzeichnisse 'thermal_zone*'). Im Host funktioniert es aber. Man sieht: viele Wege führen nach Rom. Danke für den Tipp...
@Dr-Bakterius sagte in [Gelöst] CPU Temperatur von Proxmox VM:
gibt keine Verzeichnisse 'thermal_zone*
Das ist das Problem!
wenn es die gäbe würde auch der rpi2 Daten bekommen
-
Ich bin vor kurzem auf die gleiche Idee gekommen und habe es etwas simpler gelöst, ich poste es mal als alternative Lösung da es vielleicht der ein oder andere brauchen kann.
Per Bashscript führe ich folgenden Befehl 1x pro Minute per Blockly Script aus:
paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) \ | column -s $'\t' -t | sed 's/\(.\)..$/.\1/' | grep x86_pkg_temp | cut -d " " -f3Ausgegeben wird nur der CPU Temperatur Wert vom Host also nicht die Werte der einzelnen Cores, dafür funktioniert der Code ootb, es müssen keine Abhängigkeiten oder Adapter installiert werden.
Der code kann entweder direkt auf dem Proxmox Host, oder innerhalb einer VM/LXC ausgeführt werden, ich führe es auf dem Container vom iobroker aus.
@TeNNo2k5 sagte in [Gelöst] CPU Temperatur von Proxmox VM:
Ich bin vor kurzem auf die gleiche Idee gekommen und habe es etwas simpler gelöst, ich poste es mal als alternative Lösung da es vielleicht der ein oder andere brauchen kann.
Per Bashscript führe ich folgenden Befehl 1x pro Minute per Blockly Script aus:
paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) \ | column -s $'\t' -t | sed 's/\(.\)..$/.\1/' | grep x86_pkg_temp | cut -d " " -f3Ausgegeben wird nur der CPU Temperatur Wert vom Host also nicht die Werte der einzelnen Cores, dafür funktioniert der Code ootb, es müssen keine Abhängigkeiten oder Adapter installiert werden.
Der code kann entweder direkt auf dem Proxmox Host, oder innerhalb einer VM/LXC ausgeführt werden, ich führe es auf dem Container vom iobroker aus.
Muss dafür auch vorher was installiert werden?! Bei mir ist der Wert leer.


