Некоторое время назад было показано, как можно организовать мониторинг температуры с помощью программного пакета 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 градусов, чтобы проверить работоспособность системы достаточно зажать датчик пальцами и подержать его несколько минут. За счёт нагрева от тела человека температура на датчике увеличится и должен включиться вентилятор.
На этом всё. Приятной работы!
P.S. Статья написана по просьбе «Алентис Электроникс» и так же опубликована на сайте компании.
P.P.S. Отдельное спасибо Фроловой Марии за корректировку статьи.