Synology-Forum.nl

Firmware => Synology DSM algemeen => Topic gestart door: josvanruitenbeek op 08 maart 2012, 13:15:49

Titel: Temperatuur uitlezen in PHP of HTML
Bericht door: josvanruitenbeek op 08 maart 2012, 13:15:49
Weet iemand hoe ik de temperatuur van de interne harde schijf van DS kan uitlezen om deze weer te geven in een PHP of HTML pagina?
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: Sm0ke0ut op 26 maart 2012, 14:54:18
In principe niet. Hiervoor dien je een command uit te voeren vanuit de shell, wat bij Synology standaard niet mogelijk is.

De command voor het opvragen van de temperaturen in shell is als volgt:
/usr/syno/bin/smartctl -d sat -T permissive -l scttempsts /dev/sda

Je kan proberen om de PHP functies voor het uitvoeren van commands aan te zetten of wellicht de makkelijkere manier, een cronjob instellen die eens in de zoveel tijd een bestandje weg schrijft met daarin de informatie. :)
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: wopper op 26 maart 2012, 18:28:34
Allicht kan je een deel gebruiken van mijn cacti how to

http://www.robdehoog.nl/technology/cact ... sks-cacti/ (http://www.robdehoog.nl/technology/cacti-on-a-synology-nas-how-to/smart-monitoring-harddisks-cacti/)
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: josvanruitenbeek op 27 maart 2012, 09:03:34
Dank voor de tips!
Deze cronjobs kan ik ook gebruiken voor een andere vraag van mij: http://www.synology-forum.nl/viewtopic.php?f=30&t=8737.

Ik ga er komende week mee aan het stoeien, kom ik er niet uit dan meld ik me weer.
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: josvanruitenbeek op 27 maart 2012, 21:10:09
Met dank aan het Cronjob script van Wizjos kan ik nu heel eenvoudig cronjobs maken. Alleen weet ik nu niet hoe ik de commandoregel van Sm0ke0ut:
Citaat
/usr/syno/bin/smartctl -d sat -T permissive -l scttempsts /dev/sda

kan gebruiken om de opgehaalde informatie in een XML(?) bestand kan laten plaatsen.
Kan dat met een enkele commandoregel in de cronjob of moet de cronjob een hiertoe aangemaakt script aanroepen? Hier is mijn lunix kennis veeeeel te beperkt voor. Als jullie me nog een eindje op weg kunnen helpen zou ik dat geweldig vinden.

Update:
Ik heb het uitgevogeld en voor elkaar gekregen......!
Resultaat: http://www.hazajon.eu/weer/index.php
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: Plerry op 28 maart 2012, 08:55:54
Citaat van: "josvanruitenbeek"
...Ik heb het uitgevogeld en voor elkaar gekregen......!
Resultaat: http://www.hazajon.eu/weer/index.php
Het klopt toch nog niet helemaal, gezien de melding:
Citaat
Warning: include(servertemp.php): failed to open stream: No such file or directory in /volume1/web/hazajon/weer/index.php on line 35 Warning: include(): Failed opening 'servertemp.php' for inclusion (include_path='.:/usr/syno/php/lib/php') in /volume1/web/hazajon/weer/index.php on line 35
Plerry
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: josvanruitenbeek op 28 maart 2012, 09:07:17
Citaat
Het klopt toch nog niet helemaal, gezien de melding:
Warning: include(servertemp.php): failed to open stream: No such file or directory in /volume1/web/hazajon/weer/index.php on line 35 Warning: include(): Failed opening 'servertemp.php' for inclusion (include_path='.:/usr/syno/php/lib/php') in /volume1/web/hazajon/weer/index.php on line 35

Ik zie het zojuist ook. Gisteravond werkte het perfect, straks na mijn andere bezigheden even controleren.

Update: Ik kon het niet laten, was klein foutje, weer opgelost. http://www.hazajon.eu/weer/index.php
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: josvanruitenbeek op 29 maart 2012, 14:09:46
Voor hen die er gebruik van willen maken mijn werkwijze:

