Автоматический регулятор температуры на основе MRTG и устройств NetPing TS v2, NetPing 2PWR-220 v2
Автоматический регулятор температуры на основе MRTG и устройств NetPing TS v2, NetPing 2PWR-220 v2
Некоторое время назад было показано, как можно организовать мониторинг температуры с помощью программного пакета MRTG и устройств NetPing TS v2, а также было рассказано, как можно отслеживать выход температуры за допустимые границы.
Однако кроме оповещения о критической ситуации можно ещё и попытаться исправить её автоматически. Уже упоминалась плата Netping Cooler Board 2+2, которая может использоваться для включения/выключения различных устройств, однако, она позволяет управлять лишь маломощными устройствами, если же нужно включить достаточно мощное (до пятисот ватт) устройство, лучше воспользоваться устройством NetPing 2/PWR-220 v2.
NetPing 2/PWR-220 v2 позволяет управлять двумя нагрузками суммарной мощностью до пятисот ватт, и, кроме всего прочего, позволяет проверять доступность сетевых хостов, и в случае их недоступности перезагружать их по питанию (режиме «сторожа»), хотя в данном случае нам будет более чем достаточно возможности включать/выключать устройство с помощью команд, передаваемых по SNMP.
Сейчас попробуем решить простую задачу: поддержание температуры в заданном интервале в домашней оранжерее или на рабочем месте. Для охлаждения будем использовать простой напольный вентилятор, а для обогрева - тепловинтилятор. Схема сети и конфигурация MRTG в целом аналогичны ранее описанным, только добавляется ещё устройство NetPing 2/PWR-220 v2 с IP-адресом 192.168.3.9 и SNMP Community "SWITCH", доступ к которому разрешён с сервера мониторинга.
Для начала приведём устройство в исходное состояние, то есть отключим оба канала питания, это можно сделать, авторизовавшись на устройстве, на странице «Управление 220V».
Для управления устройством нам понадобиться два OID:
- 1.3.6.1.4.1.25728.52.1.5801.1.2 - первый канал: 0 - выключен, 1 - включен
- 1.3.6.1.4.1.25728.52.1.5801.2.2 - второй канал: 0 - выключен, 1 - включен
Создадим скрипт обработчик проблем и сохраним его под именем /root/scripts/netping_bad.sh следующего содержания:
#!/bin/sh
# Получаем параметры из командной строки
# Пороговое значение передаётся вторым параметром, а текущее - третьим
THRESH_VAL=$2
CUR_VAL=$3
# Если слишком холодно
if [ ${THRESH_VAL} -gt ${CUR_VAL} ]; then
# Выключаем вентилятор
snmpset -v 1 -c SWITCH 192.168.3.9 1.3.6.1.4.1.25728.52.1.5801.1.2 integer 0 > /dev/null
# Включаем тепловентилятор
snmpset -v 1 -c SWITCH 192.168.3.9 1.3.6.1.4.1.25728.52.1.5801.2.2 integer 1 > /dev/null
# Если же наоборот жарко
elif [ ${THRESH_VAL} -lt ${CUR_VAL} ]; then
# Выключаем тепловентилятор
snmpset -v 1 -c SWITCH 192.168.3.9 1.3.6.1.4.1.25728.52.1.5801.2.2 integer 0 > /dev/null
# Включаем вентилятор
snmpset -v 1 -c SWITCH 192.168.3.9 1.3.6.1.4.1.25728.52.1.5801.1.2 integer 1 > /dev/null
fi
Также создадим скрипт, который будет выполняться при возврате температуры в норму и сохраним его под именем /root/scripts/netping_ok.sh. Его содержанием заметно проще:
#!/bin/sh
# Выключаем вентилятор
snmpset -v 1 -c SWITCH 192.168.3.9 1.3.6.1.4.1.25728.52.1.5801.1.2 integer 0 > /dev/null
# Выключаем тепловентилятор
snmpset -v 1 -c SWITCH 192.168.3.9 1.3.6.1.4.1.25728.52.1.5801.2.2 integer 0 > /dev/null
Затем добавим в конфигурацию MRTG следующие строки:
# Максимальная температура
ThreshMaxO[netping]: 27
# Минимальная температура
ThreshMinO[netping]: 22
# Скрипт, выполняем при нарушении температурного режима
ThreshProgO[netping]: /root/scripts/netping_bad.sh
# Скрипт, выполняемый при возврате температуры в норму
ThreshProgOKO[netping]: /root/scripts/netping_ok.sh
Теперь температура будет поддерживаться (на сколько это возможно) в интервале от 22 до 27 градусов, чтобы проверить работоспособность системы достаточно зажать датчик пальцами и подержать его несколько минут. За счёт нагрева от тела человека температура на датчике увеличится и должен включиться вентилятор.
На этом всё. Приятной работы!
Автор: Вадим Калинников
E-mail: moose@ylsoftware.com
Web: http://ylsoftware.com
Корректор: Фролова Мария
E-mail: smei.i.inaja@gmail.com