Заметка юзера Gol

Перегрев в серверной.

сервак погода жара железки софт Arduino

Жара на улице не стихает, в серверных начинают барахлить кондиционеры. В старом офисе уже один кондей сдох, в итоге температура в комнате быстренько поднялась до 60 градусов. Врубили второй кондей, которому уж лет пять. Вроде пока справляется, но всё равно стрёмно - вырубиться могёт в любой момент. Починить сломавшийся не получается - фирма-установщик говорит что запись на ремонт возможна только в ноябре ибо заказов у них дофига, не справляются. Другие фирмы отказываются чинить кондиционеры, которые не они ставили. Третьи фирмы не хотят работать с мелкими объёмами. Т.е. 10 кондиционеров заправить/починить - эт они с радостью, а вот ради одного париться не хотят. Короче, придётся пока жить с полудохлым кондеем.

В пятницу вырубился кондиционер в серверной в новом помещении. Врубил второй - через несколько часов и он вырубился. Я там рядышком сижу, так что прекрасно слышно как начинают выть кулера в серваках HP, там достаточно минут на 30 вырубить охлаждение и возможен летальный исход. Как оказалось чуть позже, кондиционеры исправны, вырубился автомат в щитовой.

В общем, со всей серьёзностью встала проблема мониторинга температуры в серверных.

Мониторинг видится так: в комнате стоит некая хрень с температурным датчиком. Хрень эта получает с датчика температуру и каким-то макаром позволяет удалённо эту самую температуру узнать. А в случае превышения заданного порога - сигнализирует мне на мобилу. Ну или ещё куда-нить.

Готовых решений за нормальные деньги не нашёл. Может, плохо искал, а мож и правда нету их, готовых недорогих решений. Так что, как всегда, пришлось свой огород городить.

А нагородил вот что:

Продолжение...


Очень кстати вспомнил про подаренные мне SysCat'ом Ардуины и датчики Dallas 18B20. Датчики эти как раз и есть высокоточные градусники с интерфейсом 1-Wire. То что нужно. Датчики эти можно напрямую к компу подключить, но это гемор и не интересно. Хоцца автономную железяку. Так что будем делать на базе Ардуины.

Подробности пока не буду описывать ибо всё элементарно, а спать хочется. На данный момент температура уже успешно определяется, но затык в отправке данных о температуре на сервак. Ардуина через Ethernet-Shield будет отправлять эти данные на локальный веб-сервачок, где админы смогут её увидеть (график изменения температуры будет). А в случае опасности будет звонить мне на мобилу и голосом материться "шухер, у нас жарко!". Ага, Hylafax и не такое может :-) Плюс к автономности - на Ардуине будет свой веб-сервер, где тоже температуре отображаться будет. На случай если веб-сервак недоступен. Ну и к Ардуине датчиков будет подключено несколько, так как в старом помещении серверная одна, а в новом их две.

Затык в том что Ардуина напрочь отказывается работать с эзернет модулем на базе чипа ENC28J60. Светодиодики весело моргают, а вот коннект не устанавливается. Шылд не родной ардуиновский, но вроде как полностью совместимый (?), так что непонятно в чём затык, уж весь инет перерыл а бестолку.

Так что пока вопрос по этой плате остаётся открытым. Всё, проблема решена. Надо внимательнее мануал читать. Со стандартной либой ethernet.h не пашет, нужна либа etherShield.h Скачать можно на странице с мануалом по шилду, либо тут у меня.

Пока вот проверенный код с робокрафта. Определяет температуру, корректно работает с датчиками DS18S20 и DS18B20.

[code]#include <OneWire.h>

/*
* Получаем температуру от датчиков серии DS18x20
*/

// Поддерживаемые датчики
#define DS18S20_ID 0x10
#define DS18B20_ID 0x28

// Линия 1-Wire будет на pin 2
OneWire ds(2);

void setup(void) {
Serial.begin(9600);
}

void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];

if (!ds.search(addr)) {
ds.reset_search();
return;
}

if (OneWire::crc8( addr, 7) != addr[7]) {
Serial.print("CRC is not valid!\n");
return;
}

if (addr[0] != DS18S20_ID && addr[0] != DS18B20_ID) {
Serial.print("Device is not a DS18x20 family device.\n");
return;
}

ds.reset();
ds.select(addr);

// Запускаем конвертацию
ds.write(0x44, 1);

// Подождем...
delay(1000);

present = ds.reset();
ds.select(addr);

// Считываем ОЗУ датчика
ds.write(0xBE);

// Обрабатываем 9 байт
for ( i = 0; i < 9; i++) {
data[i] = ds.read();
}

// Высчитываем температуру :)
int HighByte, LowByte, TReading, Tc_100, SignBit, Whole, Fract;
LowByte = data[0];
HighByte = data[1];

TReading = (HighByte << 8) + LowByte;

// Проверяем дубак там или нет
SignBit = TReading & 0x8000;

// Если на улице дубак :)
if (SignBit) {
TReading = (TReading ^ 0xffff) + 1;
}

// Умножаем на (100 * 0.0625) или 6.25
Tc_100 = (6 * TReading) + TReading / 4;

// Отделяем целые от дробных чисел
Whole = Tc_100 / 100;
Fract = Tc_100 % 100;

Serial.print("Temperature: ");

// Если на улице дубак напишем минус перед цифрами :)
if (SignBit) {
Serial.print("-");
}

Serial.print(Whole);
Serial.print(".");

if (Fract < 10) {
Serial.print("0");
}

Serial.print(Fract);
Serial.print("\n");
}[/code]

UPD> Сделал на пробу, датчик за окном. Меряем жару на улице в тени.
Копия в ЖЖ Gol      Суббота, 31 Июля, 2010 23:07       6


Добавить комментарий
 

Гость Понедельник, 13 Декабря, 2010 23:39 цитировать ссылка на коммент

Не годится 1-Wire для нормальной работы в серверной. Туфта это. Ставьте нормальные что то то типа http://www.skycontrol.com/ меряет температуру от +100 до -60 . Для России самое то. Ящики под крышей зимой промерзают, летом раскаляются. А эта система пашет.

 

 

Gol Понедельник, 13 Декабря, 2010 23:51 цитировать ссылка на коммент

Ну, у меня "серверная" в обычном офисе, там таких перепадов нет. Если бы были деньги на что-то серьёзное - поставил бы серьёзное. А раз нету - приходится выкручиваться подручными средствами. Тем более что при тестировании функционировало нормально.

 

 

Гость Понедельник, 30 Мая, 2011 16:23 цитировать ссылка на коммент

Снимаю данные с циски. Коряво, но пашет, по snmp сливает куда надо. Дальше система мониторинга присылает в нужном виде алерты.

 

 

Gol Понедельник, 30 Мая, 2011 16:30 цитировать ссылка на коммент

Хорошо когда есть циска :-)

 

 

Гость Среда, 2 Ноября, 2011 17:09 цитировать ссылка на коммент

Вот, я использую в качестве мониторинга температуры с оповещением охраны
http://calcn1.com/blog/linux/11.html
Скрипт которым контролирую
http://calcn1.com/blog/linux/13.html
А тут графики рисую
http://calcn1.com/blog/linux/14.html

 

 

Gol Среда, 2 Ноября, 2011 17:34 цитировать ссылка на коммент

2 Гость:
Дык это к компу подключается, а мне автономное нужно было.

 

Сколько букв в слове Гол?

Вы вошли как Гость      

Сейчас на сайте: 0
и 2 гостей






Страница сгенерирована за 0.0063450336456299 мкс

cached