Ten eerste moeten we de temperatuur informatie uit de NAS halen. In een telnet sessie geef je hiervoor het volgende commando (met dank aan Sm0ke0ut):
Citaat
/usr/syno/bin/smartctl -d sat -T permissive -l scttempsts /dev/sda

Dit geeft ons de volgende informatie:
Citaat
smartctl 5.42 2011-10-20 r3458 [armv5tel-linux-2.6.32.12] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net (http://smartmontools.sourceforge.net)

Unable to get testing progress of /dev/sda
=== START OF READ SMART DATA SECTION ===
SCT Status Version: 3
SCT Version (vendor specific): 522 (0x020a)
SCT Support Level: 1
Device State: Active (0)
Current Temperature: 34 Celsius
Power Cycle Min/Max Temperature: 14/41 Celsius
Lifetime Min/Max Temperature: 14/41 Celsius

Met een cronjob kunnen we dit automatiseren en de gegevens opslaan in een bestand. Om cronjobs te maken en te beheren heeft WizJos een perfect script geschreven.
Download, installeer en voer eerst uit: init_3rd_party. Dit vind je op de site van WizJos:
http://wizjos.endofinternet.net/synology/index.php/algemeen/3rd-party-apps/init3rdparty
Vervolgens download en installeer je het cronjobs script:
http://wizjos.endofinternet.net/synology/index.php/scripts/cronjobs
Vreemd genoeg werkt dit script sinds DSM 4.0 (bij mij althans) alleen correct als je op DSM inlogt via je extern IPadres. Dus even 'buitenom gaan'.

Maak in een nieuwe cronjob aan met het volgende commando:
Citaat
/usr/syno/bin/smartctl -d sat -T permissive -l scttempsts /dev/sda> /volume1/....../servertemp.txt
Maak de bestemmingsdirectory compleet met het pad van je keuze. Kies een gebruiker, geef de job een beschrijving (altijd handig om later terug te kunnen zien waar je die job ook al weer voor gemaakt had) en kies een interval voor de job.

Nu willen we de temperatuur weergeven op een webpagina. Hiervoor gebruik ik dit simpele script:

Citaat
<?php>
//Open het bestand op de lokatie waar de cronjob het heeft neergezet
$a = fopen("/...../servertemp.txt","r");
$b = file("/...../servertemp.txt");
$numbers = count($b);
//lees de regels van het bestand

for ($i=0;$i<10;$i++)
{
//print("$b[$i]<br>");
//verwijder bovenstaande slashes om alle regels weer te geven.
}
//lees de temperatuur op regel 9, 11 positie van rechts, twee posities
$temp = substr($b[9], -11, 2);
//toon temperatuur op scherm
echo "Temperatuur van MijnSynology NAS: $temp&#176 C.";
//sluit bestand
fclose($a);

?>

Plezier en succes er mee!
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: zandhaas op 29 maart 2012, 15:31:43
Mooie site!!

Maar als extra zou ik ook de temperatuur van de CPU van de synology bij zetten.
Laatst was die van mij 84 graden celcius. Bleek dat een een laag stof voor de ventilator ingang zat :oops:

Helaas weet ik niet hoe je deze temperatuur op kunt vragen.
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: Nelesss op 29 maart 2012, 15:50:19
Citaat van: "zandhaas"
Mooie site!!

Maar als extra zou ik ook de temperatuur van de CPU van de synology bij zetten.
Laatst was die van mij 84 graden celcius. Bleek dat een een laag stof voor de ventilator ingang zat :oops:

Helaas weet ik niet hoe je deze temperatuur op kunt vragen.

Ik zou is kijken bij Systeeminformatie en dan het groene of rode bolletje! Hou de muis daarop en er komt een temperatuur bij.
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: zandhaas op 29 maart 2012, 16:34:54
Citaat van: "Nelesss"
Ik zou is kijken bij Systeeminformatie en dan het groene of rode bolletje! Hou de muis daarop en er komt een temperatuur bij.

Die ken ik.
Maar niet hoe je die via de command line op kunt vragen om de waarde in bijvoorbeeld een web pagina op te nemen.
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: josvanruitenbeek op 29 maart 2012, 17:18:07
Citaat
Nelesss schreef:
Ik zou is kijken bij Systeeminformatie en dan het groene of rode bolletje! Hou de muis daarop en er komt een temperatuur bij.

IK krijg deze 'ledjes' (groene of rode bolletje) niet eens te zien. Is dat een beperking van mijn instapmodelletje, de DS110J?

Ben ook al op verschillende forums aan het zoeken geweest voor een Lunixcommando om CPU temperatuur uit te lezen. Tot op heden zonder resultaat.
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: Sm0ke0ut op 01 april 2012, 16:55:38
Ik heb zojuist uitgevonden hoe je de CPU temperatuur kunt uitlezen. Ik heb er tevens maar gelijk een klein shell scriptje voor gemaakt, zodat je ook automatisch het gemiddelde hebt.

#!/bin/sh

cores=`cat /proc/cpuinfo | grep -i processor | wc -l`
counter=0

while [ "$counter" -lt "$cores" ]
do
        temperature=$((`cat /sys/class/hwmon/hwmon$counter/device/temp1_input` / 1000))
        total=$(( $total + $temperature ))
        echo `cat /sys/class/hwmon/hwmon$counter/device/temp1_label`: $temperature
        counter=$(( $counter + 1 ))
done
echo Average: $(( $total / $cores ))

Ik hoop dat je er iets mee kan.

Zet de code bijvoorbeeld in het bestand CPUTemp.sh

$ chmod +x CPUTemp.sh
$ ./CPUTemp.sh
Core 0: 54
Core 1: 54
Core 2: 54
Core 3: 54
Average: 54
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: josvanruitenbeek op 02 april 2012, 00:54:19
Geweldig! Dank je Sm0ke0ut!

Maar wellicht kun je me nog iets verder helpen, zodat ik ook weer wat bijleer. Tot nu toe ben ik via telnet wel wat aan het verkennen geweest in mijn NAS, maar tot wijzigingen of aanvullingen ben ik nog niet gekomen. Concreet is mijn vraag aan je: waar in mijn NAS moet ik jouw script plaatsen en hoe doe ik dat? Ik ben al wel wat aan het lezen geweest links en rechts maar helemaal duidelijk is het me nog niet.

Ik hoor het graag.
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: Sm0ke0ut op 02 april 2012, 10:50:07
Login via telnet/ssh

$ wget http://media.fayntic.com/synology/CPUTemp.sh (http://media.fayntic.com/synology/CPUTemp.sh)
$ chmod +x CPUTemp.sh
$ ./CPUTemp.sh
Core 0: 54
Core 1: 54
Core 2: 54
Core 3: 54
Average: 54
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: josvanruitenbeek op 02 april 2012, 11:36:34
Bedankt voor al je moeite Sm0ke0ut. Helaas werkt het niet bij mijn DS110J. De directory
Citaat
/sys/clas/hwmon/
.
kent mijn NAS niet, ik ben bang dat een DS110J geem CPU temperatuur bijhoud. Hopelijk hebben anderen hier wel iets aan.
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: Aanbeeld op 11 april 2012, 23:32:57
Ook bij mijn DS111 werkt het script niet.
Titel: Re: Temperatuur uitlezen in PHP of HTML
Bericht door: MAdD op 20 mei 2012, 13:32:26
als ik cat /proc/cpuinfo run dan krijg ik de het volgende terug:

Processor       : Feroceon 88FR131 rev 1 (v5l)
BogoMIPS        : 1985.74
Features        : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant     : 0x2
CPU part        : 0x131
CPU revision    : 1

Hardware        : Synology 6282 board
Revision        : 0000
Serial          : 0000000000000000

ben dus bang dat een DS212+ ook geen temperatuur van de CPU bijhoudt