Weil in den letzten Tagen das Thema „Temperatur Überwachung der HomeMatic-Zentrale“ wieder häufiger angefragt wurde, möchte ich euch hier ein wirklich einfaches Skript vorstellen, welches im Forum bereits von Alex in Bezug auf eine piVCCU Umgebung erklärt wurde und auch in einem Kommentar von Herbert Grebe hier im Blog. Vielen Dank für diese Anregung und dieser kurze Artikel soll allen Anwendern helfen, die Temperatur auslesen zu können und in eine Systemvariable zu schreiben. Anschließend kann man sich diese Temperatur auf dem WebUI Startbildschirm anzeigen lassen, oder auch via PUSH Nachricht informieren lassen, wenn der Schwellwert überschritten wird. Das Schöne an diesem Skript ist, das es auf einer CCU3, einer piVCCU- oder RaspberryMatic Installation auf einem Raspberry Pi x oder auf einem Tinker Board funktioniert. Lediglich auf der „alten“ CCU2 läuft der Befehl ins Leere.

Umsetzung in drei Schritten

  • Systemvariable anlegen

Als ersten Schritt ist über die WebUi eine Systemvariable vom Typ Zahl mit dem Minimalwert: 0 und dem Maximalwert: 100 anzulegen. Als Maßeinheit ist °C einzutragen. Im nachfolgenden Screenshot seht ihr eine solche Systemvariable:

  • WebUI Programm erstellen

Im zweiten Schritt müsst ihr ein WebUI Programm erstellen. In meinem Beispiel wird dieses Program periodisch alles 10 Minuten ausgeführt. Ihr könnt natürlich auch einen anderen Interval wählen. Um es einfach zu machen, verzichte ich auf den Einsatz des AddOns CUxD. Hier seht ihr das entsprechende Programm:

  • Skript zum Kopieren

Im Letzten Schritt müsst ihr das Skript kopieren und in das WebUI Programm einfügen, damit ihr es nicht abtippen müsst, findet ihr es nachfolgend:

Viel Erfolg und Spass beim Ausprobieren. Ich finde über die aktuelle Temperatur der Zentrale informiert zu sein, ist kein Fehler.

Es gab 2017 von technikkram auch schon mal einen Beitrag zu dem Thema und 2018 auch von Michael Schellenberger, welchen ich bisher nicht kannte. Meine Information kam aus dem Homematic Forum von Alexander Reinert, dem Entwickler von piVCCU. Der wesentliche Unterschied ist, das der Befehl „vcgencmd measure_temp“, welcher in den beiden „älteren“ Beitragen beschrieben wird, nicht im piVCCU funktioniert. Das oben beschriebene Skript dagegen funktioniert auch in piVCCU und nicht nur in RaspberryMatic. Da Michael in seinem Beitrag auf technikkram verweist, möchte ich nicht versäumen, auch seinen Artikel zu verlinken: https://www.schellenberger.biz/raspberrymatic-temperatur-des-raspberry-abfragen/

5 Kommentare
  1. Avatar
    duweistschonwer sagte:

    Könnt Ihr auch eine Version für die Luftfeuchte veröffentlichen?

    Wie warm es ist ist mir Wurst solange nichts einfriert.

    Wenn im Keller die Sachen schimmeln ist es weniger angenehm.

    Antworten
  2. Avatar
    Mathias sagte:

    auf die gefahr hin, daß mein Post wieder mal gelöscht wird, hier ein Skript, bei dem mehrere Abfragen gemaht werden:

    string temp;
    system.Exec(„cat /sys/class/thermal/thermal_zone0/temp | sed ’s/.\{3\}$/.&/'“, &temp);
    if(temp != „“) {
    dom.GetObject(ID_SYSTEM_VARIABLES).Get(„CPU_Temp“).State(temp);
    }
    system.Exec(„cat /proc/loadavg | cut -d‘ ‚ -f-3 | tr -d ‚\n'“, &temp);
    if(temp != „“) {
    dom.GetObject(ID_SYSTEM_VARIABLES).Get(„CPU_Load“).State(temp);
    }
    system.Exec(„free -m | grep Mem: | awk ‚{ printf(\“%.1f\“, $3/$2*100) }'“, &temp);
    if(temp != „“) {
    dom.GetObject(ID_SYSTEM_VARIABLES).Get(„RAM_Usage“).State(temp);
    }
    system.Exec(„awk ‚{s=int($1);d=int(s/86400);h=int(s % 86400/3600);m=int(s % 3600 / 60); printf \“%d days, %02d:%02d\“, d, h, m}‘ /proc/uptime“, &temp);
    if(temp != „“) {
    dom.GetObject(ID_SYSTEM_VARIABLES).Get(„SYS_Uptime“).State(temp);
    }
    system.Exec(„/usr/bin/ntpq -pn | grep ‚*‘ | awk ‚{print $9}'“, &temp);
    if(temp != „“) {
    dom.GetObject(ID_SYSTEM_VARIABLES).Get(„SYS_NTPOffset“).State(temp);
    }

    Es müssen noch folgende Systemvariablen angelegt werden:

    CCU_Temp (Zahl) = Temperatur der CCU
    CPU_Load (Zeichenkette)
    RAM_Usage (Zahl) = Prozent des RAM
    SYS_Uptime (Zeichenkette) =wie lange die RM nun im Betrieb ist
    SYS_NTPOffset (Zahl) = hier wird mit dem NTP-Server die Zeit verglichen, in wie weit die innere Uhr vor- bzw nach geht.

    Antworten
    • Avatar
      Mathias sagte:

      ….bei mir hat sich ein Schreibfehler eingeschlichen!
      Die erste neue Systemvariable muß natürlich CPU_Temp heißen und als Zahl angelegt werden.

      Antworten
  3. Avatar
    JK sagte:

    Hallo, in dem Script müssen in Zeile 4 & durch & ersetzt werden, außerdem gibt es in Zeile 1 einen Schreibfehler: Systemvriable -> da fehlt ein a.
    Sonst funktioniert es einwandfrei!

    Antworten

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere die Speicherung der Daten.