Автоматический регулятор температуры на основе 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