NEWS

  • Forum Testing Most Active

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


  • @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


  • @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") ?

  • Developer

    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.


  • 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


  • 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:~

  • Most Active

    @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}')


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

    gibt es daran etwas auszusetzen?

  • Most Active

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


  • 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

Suggested Topics

1.9k
Online

38.4k
Users

43.8k
Topics

612.3k
Posts