Внешняя логика для устройств NetPing на основе PowerShell

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

Рассмотрим пример автоматизации управления климатом в серверной комнате на основе Microsoft PowerShell скрипта.

Данное решение для мониторинга на основе устройства UniPing server solution v3/SMS позволяет, в зависимости от температуры в серверной комнате и вне ее, включать/выключать кондиционер или вентилятор. Логика управления основана на скрипте Microsoft PowerShell, который выполняется в Windows окружении на одном из имеющихся серверов или на любом внешнем ПК, подключенном к сети Интернет.

Скрипт выполняется по расписанию с заданной периодичностью в планировщике Windows: он опрашивает датчики температуры и отправляет команды на включение/выключение приборов охлаждения/кондиционирования по протоколу SNMP. Проверяются следующие условия:

  • если температура вне серверной меньше или равна +20 °C, в серверной комнате — больше +27 °C, то с помощью розетки NetPing AC/DIN будет включен вентилятор, а с помощью ИК передатчика IRC-TR v2 будет отключен кондиционер;
  • если температура вне серверной больше +20 °C, в серверной комнате — больше +27 °C, то с помощью ИК передатчика IRC-TR v2 будет включен кондиционер, а с помощью розетки NetPing AC/DIN будет отключен вентилятор;
  • если температура в серверной комнате меньше или равна +27 °C, то все приборы будут отключены

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

Также необходимо Windows окружение для выполнения PowerShell скрипта. Это может быть как виртуальная машина на имеющихся серверах или полноценная ОС, так и ПК, подключенный в локальную сеть или удаленный ПК в сети Интернет.

Если оборудование NetPing для доступа к сети Интернет использует маршрутизатор/роутер с функцией NAT и/или Firewall, и планируется выполнять PowerShell скрипт на ПК, расположенном вне локальной сети, необходимо разрешить входящие пакеты по протоколу SNMP (UDP/161) в сторону устройства NetPing для его управления извне. За дополнительной информацией обратитесь к документации на оборудование маршрутизатора/роутера или к администратору сети.

При необходимости устройство NetPing может быть подключено к роутеру по беспроводной технологии Wi-Fi посредством адаптера VAP11N. Адаптер приобретается отдельно. За дополнительной информацией обратитесь к «Руководство пользователя».

Настроим упрощенную схему, когда Windows окружение для исполнения PowerShell скрипта располагается в одной локальной сети с устройством NetPing.

Настройка UniPing server solution v3/SMS

Приведите устройство UniPing server solution v3/SMS в рабочее состояние согласно соответствующим разделам «UniPing server solution v3/SMS & UniPing server solution v3, Руководство пользователя».

  • Подключите ИК модуль расширения IRC-TR v2;
  • Подключите NetPing AC/DIN на IO 8

В разделе SETUP устройства измените раздел Network Settings следующим образом:

  • IP Address: 192.168.0.21
  • Netmask: 255.255.255.0
  • Gateway: 192.168.0.1

Все дальнейшие настройки устройства осуществляются по вновь установленному IP адресу. Смотрите дополнительную информацию в «UniPing server solution v3/SMS & UniPing server solution v3, Описание встроенного ПО».

Настройка IP адреса устройства NetPing

В разделе SETUP устройства измените Username и Password для доступа к устройству. Измените поля Сommunity read/write для предотвращения несанкционированного доступа на: ping21

Настройка авторизации устройства NetPing

Перейдите в раздел IR COMMANDS и, согласно информации в «UniPing server solution v3/SMS & UniPing server solution v3, Описание встроенного ПО», запишите с помощью пульта ДУ команды для управления кондиционером:

  • на первую позицию – команду для включения;
  • на вторую позицию – команду для выключения

Запись команд для управления кондиционером устройством NetPing 

Подключите к устройству два датчика температуры. В разделе TEMPERATURE термодатчик вне серверной комнаты идентифицируйте как Sensor 3, внутри серверной комнаты – как Sensor 5. Дополнительную информацию смотрите в «UniPing server solution v3/SMS & UniPing server solution v3, Описание встроенного ПО» 

Подключение термодатчиков к устройству NetPing

Перейдите в раздел DESCRETE IO и установите для розетки NetPing AC/DIN режим работы – Output.

Подключение управляемой розетки NetPing AC DIN к устройству NetPing

