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

Управление устройствами NetPing через API при помощи роутеров MikroTik

Управление устройствами NetPing через API при помощи роутеров MikroTik

Для начала пара слов о том, что такое MikroTik. Это латвийский производитель сетевого оборудования, которое отличается невысокой ценой и широкой функциональностью. Основой для продуктов MikroTik является Router OS — сетевая операционная система на базе Linux. Эта ОС существует также в виде x86-дистрибутива, так что любой желающий может собрать мощный роутер на базе обычного ПК за скромную цену. Она же в различных своих вариантах устанавливается на RouterBOARD — линейку аппаратных решений MikroTik, которая включает в себя как чисто операторское оборудование, так и SOHO-решения. 

Роутеры MikroTik могут быть оборудованы резервными WAN-каналами, например, кроме проводного интернета может быть и GSM-модем. В таком случае есть возможность запускать скрипты на MikroTik через SMS. Это позволяет управлять устройствами NetPing, у которых нет встроенного GSM-модема. Также данная функция может быть актуальна при недоступности web-интерфейса устройств NetPing через основную сеть Ethernet либо в случае зависания модема у устройства NetPing.

Как известно, Роутер ОС (Router OS) обладает колоссальным функционалом, в том числе возможностью управления различными функциями через скрипт-программирование. В частности, можно получить доступ непосредственно из роутера к функциям устройств NetPing компании ООО «Алентис Электроникс».

Описанные ниже настройки и параметры применимы для всех моделей устройств NetPing

Общий вид RouterOS

Такую возможность предоставляет команда ROS fetch, синтаксис которой подробно описан в https://wiki.mikrotik.com/wiki/Manual:Tools/Fetch.

Если нам в рамках нашей задачи требуется переключить встроенное реле устройства NetPing, достаточно следующей записи:

/tool fetch url="http://adress:port/relay.cgi\?rN=X" mode=http user=visor password=ping dst-path="NPanswer.txt";

Где:

adress:port – адрес и порт устройства NetPing, например, 192.168.0.100. Если порт стандартный 80, то можно не указывать;
N – номер реле, число реле зависит от модели устройства (от 1 до 8-ми);
X – совершаемое действие над реле, где 1-включить, 0-выключить;
User, password – логин и пароль администратора NetPing, указаны по умолчанию;
dst-path – файл, в который будет записан ответ от устройства.

Ответ записывается в указанный файл в следующем виде:

relay_result('ok') – в случае успешного выполнения;
relay_result('error') – при невыполнении команды, например, при несоответствии переданных параметров.

Итак, приступим.

Создадим несколько "самодельных" функций, демонструющих возможности по управлению устройством NetPing из роутера MikroTik:

  1. NPstart – установка переменных для NetPing;
  2. FuncNPSetrele – установка реле (включение/выключение/изменение канала управления);
  3. FuncNPGetrele – получение статуса состояния реле;
  4. FuncNPTermo – функция опроса датчика температуры;
  5. FuncNPHamidity – функция опроса датчика влажности и температуры

Чтобы не повторять в скриптах одни и те же параметры, создадим глобальные переменные, видимые всем скриптам в роутере:

################ NPStart #####################

# установка переменных

#############################################

:global NPuser "visor"; # login пользователя NetPing

:global NPpass "ping"; # пароль пользователя

:global NPadr "192.168.0.100"; # адрес устройства NetPing

Дальше пишем наши функции:

################ FuncNPSetrele ###############

# Функция установки реле для устройств PDU NetPing

#     by Sergej Serkov 25.09.2017

#############################################
# Входящие параметры:

# Nrele – номер реле

# Rstatus – действие над реле (1-включить, 0-выключить)

# Пример обращения к функции:

# [$FuncNPSetrele Nrele="2" Rstatus="1"]

# результат исполнения функции возвращается в переменной $NPanawer

# Определяем саму функцию установки реле:

:global FuncNPSetrele do={:global NPuser; :global NPpass; : global NPadr; :local StrFetchRele; :set StrFetchRele ("http://"."$NPadr"."/relay.cgi\?r"."$Nrele"."="."$Rstatus"); [/tool fetch url=$StrFetchRele mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];

:delay 2s;

:local NPanswer [/file get NPanswer.txt contents];

/file remove NPanswer.txt;

:return $NPanswer}

