NEWS
[Gelöst] CPU Temperatur von Proxmox VM
-
@lobomau Hm, bei mir ist der Port der gleiche wie der wo ich den Startscreen von ioBroker finde - der Standard-Port 8082. Dass der Datenpunkt leer ist, ist klar - schließlich kann der info-Adapter keine Werte ermitteln. Du kannst auch selbst einen Datenpunkt unter 'javascript.0' anlegen und den Temperaturwert dorthin schreiben.
-
Der curl Befehl funktioniert bei mir mit dem simpleAPI port. Damit habe ich den Wert auf 99 gestellt.
Das Problem ist der zweite Befehl mit
sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3
->
Command 'sensors' not found, but can be installed with:
sudo apt install lm-sensors
Installation schlägt fehl:
iobroker@iobroker:~$ sudo apt install lm-sensors
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Paket lm-sensors ist nicht verfügbar, wird aber von einem anderen Paket
referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst
wurde oder nur aus einer anderen Quelle verfügbar ist.E: Für Paket »lm-sensors« existiert kein Installationskandidat.
-
@marcuskl Probier doch bitte mal folgendes Skript:
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #ioBroker-IP:Port IPP=192.168.0.195:8081 #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) #an ioBroker senden curl http://${IPP}/set/${DP}?value={$SQL}
Das ist jetzt kürzer und sollte nur einmal den Wert übermitteln. Ich habe ein paar Anmerkungen hinter den Befehlen entfernt - vielleicht liegt es daran? Wenn das klappt, kannst du ja die Wiederholungen hinzufügen.
-
@lobomau Vorher mal
apt-get update
gemacht? Ich habe unter 'root' dann mit
apt-get install lm-sensors
das Paket installiert bekommen.
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@marcuskl Probier doch bitte mal folgendes Skript:
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #ioBroker-IP:Port IPP=192.168.0.195:8081 #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) #an ioBroker senden curl http://${IPP}/set/${DP}?value={$SQL}
Das ist jetzt kürzer und sollte nur einmal den Wert übermitteln. Ich habe ein paar Anmerkungen hinter den Befehlen entfernt - vielleicht liegt es daran? Wenn das klappt, kannst du ja die Wiederholungen hinzufügen.
Immernoch
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Jul 4 21:47:43 2019 from 192.168.0.28 root@pve:~# cd /usr/local/bin root@pve:/usr/local/bin# bash cpu_temp_send_iobroker.sh curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 root@pve:/usr/local/bin#
Stimmt vllt der Pfad nicht ? Oder muss ich was noch Installieren ?
Was heißt der Fehler überhaupt? -
@marcuskl Ich glaube, dass bei dir der Temperaturwert nicht richtig beschnitten wird. Wenn du
sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3
eingibst, bekommst du
49 /A
oder?
Da sollte aber nur
49
stehen (bzw. die gerade aktuelle Temperatur.
Poste doch mal bitte was bei dir
sensors
auswirft. Dann kann man sich herantasten.
Bei mir steht dann:
acpitz-virtual-0 Adapter: Virtual device temp1: +54.0°C (crit = +100.0°C) coretemp-isa-0000 Adapter: ISA adapter Package id 0: +54.0°C (high = +105.0°C, crit = +105.0°C) Core 0: +54.0°C (high = +105.0°C, crit = +105.0°C) Core 1: +54.0°C (high = +105.0°C, crit = +105.0°C) Core 2: +53.0°C (high = +105.0°C, crit = +105.0°C) Core 3: +53.0°C (high = +105.0°C, crit = +105.0°C)
Und die ersten 54 in der Zeile 'temp1:' will ich haben. Wenn das bei dir anders aussieht, muss man die folgenden Befehle anpassen.
Wenn ich das Schritt für Schritt ausführe sieht das z.B. so aus:
root@proxmox:~# sensors | grep 'temp1:' temp1: +51.0°C (crit = +100.0°C) root@proxmox:~# sensors | grep 'temp1:' | awk '{print $2}' +52.0°C root@proxmox:~# sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3 51
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@marcuskl Ich glaube, dass bei dir der Temperaturwert nicht richtig beschnitten wird. Wenn du
sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3
eingibst, bekommst du
49 /A
oder?
Da sollte aber nur
49
stehen (bzw. die gerade aktuelle Temperatur.
Poste doch mal bitte was bei dir
sensors
auswirft. Dann kann man sich herantasten.
Bei mir steht dann:
acpitz-virtual-0 Adapter: Virtual device temp1: +54.0°C (crit = +100.0°C) coretemp-isa-0000 Adapter: ISA adapter Package id 0: +54.0°C (high = +105.0°C, crit = +105.0°C) Core 0: +54.0°C (high = +105.0°C, crit = +105.0°C) Core 1: +54.0°C (high = +105.0°C, crit = +105.0°C) Core 2: +53.0°C (high = +105.0°C, crit = +105.0°C) Core 3: +53.0°C (high = +105.0°C, crit = +105.0°C)
Und die ersten 54 in der Zeile 'temp1:' will ich haben. Wenn das bei dir anders aussieht, muss man die folgenden Befehle anpassen.
Ich habe jz mal curl -g probiert, da gibg es, aber hat es falsch eingesetzt mit einer Klammer davor.
root@pve:/usr/local/bin# bash cpu_temp_send_iobroker.sh {"id":"info.0.sysinfo.cpu.temperature.main","value":"{49","val":"{49"}curl: (3) <url> malformed root@pve:/usr/local/bin# sensors coretemp-isa-0000 Adapter: ISA adapter Package id 0: +49.0°C (high = +105.0°C, crit = +105.0°C) Core 0: +49.0°C (high = +105.0°C, crit = +105.0°C) Core 1: +48.0°C (high = +105.0°C, crit = +105.0°C) Core 2: +47.0°C (high = +105.0°C, crit = +105.0°C) Core 3: +47.0°C (high = +105.0°C, crit = +105.0°C) acpitz-virtual-0 Adapter: Virtual device temp1: +50.0°C (crit = +100.0°C) iwlwifi-virtual-0 Adapter: Virtual device temp1: N/A root@pve:/usr/local/bin#
Hier noch die Daten von den Sensoren
-
@marcuskl Ich habe meinen vorigen Beitrag noch ergänzt. Vielleicht probierst du auch:
root@proxmox:~# sensors | grep 'temp1:' temp1: +51.0°C (crit = +100.0°C) root@proxmox:~# sensors | grep 'temp1:' | awk '{print $2}' +52.0°C root@proxmox:~# sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3 51 root@proxmox:~#
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@marcuskl Ich habe meinen vorigen Beitrag noch ergänzt. Vielleicht probierst du auch:
root@proxmox:~# sensors | grep 'temp1:' temp1: +51.0°C (crit = +100.0°C) root@proxmox:~# sensors | grep 'temp1:' | awk '{print $2}' +52.0°C root@proxmox:~# sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3 51 root@proxmox:~#
root@pve:/usr/local/bin# sensors | grep 'temp1:' temp1: +48.0°C (crit = +100.0°C) temp1: N/A root@pve:/usr/local/bin# sensors | grep 'temp1:' | awk '{print $2}' +49.0°C N/A root@pve:/usr/local/bin# sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3 49 /A
So bei mir
-
@marcuskl sagte in CPU Temperatur von Proxmox VM:
curl -g
Ich glaube ich habe den Fehler gefunden! In der 'curl'-Zeile ist eine Klammer an der falschen Stelle. Versuch mal folgenden Code:
#!/bin/bash #ioBroker-Datenpunkt DP=info.0.sysinfo.cpu.temperature.main #ioBroker-IP:Port IPP=192.168.0.195:8081 #Systemtemperatur abfragen SQL=$(sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3) #an ioBroker senden curl http://${IPP}/set/${DP}?value=${SQL}
Interessant, dass es bei mir trotzdem funktioniert. Bei Aufruf der Bash-Datei erhalte ich:
{"id":"info.0.sysinfo.cpu.temperature.main","value":51,"val":51}
-
@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.
-
@marcuskl sagte in CPU Temperatur von Proxmox VM:
sensors | grep 'temp1:' | awk '{print $2}' | cut -c2-3
wenn du 2 zeilen mit temp1 hast ginge auchsensors | grep 'temp1:' | awk 'NR==1 {print $2}' | cut -c2-3
-
@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.sh
Erstmal 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}'.
-
@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}
-
@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'.
-
Der Cronjob will aber nicht laufen
Habe einfach bei
Crontab -e
*/1 * * * * /usr/local/bin/cpu_temp_send_iobroker.sh
Eingefügt, aber macht nichts.
Vergesse ich irgentwas ? -
So jetzt aber.
Wie ich vorgegangen bin:
- Unter Verzeichnis
cd /usr/local/bin/
gegangen
- Mit Nano Skript angelegt
nano cpu_temp_send_iobroker.sh
Im 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 -e
Ganz unten Zeile eingefügt:
* * * * * bash /usr/local/bin/cpu_temp_send_iobroker.sh
Fertig, Danke an alle für sie Hilfe !!!
-
@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