Настройка окружения Windows PowerShell

Необходимо убедиться, что используемое окружение Windows поддерживает исполнение скриптов PowerShell. За дополнительной информацией необходимо обратиться на сайт Microsoft. При необходимости установите необходимые пакеты или обновите версии до актуальных.

Так как компания Microsoft не предусмотрела возможности работы в PowerShell по протоколу SNMP, необходимо установить сторонний модуль поддержки SNMP — NetCmdlets. Полная версия этого модуля бесплатна для некоммерческого использования (необходима регистрация для получения ключа активации).

Далее, настройте автоматический запуск скрипта PowerShell. Рекомендуемый интервал запуска – 5 минут. Для настройки воспользуйтесь следующей статьей на сайте Microsoft или аналогичной из других источников.

Пример скрипта на PowerShell для управление климатом в серверной комнате

#UniPing server solution v3/SMS PowerShell Script

#Check if module NetCmdlets is installed
if(!(Get-Module | Where {$_.Name -eq «NetCmdlets»})) {
Import-Module «NetCmdlets»
}

# Устанавливаем переменные
$community = «ping21»
$port = 16121
$hostip = «np.tst.netping.ru«
$Tout_cond = 20
$Tint_cond = 27
$Tout = (Get-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.8800.1.1.2.3).OIDValue # датчик 3
$Tint = (Get-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.8800.1.1.2.5).OIDValue # датчик 5

# 1) Если снаружи меньше или равно 20, внутри — больше 27, то включить вентилятор с помощью розетки NetPing AC/DIN
if (($Tout -le $Tout_cond) -and ($Tint -gt $Tint_cond)) {
Write-Host «Будем включать вентилятор…»
# Проверяем, включена ли розетка на IO 8
if ((Get-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.8900.1.1.3.8).OIDValue -ne 0 ) {
# Включаем розетку вентилятора
Set-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.8900.1.1.3.8 -OIDType Integer -OIDValue 0
Write-Host «…включаем вентилятор.»
# Выключаем кондиционер по ИК
Set-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.7900.1.1.0 -OIDType Integer -OIDValue 2
}
else {Write-Host «…вентилятор уже включен.»}
}

# 2) Если снаружи — больше 20, внутри — больше 27, то включить кондиционер с помощью IRC-TR v2
elseif (($Tout -gt $Tout_cond) -and ($Tint -gt $Tint_cond)) {
Write-Host «Будем включать кондиционер…»
# Отправим ИК команду на включение кондиционера
Set-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.7900.1.1.0 -OIDType Integer -OIDValue 1
# Выключаем розетку вентилятора
Set-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.8900.1.1.3.8 -OIDType Integer -OIDValue 1
}

# 3) Если внутри меньше или равно 27 — выключаем все (кондиционер с помощью IRC-TR v2 и вентилятор с помощью розетки NetPing AC/DIN)
else {
Write-Host «Слишком холодно — выключаем все приборы.»
# Выключаем розетку вентилятора
Set-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.8900.1.1.3.8 -OIDType Integer -OIDValue 1
# Выключаем кондиционер по ИК
Set-SNMP -Agent $hostip -Port $port -Community $community -OID .1.3.6.1.4.1.25728.7900.1.1.0 -OIDType Integer -OIDValue 2
}

где:

$community – переменная, в которой задается Community на странице «Настройка» web-интерфейса устройства.

$port – переменная, в которой задается порт SNMP агента.

$hostip – переменная, в которой задается IP адрес или DNS имя устройства NetPing.

$Tout_cond – переменная, в которой задается порог температуры вне серверной комнаты.

$Tint_cond – переменная, в которой задается порог температуры внутри серверной комнаты.

$Tout – переменная, из которой считывается значение температуры по SNMP термодатчика, установленного вне серверной.

$Tint – переменная, из которой считывается значение температуры по SNMP термодатчика, установленного внутри серверной.

?
×

    Получите бесплатную консультацию по выбору оптимального оборудования

    Наши операторы свяжутся с вами при первой возможности

    ×

      Обращение в техническую поддержку

      Сформулируйте, пожалуйста, тему и текст вашего обращения. Вам ответят в течении рабочего дня.

      ×
      Ваша заявка отправлена. Мы свяжемся с вами при первой возможности.