Andy home page
Главное меню
Главная
Категории
Статьи
Файлы
Ссылки
Архив
Поиск
Галлерея
Гостевая
Опросы
Сетевой калькулятор
NES Emulator
Музей
Обратная связь

Кто на сайте
Добро пожаловать,
Гость

ВойтиВойти
РегистрацияРегистрация
Забыли Пароль?Забыли Пароль?

Посетителей онлайн
ПользователейПользователей: 0
ГостейГостей: 30
_BOTБотов: 12
ВсегоВсего: 42

Server Time
Время: 14:45:05
Дата: 21/11/24
Календарь
Ссылки

Мониторинг температуры Digitemp+MySql
Напечатать текущую страницу
Linux

Мониторинг температуры Digitemp+MySql



Задача наблюдать за температурой в серверной, на улице и т.д..

Для этого нам понадобится некоторое количество датчиков температуры DS18B20  ( DS1820 ) и адаптер для подключения к COM порту компьютера и Digitemp программа умеет снимать показания с датчиков на  1-Wire шине.

Схема адаптера

или

 

Первая схема имеет ограничение на 10 датчиков.

Диод Шотки 1N5818

 Стабилитрон 1N5228 3.9 V

 Стабилитрон 1N5234 6.2 V

 Резистор 1.5 кОм.

 9 -pin'овый разъем ( для подключения к Com - порту материнской платы )

 

Установка Digitemp:

# cd /usr/local/src
# sudo mkdir digitemp
# cd digitemp
# sudo wget http://andy.od.ua/pub/digitemp/digitemp-3.5.0_mysql.tar
# sudo tar vxf digitemp-3.5.0_mysql.tar
# cd digitemp-3.5.0_mysql
# sudo apt-get install gcc libmysqlclient15-dev
# sudo make ds9097
# sudo mkdir /usr/local/etc/digitemp

 

Переместим скомпилированный файл в директорию /usr/local/etc/digitemp

#sudo mv digitemp_DS9097 /usr/local/etc/digitemp/digitemp_DS9097

теперь создадим файл .digitemprc_mysql в нем будут хранится настройки доступа к базе mysql

# sudo nano /usr/local/etc/digitemp/.digitemprc_mysql

 

вот с таким содержанием

DBNAME digitemp       #Имя базы не больше 32 символов

DBUSER digitemp       #Имя пользователя не больше 16 символов

DBPASS pass           #Пароль не больше 16 символов

DBHOST localhost      #Имя хоста или Ip-адрес не больше 16 символов

DBTABLE digitemp      #Имя таблицы не больше 32 символов

DBCOLUMNS BLANK,TIMESTAMP,SERIAL,TEMPC  #Имена столбцов которые будут записываться в базу

 

Описание DBCOLUMNS:

BLANK – пусто

TIMESTAMP – дата и время

TEMPC – температура в Цельсиях

TEMPF – температура в фаренгейтах

SERIAL – серийный номер датчика

SENSOR – номер датчика

Любой из вышеперечисленных столбцов могут быть указаны в любом порядке и могут быть дублированы

Теперь создадим таблицу куда будут записываться показания датчиков

# mysql –uимя пользователя –pпароль   имя базы < digitemp.sql

содержимое файла  digitemp.sql

CREATE TABLE `digitemp` (
  `dtKey` int(11) NOT NULL AUTO_INCREMENT,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `SerialNumber` varchar(17) COLLATE utf8_unicode_ci NOT NULL,
  `Fahrenheit` decimal(6,2) NOT NULL,
  `Celsus` decimal(6,2) NOT NULL,
  `Sensor` int(3) DEFAULT NULL,
  PRIMARY KEY (`dtKey`),
  KEY `serial_key` (`SerialNumber`),
  KEY `time_key` (`time`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

инициализация датчиков

# cd /usr/local/etc/digitemp

# ./digitemp_DS9097 -i -s /dev/ttyS0   

DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
..
Searching the 1-Wire LAN
28D4B1DD030000FC : DS18B20 Temperature Sensor
284FB4DD03000067 : DS18B20 Temperature Sensor
ROM #0 : 28D4B1DD030000FC
ROM #1 : 284FB4DD03000067
Wrote .digitemprc

Программа нашла два датчика, значит устройство работает.

Теперь можно считать информацию со всех датчиков командой

# ./digitemp_DS9097 -a

DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Sep 04 21:11:57 Sensor 0 C: 21.12 F: 70.03
Sep 04 21:11:58 Sensor 1 C: 29.56 F: 85.21

Теперь можно создать скрипт для крона, он будет проверять, нет ли  новых  датчиков, и записывать в базу

# sudo nano digitemp.sh

содержимое файла

#!/bin/bash
cd /usr/local/etc/digitemp
/usr/local/etc/digitemp/digitemp_DS9097 -i -s /dev/ttyS0 > /dev/null
/usr/local/etc/digitemp/digitemp_DS9097 -q 
 

запись в крон

# sudo nano /etc/crontab

добавить в конец файла Так крон будет каждые пять минуть запускать скрипт

*/5 * * * * root /usr/local/etc/digitemp/digitemp.sh

перезапустить крон

# sudo service cron restart

для отображения показаний в виде графика можно использовать php, скрипт можно взять здесь.


При копировании материалов ссылка на сайт обязательна


Добавлена: 04/09/2012 · Автор: admin

Просмотров: 15622

Оценить:
Social net
Сатьи

Все статьи
Друзья
Сайт skeletora
ОНАПТ
OLD-HARD.RU


Webmaster Andy
Copyright©1998-2014 Odessa


Открытие страницы: 0.23 секунды и 9 запросов к БД
Хостинг
Регистрация домена
free counters