Теперь, если исполнить функцию с присвоением результата переменной, действие над реле будет исполнено, и можно будет прочитать ответ устройства.

Пример вызова функции FuncNPSetrele:

:global FuncNPSetrele; # объявляем функцию при вызове;

:local NPanswer [$FuncNPSetrele Nrele="2" Rstatus="1"]; # реле №2 будет включено, ответ устройства передан в переменную $NPanswer.

:log info $NPanswer; # который можно прочитать, например в логе роутера MikroTik: 

Пользуясь функцией FuncNPSetrele через параметр Rstatus, можно также устанавливать канал управления реле согласно документации на устройство. Значения каналов расшифрованы в следующей функции.

############## FuncNPGetrele ###############

# Функция опроса состояния реле PDU NetPing

#     by Sergej Serkov 22.09.2017

###########################################


# Входной параметр – номер реле Nrele

# Пример вызова функции:

# [$FuncNPGetrele Nrele="2"]

# Ответ возвращается в переменной $NPanswer

# Функция устанавливает также следующие глобальные переменные:

# -----------------------------------------------------------------------------

# $relechannel – источник управления реле, согласно документации  NetPing:

# 0 - выключено вручную

# 1 - включено вручную

# 2 – работает от канала «Сторож»

# 3 - источник управления «Расписание»

# 4 - Сторож + Расписание

# 5 – управляется модулем «Логика»

# 6 – Логика + Расписание

# relestatus – текущее состояние реле:

# 0 - выключено

# 1 - включено

# Определяем функцию:

:global FuncNPGetrele do={:global NPuser; :global NPpass; global NPadr; :local StrFetchRele; :set StrFetchRele ("http://"."$NPadr"."/relay.cgi\?r"."$Nrele"); [/tool fetch url=$StrFetchRele mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];

:delay 2s;

:local NPanswer [/file get NPanswer.txt contents];

/file remove NPanswer.txt;

:local endLoc;

:set $endLoc [:find $NPanswer ","];

:global relechannel [:pick $NPanswer ($endLoc+2) ($endLoc+3)]; # Канал управления;

:global relestatus [:pick $NPanswer ($endLoc+5) ($endLoc+6)]; # Текущее состояние;

:return $NPanswer}

Вызов функции FuncNPGetrele может выглядеть так (если хотим опросить первое реле):

:global FuncNPGetrele; # не забываем объявлять при вызове саму функцию

:global relechannel; # и ее рабочие переменные

:global relestatus;

:local NPanswer [$FuncNPGetrele Nrele="1"]; # функция будет выполнена и ответ устройства передан в переменную $NPanswer.

:log info $NPanswer; # которую можно также прочитать, например, в логе роутера.

Мы выдадим в лог удобную для понимания информацию о настройках и состоянии реле:

:local R 1

:log info "";

:log info "------------------------------";

:log warning ("Реле"."$R")

:log info ("Источник управления: ". "$relechannel");

:if ($relestatus=0) do={:log info "Реле выключено"} else={:log info "Реле включено"}

:log info "------------------------------";

:log info "";

Вот что увидим в логе роутера:

Лог роутера Информация о реле

Каналы управления тоже, естественно, можно «расшифровать». В данном случае «3» - первое реле управляется через расписание. 

################ FuncNPTermo ###############

# Функция опроса датчика температуры PDU  NetPing

#     by Sergej Serkov 25.09.2017

#############################################
# Для работы функции в NPtr необходимо передать номер опрашиваемого датчика

# Ответ стандартно возвращается в переменной $NPanswer

# Пример применения c опросом второго датчика:

# [$FuncNPTermo NPtr="2"]

# Сама функция опроса датчика температуры:

:global FuncNPTermo do={:global NPuser; :global NPpass; :local StrFetchTermo; :global NPadr; :set StrFetchTermo ("http://"."$NPadr"."/thermo.cgi?t"."$NPtr"); [/tool fetch url=$StrFetchTermo mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];

:delay 2s;

:local NPanswer [/file get NPanswer.txt contents];

/file remove NPanswer.txt;

:return $NPanswer}

Вызываем нашу функцию, получаем значение температуры:

:global FuncNPTermo;

:local NPanswer [$FuncNPtermo NPtr="2"];

:log info $NPanswer; # выводим ответ в лог:

 Лог роутера Информация о температуре

