[gelöst] CPU Temperatur auslesen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
earlybird
Beiträge: 43
Registriert: 28. Dez 2018 22:13
Answers: 0

[gelöst] CPU Temperatur auslesen

Beitrag von earlybird »

Hallo zusammen,
ich habe versucht nach dieser Anleitung:
[https://blog.schmidhuber.org/ueberwachu ... penhab/url]
die Temperatur der Raspberry-Pi-CPU auszulesen und abzubilden.

In der Datei cpu_temp.rules sind in VS-Code alle Zeilen markiert.

Code: Alles auswählen

rule "Health-JSON zu Items"
  when
    Item Health_Json changed
  then
    val cpu = transform("JSONPATH", "$.cpu", Health_Json.state.toString)
    Health_CPU_Temperature.postUpdate( cpu )  
 end 

Als Fehler wird angegeben:
message": "The type Cpu_tempRules is already defined in cpu_temp.rules.",
"startLineNumber": 11, "startColumn": 1, "endLineNumber": 17, "endColumn": 5



Was muss ich ändern damit die Rule funktioniert ?

Mit freundlichem Gruß
Jürgen
Zuletzt geändert von earlybird am 15. Jul 2020 23:16, insgesamt 1-mal geändert.

Pepe1907
Beiträge: 167
Registriert: 1. Jun 2020 17:29
Answers: 2

Re: CPU Temperatur auslesen

Beitrag von Pepe1907 »

Richte alles über PaperUi mit hilfe des System info binding ein. Ist kinderleicht einfsch binding installieren. Dann thing erstellen, dann auf die verknüpften channels dann cpu temp wählen und ein Item erstellen. Dieses Item dann einfach in die Sitemap einfügen.

Gesendet von meinem SM-G981B mit Tapatalk


Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: CPU Temperatur auslesen

Beitrag von peter-pan »

Es gibt verschiedene Möglichkeiten, wie @pepe1907 schon geschrieben hat, die CPU-Temperatur auszulesen und darzustellen. Ich benutze neben der von ihm beschriebenen mit dem System-Binding, auch noch eine Methode mit dem Exec-Binding und eine weitere per MQTT (man kann ja nicht genug haben ;) ).

Die Fehlermeldung zeigt auf eine Zeile 11 in deinem Rule-File hin. Die gibt es aber gar nicht in deinem Rules-File. Wie sieht denn dein ganzes Rule-File (cpu_temp.rules) aus? Die Definition der beiden Items "Health_JSON" und "Health_CPU_Temperature" wäre auch ganz hilfreich. (Die Beschreibung in deinem Link ist für mich etwas schwer verständlich :( ).
Aber ich denke, dass ich den beschriebenen Weg per Exec-Binding (fast) :lol: auch benutze. Welche Version in openHAB benutzt du denn ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
earlybird
Beiträge: 43
Registriert: 28. Dez 2018 22:13
Answers: 0

Re: CPU Temperatur auslesen

Beitrag von earlybird »

Hallo Pepe1907,
herzlichen Dank für deine schnelle Antwort!
Ich habe mir gerade diese Anleitung ausgesucht da in ihr alles über die Dateien konfiguriert wird.
Mit der Paper UI hatte ich schon mal keine "gute" Erfahrung gemacht, daher versuche ich alles über
die Konfigurationsdateien zu erstellen.
Wenn es nicht funktioniert werde ich deinen Vorschlag versuchen umzusetzen.
Mit freundlichem Gruß
Jürgen

Benutzeravatar
earlybird
Beiträge: 43
Registriert: 28. Dez 2018 22:13
Answers: 0

Re: CPU Temperatur auslesen

Beitrag von earlybird »

Hallo peter-pan,
auch Dir herzlichen Dank für deine schnelle Antwort!!
in Zeile 11 beginnt bei mir die Rule mit:

Code: Alles auswählen

rule "Health-JSON zu Items" 
 usw....]
Die Items sehen so aus:

Code: Alles auswählen

String Health_Json "CPU Temperatur [%s]" {channel="exec:command:cpu_temp:output"}
DateTime Health_LastExecution "Zuletzt ausgeführt [%1$td.%1$tm. %1$tH:%1$tM:%1$tS]" {channel="exec:command:cpu_temp:lastexecution"} 
Number Health_CPU_Temperature "CPU Temperatur [%.1f °C]"
Ich benutze openHAB 2.5.5-1 und das

