RRDTool script
Very usefull script for RRDTool. Was copy-pasted from someones blog (can’t recollect the link) – thanks to the author.
#!/bin/bash
# Путь к исполнимому файлу rrdtool
RRDTOOL=/usr/bin/rrdtool# Путь к базе, в которой храниться температура
DATABASE=/usr/local/rrd/space-temperature.rrd# Периодичность поступления данных в базу (сек) – соответственно должен быть настроен CRON
PERIOD=60# Команда для получения текущей температуры с датчика!
SENSOR=`/usr/bin/digitemp_DS9097 -t 0 -s /dev/ttyS0 -q -o “%.2C”`
echo $SENSOR
# Путь к папке, в которой будут лежать изображения с графиками зависимости, каталог web-сервера.
IMAGE_PATH=/var/www/temp# Горизонтальная надпись в заголовке графика
TITLE_TEXT=’Температура’# Горизонтальная надпись в легенде под графиком
UNDER_TEXT=’Статистика температуры’# ========= ШАГ 1. Запись в базу данных полученных значений температуры ======
# Проверяем, присутствует ли вообще база для температуры. Если нет – создаём
if ! [ -f $DATABASE ]
then
$RRDTOOL create $DATABASE -s $PERIOD DS:temperature:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:576 \
RRA:AVERAGE:0.5:6:672 \
RRA:AVERAGE:0.5:24:732 \
RRA:AVERAGE:0.5:144:1460
fi$RRDTOOL update $DATABASE N:$SENSOR
# ============================================================================
# Функция для построения зависимости температуры от времени
function DRAW_GRAPHIC
{# Определяем время, во сколько генерируется график
NOW_HOUR=`date +%H`
NOW_MIN=`date +%M`
NOW_SEC=`date +%S`# На основе параметра 2, переданного функции вычисляем какой комментарий написать
case $2 in
day)
TIME_TEXT=”за последние 24 часа”
;;
week)
TIME_TEXT=”за последнюю неделю”
;;
month)
TIME_TEXT=”за последний месяц”
;;
year)
TIME_TEXT=”за последний год”
;;
esac$RRDTOOL graph $IMAGE_PATH/$1 \
-s -1$2 \
-e now \
-a PNG \
-v ‘градусы Цельсия’ \
-t “$TITLE_TEXT $TIME_TEXT” \
-r \
-E \
-i \
-R light \
–zoom 1 \
-w 500 \
-h 150 \
–font DEFAULT:10:/usr/local/share/rrdtool/fonts/ARIAL8.TTF \
DEF:temperature=$DATABASE:temperature:AVERAGE \
LINE2:temperature#33cc33 \
GPRINT:temperature:LAST:’Текущая\:%2.1lf’\
GPRINT:temperature:MIN:’Мин\:%2.1lf’ \
GPRINT:temperature:MAX:’Макс\:%2.1lf’ \
GPRINT:temperature:AVERAGE:’Средняя\:%4.1lf’
}# ========= ШАГ 2. Отрисовка графиков зависимости температуры от времени ========
DRAW_GRAPHIC ‘temp_d.png’ ‘day’
DRAW_GRAPHIC ‘temp_w.png’ ‘week’
DRAW_GRAPHIC ‘temp_m.png’ ‘month’
DRAW_GRAPHIC ‘temp_y.png’ ‘year’
And index.html for it (with power monitoring; the same script but customized for a power meter):
<html>
<head>
<title>Temperature+Power</title>
</head>
<body bgcolor=’#2E8B57′>
<table><tr>
<td>
<center> <h2><font face=’Arial’>Temperature</font></h2>
</td>
<td>
<center> <h2><font face=’Arial’>Power</font></h2>
</td>
</tr>
<tr>
<td>
<center> <img src=’temp/temp_d.png’> </center><br>
<center> <img src=’temp/temp_w.png’> </center><br>
<center> <img src=’temp/temp_m.png’> </center><br>
<center> <img src=’temp/temp_y.png’> </center><br>
</td>
<td>
<center> <img src=’power/power_d.png’> </center><br>
<center> <img src=’power/power_w.png’> </center><br>
<center> <img src=’power/power_m.png’> </center><br>
<center> <img src=’power/power_y.png’> </center><br>
</td>
</tr></table>
</body>
</html>
Arduino + Energy Monitoring Arduino Uno + Ubuntu + Firmware + command line
Comments are currently closed.