То есть значение температуры на втором датчике 17 градусов.

Из заявленных планов остается функция опроса комбинированного датчика влажности и температуры. При этом у меня почему-то для корректной работы пришлось объявить номер датчика влажности «0» (к моему устройству NetPing 4/PWR-220 v3/SMS было подключено четыре 1-wire датчика температуры и один комбинированный датчик температуры и влажности).

################ FuncNPhumidity ###############

# Функции опроса датчика влажности и температуры PDU  NetPing

#     by Sergej Serkov 25.09.2017

##############################################
# Входной параметр Nhd "0"; # при вызове функции эта переменная должна содержать номер датчика влажности;

# Вызов функций соответственно: [$FuncNPHtr Nhd="0"] и [$FuncNPHhd Nhd="0"]

# Возвращаемые данные в переменных:

# $NPhd – влажность;

# $NPtr – температура;

# Определяем функцию опроса температуры с датчика:

:global FuncNPHtr do={:global NPuser; :global NPpass; :global NPadr; :local StrFetchTR; :set StrFetchTR ("http://"."$NPadr"."/relhum.cgi?t"."$Nhd"); [/tool fetch url=$StrFetchTR mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];

:delay 2s;

:local NPtr [/file get NPanswer.txt contents];

/file remove NPanswer.txt;

:return $NPtr}

 # Функция влажности:

:global FuncNPHhd do={:global NPuser; :global NPpass; :global NPadr; :local StrFetchHD; :set StrFetchHD ("http://"."$NPadr"."/relhum.cgi?h"."$Nhd"); [/tool fetch url=$StrFetchHD mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];

:delay 2s;

:local NPhd [/file get NPanswer.txt contents];

/file remove NPanswer.txt;

:return $NPhd}

Вызов наших функций:

:global FuncNPHtr;

:global FuncNPHhd;

:local NPtr [$FuncNPHtr Nhd="0"];

:delay 5s;

:local NPhd [$FuncNPHhd Nhd="0"];

:log info $NPtr;

:log info $NPhd;

 В логе роутера видим отправку двух запросов к нашему датчику и два ответа. Первый – температура 13 градусов, второй – влажность 91%.

 Лог роутера Информация о температуре и влажности

Таким образом, поставленные задачи решены. Мы можем управлять реле устройства NetPing непосредственно из скриптов роутера и получать значения его датчиков.

Некоторые полезные замечания

Следует помнить, что в Роутере ОС есть служебные символы. Если вы используете эти символы в пароле или имени устройства, то в скрипте их нужно экранировать. Например, если пароль представлен строкой $ergey, то, чтобы его правильно передать, в скрипте нужно экранировать первый символ знаком «\». То есть в нашем случае NPpass="\$ergey".

Перед вызовом функций NetPing стоит проверить, доступно ли само устройство NetPing в сети на настоящий момент путём проверки на пинг. В роутере ОС это делается, например так, (скрипт найден на просторах Интернета, проверен):

:local PingCount 3; # количество пингов;

:local PingAdr $NPadr; # адрес устройства NetPing получим из NPadr

:local Iface "ether-2master"; # Имя интерфейса Вашей внутренней сети;

:local Result [/ping $PingAdr count=$PingCount  interface=$Iface];

:local MainIfInetOk false;

:set MainIfInetOk ((3*$Result) >= (2 * $PingCount))

:put "MainIfInetOk=$MainIfInetOk"

if (!$MainIfInetOk) do={

/log error "Устройство NetPing не доступно в сети"

}

if ($MainIfInetOk) do={

/log warning "NP Connect OK"

/system script run NPstart;

… здесь вызываем нужные функции

}

Применение наших функций может быть самым разным:

  • Например, если завести питание вашего MikroTik через реле NetPing, то роутер через скрипт-функцию FuncNPSetrele может сам себя выключать при наступлении заданных критических событий. Скрипт с проверкой таких событий нужно поместить в Планировщик роутера:

Пример выключения роутера, получающего питание с реле 1 устройства NetPing, при превышении температуры на плате роутера:

:if ([/system health get temperature] >50) do { global Nrele "1"; $FuncNPSetrele}

