Примеры применения
28.03.2018

NetPing в качестве блока ротаций кондиционеров в серверной комнате

NetPing в качестве блока ротаций кондиционеров в серверной комнате

Блок ротации кондиционеров предназначен для обеспечения режима чередования работы двух кондиционеров с заданным периодом времени и обеспечения нормального температурного режима помещения при различных климатических условиях.

Применение блока управления кондиционерами позволяет равномерно расходовать ресурс основного и резервного кондиционеров, периодически меняя их роли, а также автоматически вводит резервный кондиционер при отказе или недостатке мощности основного. 

Как правило, резервирование и ротация применяются в помещениях, где необходимо поддерживать максимально допустимую температуру, например, в серверных комнатах с большим количеством дорогостоящего оборудования. Необходимым условием реализации схемы резервирования является достаточность мощности одного из двух кондиционеров для поддержания рабочих климатических условий. То есть один кондиционер работает, другой находится в резерве. 

Применение блока ротации кондиционеров позволит Вам обеспечить уверенность в работе системы кондиционирования Вашей инфраструктуры!

В этой статье мы рассмотрим пример создания блока ротации кондиционеров для серверной комнаты на базе устройств NetPing.

Серверная комната оборудована двумя кондиционерами. Необходимо реализовать следующий алгоритм работы:

  1. Штатный режим работы кондиционеров. В этом режиме кондиционеры работают по схеме чередования (два кондиционера автоматически включаются поочередно: первые сутки работает первый кондиционер, вторые сутки работает второй кондиционер, третьи сутки работает первый кондиционер и так далее);
  2. Аварийный режим работы кондиционеров. Если один из кондиционеров выходит из строя, и температура поднимается выше 35°C, следует задействовать резервный кондиционер, который должен работать до тех пор, пока не будет исправлен основной кондиционер.

Для реализации блока ротации нам потребуется следующий комплект оборудования:

Считаем, что устройства UniPing server solution v3 настроены на работу в вашей локальной сети, и ИК-модули IRC-TR v2, датчики воздушного потока и датчики температуры 1-wire подключены. Подробнее с настройками устройства можно ознакомиться здесь. Также считаем, что устройства UniPing server solution v3 настроены на управление кондиционером. Правила настройки можно прочитать здесь и здесь.

В нашей статье будем использовать следующие параметры устройств:

Параметр

Устройство UniPing server solution v3 №1

Устройство UniPing server solution v3 №2

IP адрес

192.168.1.200

192.168.1.208

Логин

visor

visor

Пароль

ping

ping

Подключенный термодатчик

1

1

IO линия с подключенным датчиком потока воздуха

IO 1

IO 1

Номер команды включения кондиционера

2

2

Номер команды выключения кондиционера

3

3

Для реализации программной составляющей нашего блока ротации кондиционеров напишем скрипт на скриптовом языке программирования BASH. Скрипт будет выполняться в консоли на ПК/сервере с OS Ubuntu. ПК/сервер может быть как виртуальный, так и физический, подключённый к одной локальной сети с устройствами UniPing server solution v3. Управляющий скрипт также можно запустить и на компьютере за пределами локальной сети, в таком случае, устройства UniPing server solution v3 должны быть доступны через Интернет. О том, как это сделать, можно прочитать здесь 

Для работы скрипта нужно установить утилиту Curl командой «sudo apt install curl»)

Установка CURL

Затем создаём файл скрипта split_rotation.sh командой «nano split_rotation.sh»

Создание файла скрипта

Далее пишем текст скрипта, как в примере (ниже будет ссылка на готовый файл скрипта):

#!/bin/bash

error_t=$"thermo_result('error');"
error_io=$"io_result('error');"
error_ir=$"ir_result('error');"
split1_status=0 #Переменная, в которую записывается статус работы кондиционера №1. 0- ок, 1 - сбой
split2_status=0 #Переменная, в которую записывается статус работы кондиционера №2. 0- ок, 1 - сбой

while [ $split1_status -eq 0 ] || [ $split2_status -eq 0 ]
do
count1=0 # Счетчик часов работы кондиционера 1
count2=0 # Счетчик часов работы кондиционера 2

