Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] CPU Temperatur von Proxmox VM

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst] CPU Temperatur von Proxmox VM

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      martinschm last edited by

      Bekommt man auch andere Daten wie Prozessorlast (load) raus?

      crunchip 1 Reply Last reply Reply Quote 0
      • crunchip
        crunchip Forum Testing Most Active @martinschm last edited by crunchip

        @martinschm ich habe z.b. Prometheus im Zusammenspiel mit Grafana und InfluxDB laufen. Somit habe ich sämtliche Servermetriken, falls du nach "mehr" suchst.
        Sieht dann so z.b. aus
        Screenshot_20191022-184101_ioBrokervis.jpg
        Hier der Link
        https://prometheus.io/docs/guides/node-exporter/

        M B 2 Replies Last reply Reply Quote 0
        • M
          martinschm @crunchip last edited by

          @crunchip said in [Gelöst] CPU Temperatur von Proxmox VM:

          @martinschm ich habe z.b. Prometheus im Zusammenspiel mit Grafana und InfluxDB laufen. Somit habe ich sämtliche Servermetriken, falls du nach "mehr" suchst.
          Sieht dann so z.b. aus
          Screenshot_20191022-184101_ioBrokervis.jpg
          Hier der Link
          https://prometheus.io/docs/guides/node-exporter/

          Das sieht ja schonmal nett aus. 🙂
          Nur wie komme ich an die Werte ran?

          crunchip 1 Reply Last reply Reply Quote 0
          • crunchip
            crunchip Forum Testing Most Active @martinschm last edited by

            @martinschm wie schon geschrieben...prometheus( node exporter) grafana
            Entweder google oder es gibt auch hier im Forum einen grösseren Beitrag

            1 Reply Last reply Reply Quote 0
            • M
              martinschm @TeNNo2k5 last edited by

              @TeNNo2k5 said 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 " " -f3
              

              Ausgegeben 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.

              Hi,

              hab das Skript auch angelegt und rufe es auch über dein Blockly Skript auf. Leider bekomme ich nur null zurück. Wenn ich den Befehl auf der shell aufrufe bekomme ich einen Wert zurück.

              Müssen da noch irgendwelche Rechte gesetzt werden ?

              ciao
              Martin

              S 1 Reply Last reply Reply Quote 0
              • TeNNo2k5
                TeNNo2k5 @martinschm last edited by TeNNo2k5

                @martinschm sagte in [Gelöst] CPU Temperatur von Proxmox VM:

                Muss man den Code eigentlich in ein Skript (.sh) packen oder kann iobroker den Befehl direkt ausführen?

                Wenn du eine alte iobroker Installation ohne den iobroker User hast geht das, bei der aktuellen Variante nein bzw. eingeschr, ich kenne den genauen technischen Hintergrund nicht aber vemute das die User Shell von iobroker User aus Sicherheitsgründen technisch eingeschränkt ist.

                Edit: Hatte da was verwechselt, grundsätzlich gehen Shell befehle via exec Block, aber dieser Code Schnipsel nicht, vermutlich werden irgendwelche Zeichen anders intepretiert.

                @martinschm sagte in [Gelöst] CPU Temperatur von Proxmox VM:

                @TeNNo2k5 said 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 " " -f3
                

                Ausgegeben 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.

                Hi,

                hab das Skript auch angelegt und rufe es auch über dein Blockly Skript auf. Leider bekomme ich nur null zurück. Wenn ich den Befehl auf der shell aufrufe bekomme ich einen Wert zurück.

                Müssen da noch irgendwelche Rechte gesetzt werden ?

                ciao
                Martin

                exec im Javascript Adapter erlaubt (Instanzen -> javascript.0 -> Erlaube das Kommando "exec") ?

                1 Reply Last reply Reply Quote 0
                • Scrounger
                  Scrounger Developer last edited by

                  Hier noch eine Lösung wenn ihr https aktiviert habt und mit sauberer uri encode (z.B. bei Sonderzeichen im Passwort):

                  #!/bin/bash
                  
                  #ioBroker-Datenpunkt
                  
                  core0Dp=linkeddevices.0.System.Temperatur.Core_0
                  core1Dp=linkeddevices.0.System.Temperatur.Core_1
                  
                  
                  #ioBroker-IP:Port
                  IPP=XXX.XXX.XXX.XXX:XXXX
                  
                  #Zugangsdaten
                  user=XXXXX
                  pw=XXXXXX
                  
                  #an ioBroker senden
                  for((c=1; c<=6; c++))
                  do
                          #Temperaturen abfragen
                          core0=$(sensors | grep 'Core 0:' | awk '{print $3}' | cut -c2-3)
                          core1=$(sensors | grep 'Core 1:' | awk '{print $3}' | cut -c2-3)
                  
                          #an IoBroker mit simple api senden
                          curl --insecure -G https://${IPP}/set/${core0Dp} --data-urlencode user=${user} --data-urlencode pass=${pw} --data-urlencode value=${core0} --data-urlencode "ack=true"
                          curl --insecure -G https://${IPP}/set/${core1Dp} --data-urlencode user=${user} --data-urlencode pass=${pw} --data-urlencode value=${core1} --data-urlencode "ack=true"
                          sleep 10
                  done
                  

                  Sollte ihr ein kein self signed certificate haben, dann könnt ihr --insecure auch weglassen.

                  1 Reply Last reply Reply Quote 2
                  • B
                    Berchemer last edited by Berchemer

                    Danke für die gesamte Vorarbeit, die hier von allen geleistet wurde 👍

                    Ich habe für meinen Geschmack eine etwas andere Variante dieser Ausarbeitung umgesetzt, indem ich den SystemInfo-Adapter, welcher bei mir sowieso mitläuft genutzt habe.

                    Unter folgendem Link steht hier im Forum, wie es im Zusammenhang mit dem Adapter und natürlich installiertem lm-sensors (Installation siehe hier weiter oben) unter Linux geht.

                    https://forum.iobroker.net/post/430091

                    Thomas 18147 1 Reply Last reply Reply Quote 0
                    • Thomas 18147
                      Thomas 18147 @Berchemer last edited by

                      Moin, hab diesen Fehler:

                      Das auslesen des Sensors mittels : sensors | grep Package -m 1 | awk '{print $4}' klappt.
                      In die Datei von Iobroker schreiben mittels: curl "http://192.168.2.187:8087/set/0_userdata.0.cpu?value=66" klappt auch.

                      Aber mit dem Skript kommen diese Fehler.
                      #!/bin/bash

                      var=sensors | grep Package -m 1 | awk '{print $4}'
                      curl "http://192.168.2.187:8087/set/0_userdata.0.cpu?value=$var"

                      root@media:~# var=sensors | grep Package -m 1 | awk '{print $4}'
                      -bash: =sensors: command not found
                      -bash: var: command not found
                      root@media:~# curl "http://192.168.2.187:8087/set/0_userdata.0.cpu?value=$var"
                      {"id":"0_userdata.0.cpu","value":null,"val":null}root@media:~

                      Dr. Bakterius 1 Reply Last reply Reply Quote 0
                      • Dr. Bakterius
                        Dr. Bakterius Most Active @Thomas 18147 last edited by

                        @thomas-reißmann Wenn du eine Ausgabe in eine Variable schreiben möchte sollte das so aussehen: var=$(sensors | grep Package -m 1 | awk '{print $4}')

                        Thomas 18147 1 Reply Last reply Reply Quote 0
                        • Thomas 18147
                          Thomas 18147 @Dr. Bakterius last edited by

                          @dr-bakterius Danke, so scheint es auch zu funktionieren:

                          tempi=sensors | grep Package -m 1 | awk '{print $4}' | awk '{print substr($1, length($0)-6,2)}'

                          gibt es daran etwas auszusetzen?

                          Dr. Bakterius 1 Reply Last reply Reply Quote 0
                          • Dr. Bakterius
                            Dr. Bakterius Most Active @Thomas 18147 last edited by

                            @thomas-reißmann Wenn es funktioniert... 👍

                            1 Reply Last reply Reply Quote 0
                            • opossum
                              opossum last edited by opossum

                              Hallo,
                              ich lese die Coretemperaturen des Proxmox-Servers mittels Script aus. Dazu muss auf dem Proxmox das Paket curl sowie das Paket lm-sensors installiert werden. Die Datenpunkte müssen in iobroker angelegt sein:

                              63d18872-7904-4bf7-812f-c2f2d4113e20-image.png
                              Dann das Script auf den Proxmox kopieren, ausführbar machen und einen Cronjob für den User Root angelegt.
                              Das Script habe ich aus dem Netz, leicht abgewandelt auf meine Gegebenheiten:

                              #!/bin/bash
                              
                              #ioBroker-Datenpunkt
                              
                              DP=javascript.0.System.Temperatur.Core_0
                              DP1=javascript.0.System.Temperatur.Core_1
                              DP2=javascript.0.System.Temperatur.Core_0_last_change
                              DP3=javascript.0.System.Temperatur.Core_1_last_change
                              DP4=javascript.0.System.Temperatur.Core_2
                              DP5=javascript.0.System.Temperatur.Core_3
                              DP6=javascript.0.System.Temperatur.Core_2_last_change
                              DP7=javascript.0.System.Temperatur.Core_3_last_change
                              DP8=javascript.0.System.Temperatur.Core_4
                              DP9=javascript.0.System.Temperatur.Core_5
                              DP10=javascript.0.System.Temperatur.Core_4_last_change
                              DP11=javascript.0.System.Temperatur.Core_5_last_change
                              
                              #ioBroker-IP:Port
                              IPP=192.168.1.100:8087
                              
                              for((c=1; c<=5; c++))
                              
                              do
                              sleep 10
                              SQL=$(sensors | grep 'Core 0:' | awk '{print $3}' | cut -c2-3)
                              d0=`date +%Y-%m-%d@%H:%M`
                              
                              SQL1=$(sensors | grep 'Core 1:' | awk '{print $3}' | cut -c2-3)
                              d1=`date +%Y-%m-%d@%H:%M`
                              
                              SQL2=$(sensors | grep 'Core 2:' | awk '{print $3}' | cut -c2-3)
                              d2=`date +%Y-%m-%d@%H:%M`
                              
                              SQL3=$(sensors | grep 'Core 3:' | awk '{print $3}' | cut -c2-3)
                              d3=`date +%Y-%m-%d@%H:%M`
                              
                              SQL4=$(sensors | grep 'Core 4:' | awk '{print $3}' | cut -c2-3)
                              d4=`date +%Y-%m-%d@%H:%M`
                              
                              SQL5=$(sensors | grep 'Core 5:' | awk '{print $3}' | cut -c2-3)
                              d5=`date +%Y-%m-%d@%H:%M`
                              
                              
                              
                              #an ioBroker senden
                              curl http://${IPP}/set/${DP}?value={$SQL}
                              curl http://${IPP}/set/${DP2}?value={$d0}
                              
                              curl http://${IPP}/set/${DP1}?value={$SQL1}
                              curl http://${IPP}/set/${DP3}?value={$d1}
                              
                              curl http://${IPP}/set/${DP4}?value={$SQL2}
                              curl http://${IPP}/set/${DP6}?value={$d2}
                              
                              curl http://${IPP}/set/${DP5}?value={$SQL3}
                              curl http://${IPP}/set/${DP7}?value={$d3}
                              
                              curl http://${IPP}/set/${DP8}?value={$SQL4}
                              curl http://${IPP}/set/${DP10}?value={$d4}
                              
                              curl http://${IPP}/set/${DP9}?value={$SQL5}
                              curl http://${IPP}/set/${DP11}?value={$d5}
                              done
                              

                              Funktioniert bei mir ohne Probleme, Daten werden in Flot geloggt, und auch auf der VIS angezeigt:
                              0fa8ead8-77e2-4588-a381-a3b883bbd4bc-image.png

                              Cronjob:
                              f422cbf4-8121-4a55-ab9c-d07a30871493-image.png

                              Diagramm:
                              c17e6469-d848-4666-9622-daca5e538287-image.png

                              1 Reply Last reply Reply Quote 3
                              • Henning Hi
                                Henning Hi @marcuskl last edited by

                                @marcuskl
                                Ich habe das nun exakt (nur um meine iobroker-IP und meinen Scriptnamen verändert) wie bei dir hier nachgebaut, habe allerdings das Problem, das bei mir "Connection refused":
                                curl: (7) Failed to connect to 192.168.178.21 port 8087: Connection refused

                                angezeigt wird wenn ich das Script mit
                                bash /usr/local/bin/CPUTemp.sh teste

                                • Simple API installiert und auf Port 8087 eingestellt.
                                • Datenpunkt unter "Objekte" für das Schreiben freigegeben

                                Jemand einen Hinweis woran es liegen könnte?

                                A 1 Reply Last reply Reply Quote 0
                                • A
                                  Ahnungsbefreit @Henning Hi last edited by

                                  @henning-hi & @opossum warum nutzt Ihr nicht einfach den ProxMox Adapter? Der liefert das ohne Aufwand direkt...

                                  Henning Hi 1 Reply Last reply Reply Quote 0
                                  • Henning Hi
                                    Henning Hi @Ahnungsbefreit last edited by

                                    @ahnungsbefreit
                                    Läuft in einer VM auf Nuc in Proxmox.
                                    Habe den Fehler aber gerade gefunden, hatte nicht die IP von ioBroker eingestellt, sondern vom Proxmox-Host 🙂

                                    A 1 Reply Last reply Reply Quote 0
                                    • A
                                      Ahnungsbefreit @Henning Hi last edited by

                                      @henning-hi Ah sorry,Ihr habt natürlich Recht, die CPU Temperatur liefert der Proxmox Adapter nicht, nur CPU Auslastung, memory etc

                                      1 Reply Last reply Reply Quote 1
                                      • K
                                        Kueppert last edited by

                                        Hallo zusammen,
                                        ich hab lm-seonsors installiert und erhalte auch eine Gradzahl:

                                        root@proxmox:~# sensors | grep Package -m 1 | awk '{print $4}'
                                        +56.0°C
                                        

                                        allerdings im DP vom ioBroker hb ich nen Sonderzeichen drin nun:

                                         56.0°C
                                        

                                        die Ausgabe bei Seonsors sieht wie folgt aus:

                                        root@proxmox:~# sensors
                                        acpitz-acpi-0
                                        Adapter: ACPI interface
                                        temp1:        +27.8°C  (crit = +105.0°C)
                                        temp2:        +29.8°C  (crit = +105.0°C)
                                        
                                        coretemp-isa-0000
                                        Adapter: ISA adapter
                                        Package id 0:  +55.0°C  (high = +100.0°C, crit = +100.0°C)
                                        Core 0:        +55.0°C  (high = +100.0°C, crit = +100.0°C)
                                        Core 1:        +54.0°C  (high = +100.0°C, crit = +100.0°C)
                                        

                                        Was muss ich ändern, damit ich ne Zahl erhalte ohne Sonderzeichen im ioBroker-state?

                                        Danke euch und vG, Thorsten

                                        crunchip 1 Reply Last reply Reply Quote 0
                                        • crunchip
                                          crunchip Forum Testing Most Active @Kueppert last edited by

                                          @kueppert sagte in [Gelöst] CPU Temperatur von Proxmox VM:

                                          Was muss ich ändern, damit ich ne Zahl erhalte ohne Sonderzeichen im ioBroker-state?

                                          ich habe diesen Befehl

                                          sensors | grep Package -m 1 | awk '{print $4}' | awk '{print substr($1, length($0)-6,2)}'
                                          
                                          K 1 Reply Last reply Reply Quote 0
                                          • K
                                            Kueppert @crunchip last edited by

                                            @crunchip sagte in [Gelöst] CPU Temperatur von Proxmox VM:

                                            sensors | grep Package -m 1 | awk '{print $4}' | awk '{print substr($1, length($0)-6,2)}'

                                            super, das wars 🙂 thx

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            983
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly javascript monitoring
                                            31
                                            129
                                            19614
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo