Доброго времени суток. Это моя первая статья на HABR. Вдохновило на написание, великолепная статья «Устройство телеметрии», и заодно ответ на пост «Каким образом у вас поддерживается климат в серверной?».
Работаю я в одном из институтов университета в Ростове‑на‑Дону. Раньше я ни особо задумывался о микроклимате в серверной своего института. Но одна ситуация заставила меня задуматься о контроле температуры в серверной. Однажды внешний блок одного из кондиционеров вышел из строя, что сопровождалось довольно громким хлопком. Дело было летом температура в серверной очень быстро поднялась до 38°C. Включил резервный кондиционер. Но сообщили мне о выходе из строя кондиционера только утром, когда я пришёл на работу. А случилось все ночью. В тот момент я подумал. А ведь не плохо было бы иметь устройство, которое бы контролировало температуру и оповещало бы меня о превышении заданного придела…
Было решено сделать устройство самостоятельно. Разработал схему в EasyEDA, там же развел печатную плату и заказал плату в JLCPCB. Устройство я построил на базе ESP8266 07. Для визуального контроля используется LCD1602.
На данный момент к устройству подключены Датчики температуры DS18B20 в количестве трех штук по шине 1-Wire. И один датчик BMP180 на шине I2C, который, к слову, я планирую заменить на BME280. Измерение атм. давления конечно хорошо, но измерение относительной влажности в серверной, наверное, было бы более полезным.
Далее немного о схеме.
На LM линейный стабилизатор 5->3.3В построено питание микроконтроллера. Дип-переключатель I2CADDR позволяет изменить адрес микросхемы расширителя портов ввода-вывода PCF8574AT через которую к esp8266 подключен дисплей.
a3 | a2 | a1 | Адрес |
0 | 0 | 0 | 0x20 |
0 | 0 | 1 | 0x21 |
0 | 1 | 0 | 0x22 |
0 | 1 | 1 | 0x23 |
1 | 0 | 0 | 0x24 |
1 | 0 | 1 | 0x25 |
1 | 1 | 0 | 0x26 |
1 | 1 | 1 | 0x27 |
Переключатель SW2 отключает подтяжку сигнальных линий I2C. На случай использования готовых датчиков модулей как в моем случае где эти линии уже подтянуты. Переменным резистором VR1 регулируется контрастность дисплея.
Подключение датчиков
Для подключения датчиков я использовал разъемы GX16 на 3 pin для ds18b20 и соответственно GX16 на 4 pin для bmp180 в качестве линии связи был использован обычный сетевой UTP кабель.
Размещение датчиков
Один DS18B20 размещен за передней дверцей коммутационного шкафа. Второй размещен в серверной в области, где нет прямого потока воздуха от системы кондиционирования. Третий размещен на улице. Ну, потому что, а почему бы и нет. Датчик атм. давления и температуры пока размещен в непосредственной близости от устройства измерения. Но планируется убрать его и установить BME280 и вывод его в серверную с целью измерения температуры и влажности. Тогда можно будет избавиться от одного из трех датчиков температуры или разместить его в другом месте шкафа.
Программное обеспечение микроконтроллера ESP8266
Я не программист. Поэтому выбрал для себя самый оптимальный вариант. Для прошивки устройства я использовал конструктор кода wifi-iot.com. Достаточно было создать профиль, выбрать платформу, у меня это esp8266.
Самое интересное здесь это опция Device to Device (D2D) в колонке «Сервисы». Эта опция, позволяет - процитирую из справочного материала проекта. «Обмен данными и управление между модулями по собственному протоколу wifi-iot внутри сети или через облако с возможностью шифрования AES-128.» Дело в том, что у проекта wifi-iot есть свое облако, через которое можно прокинуть показания датчиков или управления реле если они используются в вашем устройстве в «умный дом» Яндекс. Чем, собственно, я и воспользовался.
Далее встал вопрос об удаленном управлении кондиционерами. Как минимум включения. Просто бывает что после сбоя электропитания сплит не хочет стартовать или стартует в режиме обогрева. Такое происходит не всегда, но бывает. Тут выручил меня универсальный пульт управления от Яндекс. Собственно в нем так же стоит чип от Espressif тот же esp8266, ir-приемник, и несколько расположенных по окружности и один в центре ir-светодиодов.
Как понять, что в розетках пропало электричество?
Ну если в шкафу стоит ИБП Smart-UPS RT 3000 XL или похожий по функционалу это вообще не проблема, главное, чтоб он был подключен к серверу по интерфейсу RS232, и установлено соответствующее программное обеспечение. У меня как раз такой ИБП и PowerChuter business. Там можно настроить выполнение командного файла при наступлении какого-либо события. Можно написать BAT файл, который при запуске будет отправлять сообщение в телеграмм бот. Таким образом при наступлении события, когда пропало сетевое питание PowerChuter выполняет соответствующий батник. Тогда мы знаем о том, что напряжение кончилось. Да забыл сказать. Если в друг от этого бесперебойника пропал интерфейсный кабель RG50<->DB9. Можно его сделать с использованием разъема RG45 и DB9. Распиновка для rg45 будет следующая:
RG45 | DB9 | Сигнал |
1 | 2 | TX |
3 | КОРПУС РАЗЪЕМА | Chassis Ground |
6 | 5 | GND |
7 | 3 | RX |
В этой короткой статье я постарался описать как я решал проблему с удаленным контролем микроклимата в серверной комнате. Может это кому-то покажется не интересным, а кому-то может даст почву для собственных идей. Тем не менее я очень надеюсь, что эта информация окажется полезной.