Роутер выключится при превышении температуры на плате выше 50 градусов. В примере сравнение дано условно, т.к. полученное из /system health строковое значение температуры на плате роутера сначала нужно преобразовать в число.

  • Также можно включать какое-либо устройство в сети, например, файловый сервер, после подключения VPN-клиента к роутеру из внешней сети. После завершения VPN-сеанса пользователя файловый сервер можно также отключать нашей функцией. Это усилит защиту важных данных, т.к. файловый сервер будет физически выключен, пока клиент VPN не установил связь с сервером.
  • При отсутствии в конкретной модели устройства NetPing GSM-модема, можно пользоваться USB-модемом роутера, подключив его к MikroTik для отправки ответов устройства NetPing через SMS.

Можно реализовать функции для других возможностей устройств NetPing, в том числе для управления IO-линиями. Функции целесообразно объединить в единую библиотеку (в один скрипт) и определять сразу при загрузке роутера, а вызывать по мере необходимости.

Блок функций для управления линиями ввода/вывода NetPing

Блок содержит всё, что поддерживают URL-команды по работе с линиями ввода/вывода устройств NetPing, а именно:

  • настройка режима линии (вход/выход/выход логики);
  • установка линии (лог 0, 1, инверсия линии);
  • инверсия линии на заданное время в секундах;
  • опрос состояния линии

################ Functions NetPing Library ###############
# Библиотека функций для работы с линиями
# ввода/вывода IOv2 NetPing
# версия 1.0
# by Sergej Serkov 01.12.2017
######################################################

# FuncNPmodeIO - устанавливает режим работы линии ввода/вывода
# FuncNPSetIO - включает/выключает/инвертирует линию в режиме выхода
# FuncNPinvtimeIO - инвертирует линию на IOtime секунд в режиме выхода
# FuncNPGetIO - запрашивает состояние линии

# общие переменные для всех функций NetPing
# доступ к устройству

:global NPuser "visor"; # администратор NetPing-устройства
:global NPpass "ping"; # пароль доступа к устройству
:global NPadr "192.168.0.100"; # адрес устройства NetPing;


################ FuncNPmodeIO #################
# Функция настройки I/O линии PDU NetPing
# by Sergej Serkov 01.12.2017
###############################################
# Применение:
# В качестве параметров функции в Nio нужно передавать номер линии ввода/вывода
# в IOmode - устанавливаемый режим линии (0-вход; 1-выход; 2-выход логики)
# Вызов функции
# [$FuncNPmodeIO Nio="2" IOmode="1"]
# ответ исполнения возвращается в $NPanswer

# определяем функцию, устанавливающую линию NetPing
:global FuncNPmodeIO do={:global NPuser; :global NPpass; : global NPadr; :local StrFetchIO;
:set StrFetchIO ("http://"."$NPadr"."/io.cgi\?io"."$Nio"."&mode="."$IOmode"); [/tool fetch url=$StrFetchIO mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];
:delay 2s;
:local NPanswer [/file get NPanswer.txt contents];
/file remove NPanswer.txt;
:return $NPanswer}

################ FuncNPSetIO ###############
# Функция установки состояния I/O линии PDU NetPing
# by Sergej Serkov 01.12.2017
#############################################

# устанавливаемая линия должна быть сконфигурирована на вывод !

# обычно в устройствах NetPing применяется инвертированная логика линий:
# при логическом 0 на линии - нагрузка включается
# при логической 1 на линии - выключается
# для таких устройств нужно раскомментировать закомментированные строки
# этой функции - см. ниже

# Применение:
# В качестве параметров функции в Nio нужно передавать номер линии ввода/вывода
# в IOstatus - совершаемое действие (0-выключить; 1-включить; f-инвертировать)
# Вызов функции
# [$FuncNPSetIO Nio="2" IOstatus="1"]
# ответ исполнения возвращается в $NPanswer


# определяем функцию, устанавливающую линию NetPing
:global FuncNPSetIO do={:global NPuser; :global NPpass; : global NPadr; :local StrFetchIO;

# инвертирование статуса линии (для устройств NetPing с обратной логикой);
#:if ($IOstatus=0) do={:set $IOstatus 1} else={:set $IOstatus 0}

:set StrFetchIO ("http://"."$NPadr"."/io.cgi\?io"."$Nio"."="."$IOstatus"); [/tool fetch url=$StrFetchIO mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];
:delay 2s;
:local NPanswer [/file get NPanswer.txt contents];
/file remove NPanswer.txt;
:return $NPanswer}


