NEWS
[Gelöst] CPU Temperatur von Proxmox VM
-
@Dr-Bakterius sagte in CPU Temperatur von Proxmox VM:
@marcuskl Okay, sieht ja schon mal gut aus auf der Proxmox-Seite. Was ich noch vergessen hatte: ist in ioBroker der 'simpleAPI Adapter' installiert?
Ok über den Port vom Simple Api Adapter funktioniert der curl befehl.
Hatte de Adapter schon installiert.
Ich habe das Skript auch angepasst, aber es funktioniert immernoch nicht.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 ^Pcurl: (3) [globbing] unmatched brace in column 73 curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 curl: (3) [globbing] unmatched brace in column 73curl: (3) [globbing] unmatched close brace/bracket in column 3 root@pve:/usr/local/bin# bash cpu_temp_send_iobroker.sh
-
@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 !!!