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