#Включаем кондиционер1:
ir1=$(curl --silent --user visor:ping http://192.168.1.200/ir.cgi?play=2) #Подставьте свои значения login:password, IP адрес устройства 1 и номер команды включения кондиционера №1
ir2=$(curl --silent --user visor:ping http://192.168.1.208/ir.cgi?play=3) #Подставьте свои значения login:password, IP адрес устройства 2 и номер команды выключения кондиционера №2
#Проверка правильности синтаксиса URL-encoded команды от сервера к устройству UniPing Server Solution v3/SMS
if [ "$ir1" = "$error_ir" ] || [ "$ir2" = "$error_ir" ]
then
echo "Ошибка в URL-encoded команде включения кондиционера №1"
exit
else
echo "Включен кондиционер №1"
sleep 5m #Пауза для получения термодатчиком данных о температуре
while [ $count1 -lt 23 ]
do
#Url-encoded запросы к устройству UniPing Server Solution v3/SMS 1 для получения информации о температуре и наличии потока воздуха:
thermo1=$(curl --silent --user visor:ping http://192.168.1.200/thermo.cgi?t1) #Подставьте свои значения login:password, IP адрес устройства 1 и номер термодатчика
io1=$(curl --silent --user visor:ping http://192.168.1.200/io.cgi?io1) #Подставьте свои значения login:password, IP адрес устройства 2 и номер IO линии, к которой подключен датчик потока воздуха.
#Проверка правильности синтаксиса URL-encoded запроса от сервера к устройству UniPing Server Solution v3/SMS
if [ "$thermo1" = "$error_t" ]||[ "$io1" = "$error_io" ]
then
echo "Ошибка в URL-encoded запросе состояния кондиционера №1"
exit
else #Проверка условия штатной работы кондиционера 1
thermo1_value=${thermo1:20:2} #Получение информации о температуре возле кондиционера 1
io1_value=${io1:20:1} #Получение информации о наличии потока воздуха от кондиционера 1
if [ $thermo1_value -le 35 ] && [ $io1_value -eq 1 ]
then #Штатный режим
sleep 1h #Пауза между проверками 1 час
((count1 ++ ))
split1_status=0
else #Аварийный режим
echo "Кондиционер 1 Аварийный режим!"
echo "Температура выше нормы или нет потока воздуха"
count1=25
split1_status=1
fi
fi
done
fi

#Включаем кондиционер2:
ir1=$(curl --silent --user visor:ping http://192.168.1.200/ir.cgi?play=3) #Подставьте свои значения login:password, IP адрес устройства и номер команды
ir2=$(curl --silent --user visor:ping http://192.168.1.208/ir.cgi?play=2) #Подставьте свои значения login:password, IP адрес устройства и номер команды
#Проверка правильности синтаксиса URL-encoded команды от сервера к устройству UniPing Server Solution v3/SMS
if [ "$ir1" = "$error_ir" ] || [ "$ir2" = "$error_ir" ]
then
echo "Ошибка в URL-encoded команде включения кондиционера №2"
exit
else
echo "Включен кондиционер №2"
sleep 5m #Пауза для получения термодатчиком данных о температуре
while [ $count2 -lt 23 ]
do
#Url-encoded запросы к устройству UniPing Server Solution v3/SMS 2 для получения информации о температуре и наличии потока воздуха:
thermo2=$(curl --silent --user visor:ping http://192.168.1.208/thermo.cgi?t1) #Подставьте свои значения login:password, IP адрес устройства и номер термодатчика
io2=$(curl --silent --user visor:ping http://192.168.1.208/io.cgi?io1) #Подставьте свои значения login:password, IP адрес устройства и номер IO линии, к которой подключен датчик потока воздуха.
#Проверка правильности синтаксиса URL-encoded запроса от сервера к устройству UniPing Server Solution v3/SMS
if [ "$thermo2" = "$error_t" ]||[ "$io2" = "$error_io" ]
then
echo "Ошибка в URL-encoded запросе состояния кондиционера №2"
exit
else #Проверка условия штатной работы кондиционера 2
thermo2_value=${thermo2:20:2} #Получение информации о температуре возле кондиционера 2
io2_value=${io2:20:1} #Получение информации о наличии потока воздуха от кондиционера 2
if [ $thermo2_value -le 35 ] && [ $io2_value -eq 1 ]
then #Штатный режим
sleep 1h #Пауза между проверками 1 час
((count2 ++ ))
split2_status=0
else #Аварийный режим
echo "Кондиционер 2 Аварийный режим!"
echo "Температура выше нормы или нет потока воздуха"
count2=25
split2_status=1
fi
fi
done
fi
done
echo "Кондиционеры в серверной не работают"

Сохраняем и делаем файл исполняемым при помощи команды «sudo chmod +x split_rotation.sh»:

Смена прав на скрипт

Затем запускаем наш скрипт командой «./split_rotation.sh»:

Запуск скрипта

И, если исходный код скрипта не содержит синтаксических ошибок, то в консоли будет отображено сообщение о включении кондиционера №1:

Включен кондиционер 1

Через 24 часа после запуска скрипта, кондиционер №1 будет выключен и включён кондиционер №2:

Включен кондиционер 2

Еще через 24 часа – кондиционер №2 будет выключен и снова включён кондиционер №1. В штатном режиме скрипт будет выполняться бесконечно (при условии работы сервера). Прервать выполнение можно нажатием кнопок «CTRL+C»:

Ручная остановка скрипта

Контроль температуры возле кондиционеров происходит 1 раз в час. Если при очередном опросе датчиков у работающего в текущий момент кондиционера температура превышает 35°C, и/или датчик воздушного потока воздуха не фиксирует наличие потока воздуха – то скрипт активирует «Аварийный режим» и включает другой кондиционер. При этом в консоль выдается следующее сообщение:

Кондиционер 1 Аварийный режим

Или

Кондиционер 2 Аварийный режим

При этом скрипт, через 24 часа после переключения на другой кондиционер снова попробует включить аварийный кондиционер и запросить значения температуры и состояние датчика воздушного потока. Если проверка этих значений пройдет успешно, то скрипт переходит в штатный режим работы.

В случае, если оба кондиционера окажутся неисправны, скрипт выдаст в консоль сообщение об этом и завершится:

Не исправны оба кондиционера

После устранения неполадок кондиционеров скрипт следует запустить вручную.

В скрипт встроена проверка корректности URL-encoded запросов к устройствам UniPing server solution v3.

В случае некорректных запросов выводится сообщение об ошибке в URL-encoded команде, и выполнение скрипта прекращается. После исправления команд в исходном коде скрипта, скрипт нужно запустить повторно:

Пример сообщений об ошибке в URL encoded командах

Для того, чтобы наш скрипт автоматически запускался при запуске ПК/сервера, нужно прописать его в автозагрузку. Для этого откройте файл rc.local командой: «sudo nano /etc/rc.local»:

Открытие файл rc.local

Пропишите скрипт перед строчкой «exit 0» и сохраните файл:

Общий вид файла rc.local

Скрипт выполнится после загрузки системы.

Готовый файл скрипта можно скачать здесь: split_rotation.sh.

В результате всех вышеперечисленных действий мы получим блок ротации кондиционеров, реализованный на основе устройств и датчиков компании NetPing.


  • Устройство UniPing server solution v3/SMS
  • Устройство UniPing server solution v3
  • Устройство UniPing v3
  • Устройство NetPing 8/PWR-220 v3/SMS
  • Устройство NetPing 2/PWR-220 v2/SMS
  • Устройство NetPing 2/PWR-220 v3/ETH

Основные теги


Каталог устойств мониторинг серверных комнат и шкафов
Все устройства
Устройство UniPing v3
Устройство UniPing server solution v3/SMS
Устройство NetPing 2/PWR-220 v1/SMS
Устройство NetPing IO v2
Устройства NetPing
Каталог датчиков для устройств NetPing
Устройство NetPing 8/PWR-220 v3/SMS
Устройство NetPing 2/PWR-220 v3/ETH
Устройство NetPing 2/PWR-220 v2/SMS
Устройство NetPing 4/PWR-220 v3/SMS
Устройство NetPing SMS
Устройство NetPing /PWR-220 v3/ETH
Адаптер WiFi VAP11N
Коммутатор PS104GT
Устройство NetPing Mini-UPS
Коммутатор NP-SM4
Сплиттер POE 12В (стандарта 802.3af)
IRC-TR v2 (ИК модуль расширения)
Каталог устройств удалённого управления и распределения электропитания NetPing
Устройство UniPing server solution
Устройство UniPing server solution v3
Датчик разбития стекла (Стекло-3 ИО 329-4), 2м
Переходник для NetPing IO v2
Устройство NetPing PWR68-01
Датчик мониторинга 220В 1-wire
Адаптер DKST910.8
Устройство NetPing DKST61-01
Блок питания 48В 1,5А (мод.HRS20005)
Датчик температуры TS, 1м
Датчик температуры, (T811), 2м
Датчик температуры WT, 1м
Датчик протечки, модель 2605, 2м
Датчик протечки H2О
Датчик температуры 1-wire, (THS), 2м
МАЯК-12-СТ
Датчик движения (PYRONIX COLT QUAD PI ПИК детектор), 2м
Датчик движения (SWAN-QUAD ИК детектор квадросенсор), (2м)
BM8070D Силовое реле 16А/250В на DIN-рейку
MP701 Исполнительный элемент (4 независимых канала по 2 кВт 10А)
Датчик дыма комбинированный (дым/тепло) ИП 212/101-2М-A1R с базой Е412NL
МОЛЛЮСК-12/1,5
Внешний ИБП SKAT-12DC-1.0 Li-ion
ИКС-1 извещатель охранный инфракрасный активный однолучевой
Датчик охранный (Извещатель охранный ИО102-20/Б2П, 2м)
▼ Все теги
Новинки
Блок розеток SNR-PDU-08S-1
Блок розеток SNR-PDU-08S-1 предназначен для подключения различного оборудования к сети с напряжением подробнее...

Цена: 3 236 руб.

Датчик воздушного потока (модель АМС520)
Датчик воздушного потока позволяет контролировать наличие или отсутствие напора воздушного потока. Содержит подробнее...

Цена: 2 587 руб.

ИКС-1 извещатель охранный инфракрасный активный однолучевой
Извещатель предназначен для регистрации пересечения нарушителями контролируемой зоны, образованной оптическим подробнее...

Цена: 3 854 руб.

Внешний ИБП SKAT-12DC-1.0 Li-ion
Малогабаритный источник бесперебойного питания (ИБП) со встроенной Li-Ion АКБ. Для питания устройств подробнее...

Цена: 3 200 руб.

МОЛЛЮСК-12/1,5
Малогабаритный блок питания с выходным напряжением 12 В. Имеет уникальный корпус, который позволяет подробнее...

Цена: 950 руб.

Датчик дыма комбинированный (дым/тепло) ИП 212/101-2М-A1R с базой Е412NL
Комбинированный извещатель предназначен для обнаружения возгораний в помещениях различных зданий и сооружений подробнее...

Цена: 2 098 руб.

MP701 Исполнительный элемент (4 независимых канала по 2 кВт 10А)
Силовой модуль коммутации предназначен для обеспечения управления при помощи устройств NetPing силовыми подробнее...

Цена: 1 400 руб.

BM8070D Силовое реле 16А/250В на DIN-рейку
Блок реле для удалённой коммутации мощной нагрузки при помощи устройств NetPing. Изготавливается в корпусе подробнее...

Цена: 1 350 руб.

Датчик движения (SWAN-QUAD ИК детектор квадросенсор), (2м)
Пассивный инфракрасный детектор движения позволяет регистрировать любое движение в зоне до 18 метров. подробнее...

Цена: 1 516 руб.

МАЯК-12-СТ
Оповещатель охранно-пожарный световой стробоскопический предназначен для выдачи световых стробоскопических подробнее...

Цена: 385 руб.

Датчик протечки H2О
Датчик протечки позволяет определить наличие воды в точке установки датчика. Устанавливается в нескольких подробнее...

Цена: 1 450 руб.

-+ руб. руб.
Итого руб.

Данные о заказе