Exec Binding von
Author: Karel Goderis

Kannst Du mit diesen Informationen etwas anfangen?
Mit freundlichem Gruß
Jürgen

heiko74
Beiträge: 14
Registriert: 5. Apr 2019 21:38
Answers: 0

Re: CPU Temperatur auslesen

Beitrag von heiko74 »

Hallo,

hast du dir das https://www.openhab.org/addons/bindings/systeminfo/ schon mal angeschaut. Hiermit kann auch u.v.a. die Temperatur ausgelesen werden. Bei mir funktioniert das über txt-Dateien ohne Probleme.

Benutzeravatar
earlybird
Beiträge: 43
Registriert: 28. Dez 2018 22:13
Answers: 0

Re: CPU Temperatur auslesen

Beitrag von earlybird »

Hallo heiko74 ,
herzlichen Dank für deine Nachricht!
Das liest sich ja wirklich gut. Von diesem Binding hatte ich noch nichts gelesen. Werde es mal versuchen.
Bin allerdings Anfänger und suche immer nach Anleitungen.
Mit freundlichem Gruß
Jürgen

Benutzeravatar
earlybird
Beiträge: 43
Registriert: 28. Dez 2018 22:13
Answers: 0

Re: CPU Temperatur auslesen

Beitrag von earlybird »

Hallo heiko74 ,
Danke!! Für den Tipp. Das funktioniert Super(!) und bringt jede Menge Information ;-)
Mit freundlichem Gruß
Jürgen

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: [gelöst] CPU Temperatur auslesen

Beitrag von peter-pan »

... Super, dass es mit dem System-Binding geklappt hat. Der guten Ordnung halber will ich dir aber auch noch die Möglichkeit mit dem Exec-Binding aufzeigen, wie ich das gelöst habe.
Du brauchst 2 Items,
.items:

Code: Alles auswählen

String CPU_Temp               "OH2_CPU Temp-String EXEC [%s °C]"    <temperature> (gSystem)    { channel="exec:command:cpu_temp:output"}
Number CPU_Temp_num           "CPU-OH2-Pi Temperatur EXEC[%.2f °C]" <temperature> (gSystem)
1 Thing,
.things:

Code: Alles auswählen

Thing exec:command:cpu_temp "OH2-PI Temperatur" @ "Buero" 
                    [command="/bin/bash /etc/openhab2/scripts/cpu_temp.sh", interval=120, timeout=30, transform="REGEX((.*?))"]
1Rule,
.rules:

Code: Alles auswählen

rule "OpenhabPi Temperature String to Number"
  when
    Item CPU_Temp changed
  then
    CPU_Temp_num.postUpdate(Float::parseFloat(String::format("%s",CPU_Temp.state).replace(' ','')))
end
und 1 Shell-Script im scripts-Ordner:
cpu_temp.sh:

Code: Alles auswählen

#!/bin/bash
INPUT=$(/bin/cat /sys/class/thermal/thermal_zone0/temp)
TEMP=$(echo "scale=2; $INPUT / 1000" | bc)
echo $TEMP
Das Shell-Script wird gemäss den Einstellungen im Exec-Thing alle 2 Minuten (interval=120) ausgeführt und übergibt den Temperaturwert an das gebundene Item "String CPU_Temp". Mit der Regel wird dann der Stringwert in einen numerischen Wert umgewandelt.(Exec-Binding liefert nur Strings)

Eine JSON-Transformation, wie in deiner Regel wird hier leider nicht klappen, da kein JSON-String vom Exec-Binding bzw. vom Shell-Script übergeben wird.

Und bitte nicht vergessen, den Befehl "/bin/bash /etc/openhab2/scripts/cpu_temp.sh" in die whitelist einzutragen.

Was die Fehlermeldung in deiner Regel betrifft, denke ich, dass hier ein Fehler in deinem "cpu_temp.rules"-File vorliegt. Der kann z.B. auch eine Zeile weiter vorne liegen und hat wahrscheinlich etwas mit dem String/Variable "Cpu_tempRules" zu tun. Der Fehler kann aber auch in Zeile 18 sein ("startLineNumber": 11, "startColumn": 1, "endLineNumber": 17)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten