Auf dem Raspberry Pi läuft openHAB. Einmal am Tag bekomme ich per Pushover eine Nachricht mit dem Systemstatus auf das Handy gesandt:
Ups, da ist ja die Systemtemperatur nach dem Komma etwas lang.
Obwohl der Eintrag in der items Datei wie folgt lautet:
1 2 |
// Über ein Script die Systemtemperatur des Raspberry Pis auslesen Number systemTempPi "System Temperatur [%.1f °C]" (System) { exec="<[./configurations/scripts/getSystemTemp.sh:600000:REGEX((.*?))]" } |
Das Script
1 2 3 4 5 6 7 8 9 |
#!/bin/bash # Auslesen der Systemtemperatur des Raspberry Pi via OpenHAB. # # (c) 2016 Thomas Wenzlaff http://www.wenzlaff.info # TEMP=$(cat /sys/class/thermal/thermal_zone0/temp) awk "BEGIN {printf \"%.2f\n\", $TEMP/1000}" |
liefert auch die richtige zweistellige Temperatur. Wo kann die Ursache sein?
Die rules Datei sieht wie folgt aus
1 |
var text = "Systeminfo: Systemlaufzeit: " + uptimeFormatted.state + " Systemtemperatur: " + systemTempPi.state + " ºC. OpenHab Laufzeit: " + openhabUptimeFormatted.state + " Freier Speicher: " + String::format("%.1f", (memFreePercent.state as DecimalType).floatValue()) + " %" |
Ok, da muss der Typ Number in einen richtigen String umgewandelt werden:
1 |
var text = "Systeminfo: Systemlaufzeit: " + uptimeFormatted.state + " Systemtemperatur: " + String::format("%.2f ", (systemTempPi.state as DecimalType).floatValue()) + " ºC. OpenHab Laufzeit: " + openhabUptimeFormatted.state + " Freier Speicher: " + String::format("%.1f", (memFreePercent.state as DecimalType).floatValue()) + " %" |
Dann klappt es auch mit den Nachkommastellen. Hier das ganze Script auf Github.