Temperatur des RaspberryPi loggen

Hallo,

wie kann man denn die Temperatur des RaspberryPi in eine Variable schreiben und loggen?

Aktuell läuft noch ein Shell Script auf dem Raspberry, welches die Temperatur in eine Homematic Variable schreibt.
Da IP Symcon auf dem Raspberry läuft, wollte ich die Temperatur direkt abfragen.

Grüße

Dazu gibt es verschiedene Möglichkeiten, die einfachste (Überwachung des Raspberry Pi (Temperatur, Auslastung etc.)) ist im IPS2GPIO Modul enthalten.

geht auch per skript (hatte TomW) mal gemacht :


<?
$id1 = CreateVariableByName($_IPS['SELF'], "Temperatur", 2);
$id2 = CreateVariableByName($_IPS['SELF'], "Volts", 2);
$id3 = CreateVariableByName($_IPS['SELF'], "Clock", 2);
$id4 = CreateVariableByName($_IPS['SELF'], "freier Speicher", 2);
$id5 = CreateVariableByName($_IPS['SELF'], "MemFree", 2);
SetValue($id1 ,(exec("cat /sys/class/thermal/thermal_zone0/temp "))/1000);
SetValue($id2 ,(float)(substr(exec("vcgencmd measure_volts"),5)));
SetValue($id3 ,(int)((exec("cat  /sys/devices/system/cpu/cpu0//cpufreq/scaling_cur_freq")) / 1000));

//Get the memory info, and grab the cool stuf
$meminfo = file("/proc/meminfo");
for ($i = 0; $i < count($meminfo); $i++) {
        list($item, $data) = explode(":", $meminfo[$i], 2);
        $item = chop($item);
        $data = chop($data);
        if ($item == "MemTotal") { $total_mem =$data;    }
        if ($item == "MemFree") { $free_mem = $data; }
        if ($item == "MemAvailable") { $MemAvailable = $data; }
        if ($item == "SwapTotal") { $total_swap = $data; }
        if ($item == "SwapFree") { $free_swap = $data; }
        if ($item == "Buffers") { $buffer_mem = $data; }
        if ($item == "Cached") { $cache_mem = $data; }
        if ($item == "MemShared") {$shared_mem = $data; }
}
$used_mem = ( $total_mem - $free_mem . ' kB');
$used_swap = ( $total_swap - $free_swap . ' kB' );
$percent_free = round( $free_mem / $total_mem * 100 );
$percent_used = round( $used_mem / $total_mem * 100 );
//$percent_swap = round( ( $total_swap - $free_swap ) / $total_swap * 100 );
//$percent_swap_free = round( $free_swap / $total_swap * 100 );
//$percent_buff = round( $buffer_mem / $total_mem * 100 );
$percent_cach = round( $cache_mem / $total_mem * 100 );
//$percent_shar = round( $shared_mem / $total_mem * 100 );

SetValue($id4 ,(int)$MemAvailable);
SetValue($id5 ,(int)$free_mem);
//var_dump ($MemAvailable);

function CreateVariableByName($id, $name, $type)
{
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
   }
   return $vid;
}

function CreateEventIDByName($id, $name, $type)
{
   $eid = @IPS_GetEventIDByName($name, $id);
   if($eid===false) {
      $eid = IPS_CreateEvent($type);
      IPS_SetParent($eid, $id);
      IPS_SetName($eid, $name);
   }
   return $eid;
}

?>

Hallo,

danke ich werde das Script einmal testen.

Das IPS2GPIO Modul hatte ich auch schon mal versucht, aber damit habe ich Probleme mit dem EnOcean Modul des Raspberry bekommen. Das IPS2GPIO Modul wurde aktiviert und EnOcean hatte dann keine Verbindung mehr.

Grüße

Falls du nicht klar kommts, einfach melden.
Du willst nur die Temperatur, daher könntest du den Rest der VAR’s und abfragen auch löschen.
Wenn man an dem Pi am GPIO noch 1wire Temperatursensoren nutzen möchte, sieht es ähnlich aus.

Hallo,

hat funktioniert. Ich habe das Script angelegt und es läuft fehlerfrei alle 10 Minuten.
Die Temperatur wird protokolliert, sie liegt so bei 47 - 49 °C.

Grüße

Hallo Anubiss,

funktioniert dein Shell Script auch, wenn man eine CCU2 benutzt und IPS auf einem Win Rechner läuft? Wenn ja wäre es nett, wenn du mir das Shell Script zur Verfügung stellen könntest, da ich auf einem Raspberry die Überwachung einer USV und Pi-Hole am Laufen habe.

Gruß
Hans

Hallo,

ja, das funktioniert. IPS hat damit nichts zu tun.

Der Raspberry schreibt die Werte in die Systemvariable der CCU.

Ich suche das Script heute Abend heraus.

Mit freundlichen Grüßen

Gesendet von iPhone mit Tapatalk Pro

Hallo,

ich habe folgendes Script verwendet:

https://homematic-forum.de/forum/viewtopic.php?f=31&t=17718

MfG

Hallo Anubiss,

vielen Dank für deinen Hinweis. Ich werde mir morgen alles mal anschauen.

Gruß
Hans

Danke Tom, immer noch gut!

Er meckert zwar rum:

Line 26 - 33:
Notice: A non well formed numeric value encountered in /var/lib/symcon/scripts/14228.ips.php on line 26
Wie sind denn die Einheiten?
Speicher GB?
Clock MHZ?

lg

Remote geht das ganze mit ssh.
Warum um fünf Ecken arbeiten wenn es IPS direkt kann.

Gesendet von iPhone mit Tapatalk

Hallo mani, könntest du das genau erklären?

Danke

Hi manni!

Wie das…

…funktioniert würde mich jetzt auch interessieren!

Magst Du uns aufklären?

Du kannst die Temperatur der CPU auf dem PI mit

vcgencmd measure_volts

abfragen.

Liefert

temp=45.6'C

Das könntest du auch in einem Script mit IPS_Execute — IP-Symcon :: Automatisierungssoftware oder exec oder system machen, dann das Ergebnis mit etwas „String Magic“ bearbeiten, damit du nur noch den Wert hast und dann in einer Variablen speichern.

oder etwas oversized - aber dennoch gut mittels RPi-Monitor,

der liefert:

und ist auch easy per (json) IPS auswertbar :rolleyes:

z.B. $data = file_get_contents(„http://“.$ip.":".$port."/dynamic.json");

LG Tom

Kann man den Rpi-Monitor nicht einfach im Webfront darstellen?
Der Aufruf erfolgt doch eigentlich über „http://xxx.xxx.xxx.xxx:yyyy“
xxx.xxx.xxx.xxx = IP des Raspberry
yyyy = Port für Rpi-Monitor

Dann müsste man doch eigentlich innerhalb des Webfront eine Darstellung des Rpi-Monitor realisieren können?