===== DS18s20+rrdtool ===== установка_и_настройка_digitemp http://klotik.ru/wiki/doku.php/freebsd:cacti_digitemp В этой части статьи мы научимся структурировано сохранять и визуализировать наши данные. Поможет нам в этом – набор утилит rrdtool.Поехали! # portsnap fetch update # cd /usr/ports/databases/rrdtool # make config Выбираем нужные нам опции, жмем Enter # make install clean # rehash Создаем директорию для хранения базы rrd. # mkdir /var/db/rrdtool Выполняем команду создания нашей базы, команда выполняется в одну строку, символы ” \” являются переносами строк. /usr/local/bin/rrdtool create /var/db/rrdtool/temperature.rrd --step 300 \ DS:temperature:GAUGE:600:U:U \ # последние 48 часов, каждые 5 мин RRA:AVERAGE:0.5:1:576 \ # последние 2 недели, среднее зн. за 30 RRA:AVERAGE:0.5:6:672 \ # последние 2 месяца, средне за каждые 2 часа RRA:AVERAGE:0.5:24:732 \ # последние 2 года, среднее за 12 часов RRA:AVERAGE:0.5:144:1460 Тем самым мы создали нашу базу в /var/db/rrdtool/temperature.rrd с шагом 300(скрипт у нас запускается каждые 5 мин(5мин*60сек=300)), в которой есть один DS (Data Source) с названием temperature, с типом источника GAUGE, который нам больше всего подходит, т.к. может хранить произвольные числа. Так же в DS у нас описаны четыре RRA (round robin archives), по примеру: RRA:функция_консолидации:доля:отсчетов_на_ячейку:число_ячеек. Немного переделываем наш скрипт, который мы писали во второй части статьи. # vi /home/scripts/temperature.sh #!/bin/sh # в переменную $line вставляем текущие значения номер датчика и температуры line=`/usr/local/bin/digitemp_DS9097 -q -a -c /path/.digitemprc` # в переменной $temperature оставляем только значение температуры temperature=`echo $line | awk '{print $2}'` # определяем текущею дату для вывода в лог date=`date "+%d.%m.%Y_%H:%M"` # делаем вывод в лог-файл echo $temperature $date >> /var/log/temperature.log #Наполняем нашу базу /usr/local/bin/rrdtool update /var/db/rrdtool/temperature.rrd N:$temperatere Если скрипт отработал без ошибок, значит Вы все сделали правильно, если нет, то проверьте пути до программ и конфигурационного файла. Теперь попробуем создать график для отображения наших данных. В вышеуказанных примерах, мы использовали утилиту rrdtool с аргументами “create” и “update”. Для создания графиков мы будем использовать rrdtool c аргументом “graph”. Напишем скрипт для генерации графика: # vi /home/scripts/graphcreate.sh #!/bin/sh #Экспортируем нашу локаль, у меня KOI-8, свою локаль Вы можете проверить командой "locale" #без этого на график не получится вывести кириллические символ export LANG=KOI8-R export LC_ALL=ru_RU.KOI8-R #Строим график либо все в одну строку, либо через разделитель " \", комментарии в строке вызовут ошибку rrdtool graph \ /usr/local/www/temperature/test.png \ --width 400 \ --height 250 \ --font TITLE:13 \ --color BACK#444444 \ --color SHADEA#444444 \ --color SHADEB#444444 \ --color CANVAS#444444 \ --color FONT#ff7518 \ --slope-mode \ --start -1d \ --end now \ --units-exponent 0 \ --vertical-label "Температура, C°" \ --title "Температура за сутки" \ --imgformat PNG \ DEF:temperature=/var/db/rrdtool/temperature.rrd:temperature:AVERAGE \ LINE1:temperature#00ff00:"" \ GPRINT:temperature:LAST:"Текущая\:%3.2lfC°" GPRINT:temp_0:AVERAGE:"Средняя\:%3.2lfC°" GPRINT:temp_0:MAX:"Максимальная\:%3.2lfC°" GPRINT:temp_0:MIN:"Минимальная\:%3.2lfC°\j" \ HRULE:0#00ffff # chmod +x /home/scripts/graphcreate.sh Создадим директорию для сохранения файла с графиком # mkdir /usr/local/www/temperature # /home/scripts/graphcreate.sh 466×298 466X298 – это размер созданного .png файла, хотя мы в скрипте описали параметры –widht 400 и –height 250, картинка получается больше из-за дополнительных атрибутов (обозначение оси, титула и т.п.). Вот что у меня получилось Разберем некоторые параметры rrdgraph:\\ –width 400 – Ширина в px\\ –height 250 – Высота в px\\ –font TITLE:13 – Размер шрифта в заголовке\\ –color BACK#444444 – Цвет фона\\ –color SHADEA#444444 – Цвет верхней и левой границы\\ –color SHADEB#444444 – Цвет нижней и привой границы\\ –color CANVAS#444444 – Цвет холста\\ –color FONT#ff7518 – Цвет шрифта\\ –slope-mode – Включить сглаживание\\ –start -1d – За какой период генерировать график, мы указали за сутки\\ –end now – Конец временного интервала графика (т.е. используя время в at-формате или формате Unix мы можем построить график за любой период)\\ –units-exponent 0 – Задаем единицы измерения по оси Y (0 – единицы, 1 – 1000, 2 – 10000 и т.д.) –vertical-label “Температура, C°” – Подпись вертикальной оси\\ –title “Температура за сутки” – Заголовок графика\\ –imgformat PNG – Формат выходного файла .png\\ DEF:temperature=/var/db/rrdtool/temperature.rrd:temperature:AVERAGE – Создаем переменную “temperature” LINE1:temperature#00ff00:”” – Задаем линию графика (толщину 1 и цвет #00ff00), после двоеточия в кавычках можно вписать название, на графике это будет использоваться как легенда GPRINT:temperature:LAST:”Текущая\:%3.2lfC°” – Выводим в подпись температуру, которая может быть: последней, средней, максимальной, минимальной Выведем график с помощью веб-сервера Apache (предполагается, что Apache у вас уже настроен и запущен, все пути в этой статье указывают на дефолтные настройки Apache). Создадим статичную страницу HTML. # vi /usr/local/www/temperature/temperature.html Наша температура

Температура за сутки

Заходим на созданную страницу http://my_domen/temperature/temperature.html, мы должны увидеть примерно следующее: Осталось поместить в crontab расписания запуска нашего скрипта, генерирующего график /home/scripts/graphcreate.sh, либо вызывать его из скрипта получающие данные с температурного датчика или объединить эти скрипты. http://blog.marvins.ru/avtomatizaciya/temperaturnyj-datchik-ds18s20-chast-3.html\\ https://ru.wikibooks.org/wiki/RRDtool#rrdcgi\\ http://dutyadmin.ru/content/rrdtool-teoriya-i-praktika\\ http://www.bog.pp.ru/work/rrdtool.html