Устанавливаем сначала /usr/ports/databases/rrdtool12 Далее создаем базу: rrdtool create /data/rrd/emerson_cond.rrd --start "20120101 00:01" --step 300 DS:TempC:GAUGE:600:0:100 RRA:LAST:0.5:1:210240
Скрипт на PHP для сбора статистики: $go_xml = true; $emerson_file = file_get_contents("http://ИП_адрес_кондиционера/index.html"); try { $xml = new SimpleXMLElement($emerson_file); } catch (Exception $e) { $go_xml = false; } if ($go_xml) { $emerson_temp = $xml->xpath("//Item[@name='LocTemp']/Value"); $emerson_temp = $emerson_temp[0][0]; $cmd = '/usr/local/bin/rrdtool update /data/rrd/emerson_cond.rrd -t TempC N:'.$emerson; exec($cmd); } /************************************************************************************* ** ГЕНЕРИРУЕМ ГРАФИКИ */
$cmd = '/bin/sh /Путь_к_скрипту/buildGraphs.sh'; exec($cmd); Скрипт buildGraphs.sh: /usr/local/bin/rrdtool graph \ /data/www/admin/htdocs/temp/images/graphs/emerson.png \ --title="Emerson temperatures for last day" \ --vertical-label="Temperature, C" \ --width=864 --height=200 --imgformat=PNG \ --color SHADEB#ffffff --color SHADEA#ffffff --color CANVAS#ffffff --color BACK#ffffff --start=-86400 \ --upper-limit=40 --lower-limit=15 \ --rigid \ DEF:TempC=/data/rrd/emerson_cond.rrd:TempC:LAST \ VDEF:TempCcur=TempC,LAST \ VDEF:TempCavg=TempC,AVERAGE \ VDEF:TempCmin=TempC,MINIMUM \ VDEF:TempCmax=TempC,MAXIMUM \ LINE1:TempC#cc3118:"Emerson Network Power" \ GPRINT:TempCcur:"Cur\:%.1lf" \ GPRINT:TempCavg:"Avg\:%.1lf" \ GPRINT:TempCmin:"Min\:%.1lf" \ GPRINT:TempCmax:"Max\:%.1lf\l" \ (Аналогично для week, month, 6 monthes - меняется только --start=-[ 604800 | 2592000 | 15768000 ] и заголовки) |