################ FuncNPinvtimeIO ###################################
# Функция инвертирования состояния I/O линии PDU NetPing на время
# (выдача импульса)
# by Sergej Serkov 01.12.2017
##################################################################

# устанавливаемая линия должна быть сконфигурирована на вывод !

# обычно в устройствах NetPing применяется инвертированная логика линий:
# при логическом 0 на линии - нагрузка включается
# при логической 1 на линии - выключается
# для таких устройств нужно раскомментировать закомментированные строки
# этой функции - см. ниже

# Применение:
# В качестве параметра функции в Nio нужно передавать номер линии ввода/вывода
# в IOtime - время инвертирования в секундах
# Вызов функции
# [$FuncNPSetIO Nio="2" IOtime="5"]
# ответ исполнения возвращается в $NPanswer

# определяем функцию, устанавливающую линию NetPing
:global FuncNPinvtimeIO do={:global NPuser; :global NPpass; : global NPadr; :local StrFetchIO;
:set StrFetchIO ("http://"."$NPadr"."/io.cgi\?io"."$Nio"."=f,"."$IOtime"); [/tool fetch url=$StrFetchIO mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];
:delay 2s;
:local NPanswer [/file get NPanswer.txt contents];
/file remove NPanswer.txt;
:return $NPanswer}


############## FuncNPGetIO ###############
# Функия опроса состояния I/O линии PDU NetPing
# by Sergej Serkov 01.12.2017
###########################################

# обычно в устройствах NetPing применяется инвертированная логика линий:
# при логическом 0 на линии - нагрузка включается
# при логической 1 на линии - выключается
# для таких устройств нужно раскомментировать закомментированные строки
# этой функции - см. ниже

# Применение:
# В качестве параметра функции Nio нужно передавать номер линии ввода/вывода
# Например опрашиваем вторую линию :
# [$FuncNPGetIO Nio="2"]

# возвращает ответ NetPing в $NPanswer

# также возвращает в глобальной переменной:
# -----------------------------------------------------------------------------

# IOstatus - состояние линии
# 0 - выключено;
# 1 - включено;


# определяем функцию, возвращающую ответ от линии I/O NetPing
:global FuncNPGetIO do={:global NPuser; :global NPpass; global NPadr; :local StrFetchIO; :set StrFetchIO ("http://"."$NPadr"."/io.cgi\?io"."$Nio"); [/tool fetch url=$StrFetchIO mode=http user=$NPuser password=$NPpass dst-path="NPanswer.txt";];
:delay 2s;
:local NPanswer [/file get NPanswer.txt contents];
/file remove NPanswer.txt;
:local endLoc;
:set $endLoc [:find $NPanswer ","];
:global IOstatus [:tonum [:pick $NPanswer ($endLoc+6) ($endLoc+7)]]; # состояние линии;

# инвертирование статуса линии (для устройств NetPing с обратной логикой);
# :if ($IOstatus=0) do={:set $IOstatus 1} else={:set $IOstatus 0}

:return $NPanswer
}

Готовые файлы скриптов

Здесь можно скачать готовый файл скриптов с библиотекой функций NetPing для роутера MikroTik.

Для переноса их в роутер нужно мышкой перетащить файл funcNetPing.rsc в файлы роутера в популярной утилите для роутера MikroTik WINBOX (либо переслать его туда по FTP).

Затем в терминале роутера набрать команду:

/import file=filename.rsc

  • Func_NP_libIO.rsc - содержит библиотеку функций для работы и линиями ввода-вывода в одном скрипте и каждую функцию отдельно, а также примеры их вызовов в скриптах. Рекомендуется использовать с устройством NetPing IO v 2 
  • Func_NP_library.rsc - библиотека всех функций (включая те, что были написаны ранее - работу с реле, датчиками температуры, влажности и новые - работы с I/O линиями также в одном скрипте в виде библиотеки и каждую функцию в отдельных скриптах, плюс примеры вызовов). 

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

Свежие версии функций управления устройствами NetPing при помощи роутеров MikroTik доступны по ссылке http://apimikrotik.blogspot.ru/.


Автор: Серков Сергей Владимирович 

serkov1375@mail.ru  


  • Все устройства

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


Каталог устойств мониторинг серверных комнат и шкафов
Все устройства
Устройство 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 руб.

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

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