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