Seite 1 von 2
SSD Temperatur nach Influxdb // "_math" Datei
Verfasst: Mo 18. Jul 2022, 13:40
von dremeier
Erfolgreich konnte ich über die "_math" Datei die Temperatur vom Raspi in die Influx schreiben.
Nun möchte ich das gleiche mit der SSD temperatur tun welche sich mit dem "smartmontools" auslesen lässt.
Code: Alles auswählen
pi@solaranzeige:/var/www/html $ sudo smartctl -A /dev/sda
smartctl 7.2 2020-12-30 r5155 [aarch64-linux-5.15.32-v8+] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF SMART DATA SECTION ===
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 44 Celsius
Available Spare: 100%
Available Spare Threshold: 5%
Percentage Used: 0%
Data Units Read: 2.269 [1,16 GB]
Data Units Written: 7.361 [3,76 GB]
Host Read Commands: 76.191
Host Write Commands: 251.458
Controller Busy Time: 0
Power Cycles: 18
Power On Hours: 0
Unsafe Shutdowns: 17
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 50 Celsius
Gibt es eine Möglichkeit die Temperatur in der "_math" zu verarbeiten?
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 14:21
von mdkeil
Code: Alles auswählen
$tempssd=shell_exec('smartctl -A /dev/sda | grep Temperature: | sed /s[^0-9]//g')
Es müsste dann in der Variablen $tempssd deine Temperatur stehen.. den Rest müsstest Du ja selbst hinbekommen.
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 17:04
von dremeier
mdkeil hat geschrieben: ↑Mo 18. Jul 2022, 14:21
Code: Alles auswählen
$tempssd=shell_exec('smartctl -A /dev/sda | grep Temperature: | sed /s[^0-9]//g')
Es müsste dann in der Variablen $tempssd deine Temperatur stehen.. den Rest müsstest Du ja selbst hinbekommen.
Und das trage ich dann mit in die _math Datei ein, oder in der Konsole?
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 17:29
von dremeier
die _math sieht jetzt so aus:
Code: Alles auswählen
#!/usr/bin/php
<?php
// wenn alle ausgelesenen Daten auch in der solaranzeige.log angezeigt werden sollen den Doppelslash (//)entfernen
$funktionen->log_schreiben(print_r($aktuelleDaten,1)," ",1);
//
// Raspberry Temperatur in die Infux Datenbank speichern
// Die Temperatur steckt in der Variable $RaspiTemp
$aktuelleDaten["ZusatzQuery"] = "Service RaspiTemp=".round($RaspiTemp,1);
$aktuelleDaten["ZusatzQuery"] .= " ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["RaspiTemp"] = $RaspiTemp;
//
$aktuelleDaten["ZusatzQuery"] .= "\n";
//
$tempssd=shell_exec('smartctl -A /dev/sda | grep Temperature: | sed /s[^0-9]//g')
$aktuelleDaten["ZusatzQuery"] = "Service RaspiSSDTemp=".round($tempssd,1);
$aktuelleDaten["ZusatzQuery"] .= " ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["RaspiSSDTemp"] = $tempssd;
//Wenn der Wert auch in die LOG Datei geschrieben werden soll.
$funktionen->log_schreiben("Rasperry Temperatur: ".round($RaspiTemp,1)." °C",">",1);
?>
Leider steht nix im log und auch nicht in der DB.
Übrigens:
in der EigeneErweiterungen.pdf steht: ".....Fehler kann man in der LOG Datei /var/www/log/php.log sehen....."
Ich kann diese Datei nicht finden, wo soll die sein?
Was ich habe ist die /var/log/user.log oder /var/www/log/solaranzeige.log
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 18:27
von mdkeil
Du kannst den Befehl am besten erstmal auf command Line versuchen. ohne shell_exec. Ob er das korrekte ausgibt .
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 18:33
von dremeier
mdkeil hat geschrieben: ↑Mo 18. Jul 2022, 18:27
Du kannst den Befehl am besten erstmal auf command Line versuchen. ohne shell_exec. Ob er das korrekte ausgibt .
Code: Alles auswählen
pi@solaranzeige:~ $ $tempssd= smartctl -A /dev/sda | grep Temperature: | sed /s[^0-9]//g
-bash: =: Kommando nicht gefunden.
sed: -e Ausdruck #1, Zeichen 10: Unbekannter Befehl: »/«
klappt wohl nicht !?
so gibt es zumindest keine Fehlermeldung, aber angezeigt wird nix:
sudo $tempssd= smartctl -A /dev/sda | grep "Temperature Sensor" | sed /s[^0-9]/g
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 19:28
von mdkeil
Nur das..
Code: Alles auswählen
smartctl -A /dev/sda | grep Temperature Sensor: | sed /s[^0-9]/g
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 19:44
von dremeier
da passiert nichts
Code: Alles auswählen
pi@solaranzeige:~ $ smartctl -A /dev/sda | grep "Temperature Sensor" | sed /s[^0-9]/g
pi@solaranzeige:~ $
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 21:18
von mdkeil
Ich hatte einen Typo drinnen.. und es muss mit root-rechten ausgeführt werden.
.
sudo smartctl -A /dev/sda | grep Temperature: | sed s/[^0-9]//g
Re: SSD Temperatur nach Influxdb
Verfasst: Mo 18. Jul 2022, 21:46
von dremeier
Ok das funktioniert:
Code: Alles auswählen
pi@solaranzeige:~ $ sudo smartctl -A /dev/sda | grep "Temperature:" | sed s/[^0-9]//g
51
aber hier bekomme ich keine Daten in Grafana oder im Log von: "cat /var/www/log/solaranzeige.log"
Code: Alles auswählen
#!/usr/bin/php
<?php
// wenn alle ausgelesenen Daten auch in der solaranzeige.log angezeigt werden sollen den Doppelslash (//)entfernen
//$funktionen->log_schreiben(print_r($aktuelleDaten,1)," ",1);
//
// Raspberry Temperatur in die Infux Datenbank speichern
// Die Temperatur steckt in der Variable $RaspiTemp
$aktuelleDaten["ZusatzQuery"] = "Service RaspiTemp=".round($RaspiTemp,1);
$aktuelleDaten["ZusatzQuery"] .= " ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["RaspiTemp"] = $RaspiTemp;
//
$aktuelleDaten["ZusatzQuery"] .= "\n";
//
$tempssd=shell_exec('sudo smartctl -A /dev/sda | grep "Temperature:" | sed s/[^0-9]//g')
$aktuelleDaten["ZusatzQuery"] = "Service RaspiSSDTemp=".round($tempssd,1);
$aktuelleDaten["ZusatzQuery"] .= " ".$aktuelleDaten["zentralerTimestamp"];
$aktuelleDaten["RaspiSSDTemp"] = $tempssd;
//Wenn der Wert auch in die LOG Datei geschrieben werden soll.
$funktionen->log_schreiben("Rasperry Temperatur: ".round($RaspiTemp,1)." °C",">",1);
$funktionen->log_schreiben("Rasperry NVME Temperatur: ".round($tempssd,1)." °C",">",1);