NetPing: конструктор для администратора и досуг для программиста

NetPing: конструктор для администратора и досуг для программиста

 



Судя по тому, насколько популярен блог DIY, многие из нас любят изобретать. Наверное, каждый встречал человека, который способен сутками что-нибудь паять, программировать, отлаживать, не замечая ничего вокруг. Вот совсем свежие примеры.

В этой статье я расскажу про устройство, которое способно обеспечить досугом изобретателей очень надолго. Это, с одной стороны, серийно выпускаемые приборы. Но сделаны они в виде конструкторов, поэтому их применение ограничено лишь вашей фантазией.

Речь пойдет про устройства NetPing. Эта российская разработка периодически упоминается на хабре, но детального рассказа я не встречал. Пусть эта статья будет продолжением серии «Оборудование российского производства». Мне достался самый универсальный прибор линейки – UniPing RS-232. Основная сфера его применения – удаленный мониторинг и управление множеством устройств в квартире, доме, офисе. Конечно, давно существует понятие «умный дом», но, как правило, это преподносится как вариант для состоятельных людей, хотя получают они черный ящик с жестко заданным, пусть и большим, набором функций. Однако, можно ведь все собрать и запрограммировать самому!


Для затравки перечислю только стандартные задачи, которые можно решать с помощью устройств NetPing:
  • дистанционное управление электропитанием с возможностью принудительной перезагрузки;
  • контроль доступа к удаленному объекту – датчики открытия/закрытия дверей, движения, удара, антивандальные системы, управление камерами наблюдения;
  • слежение за микроклиматом внутри помещения – датчики температуры, влажности, скорость воздушного потока, управление кондиционером через ИК;
  • отслеживание разных ЧП – датчики дыма, протечки воды;
  • управление АТС по порту RS-232;
  • удаленное изменение настроек систем в зависимости от ситуации;
  • удаленный доступ к серверам через консоль – например, установка операционки без присутствия администратора;
  • получение мгновенных уведомлений с фиксацией времени о сбоях и других важных событиях по множеству каналов: SMS, почта, Jabber;
  • доступ ко всем параметрам наблюдаемой системы в реальном времени через HTTP или SNMP;
  • управление включением/выключением света и любых других приборов по расписанию;
  • дистанционный контроль каналов связи.




Использовать все это можно в обычной квартире, в загородном доме, в гараже, в удаленных серверных комнатах, в платежных терминалах, банкоматах и т.п. Понятно, что этим можно не ограничиваться и найти кучу других интересных применений. По этому поводу очень советую почитать вот это.

Подбираем нужный комплект


Но давайте, наконец, посмотрим, как все это выглядит и как работает. Прибор достаточно простой, хотя при подключении датчиков надо быть внимательным и делать все по инструкции: так как это по сути конструктор, вставить проводок датчика можно куда угодно, а последствия могут оказаться самыми разными.

Все части комплекса продаются отдельно. В коробке лежит лишь устройство с блоком питания и разъемом DHS-44 для датчиков, а так же бумажка с IP-адресом.



Далее вы выбираете нужные датчики и периферию. Алентис Электроникс (производитель NetPing) на данный момент предлагает 17 видов датчиков:
  • Датчик наличия 220В
  • Датчик влажности
  • Термодатчик TS (используется внутри помещений)
  • Термодатчик WT (наружный влагозащищенный)
  • Датчик дыма
  • Датчик разбития стекла
  • Датчик типа «сухой контакт» (например, сигнализация о факте открытия/закрытия двери)
  • Датчик удара
  • Датчик давления
  • Датчик освещенности
  • Датчик протечки жидкости
  • Датчик движения
  • Пассивный инфракрасный извещатель
  • Инфракрасный приемник-передатчик
  • SMS-гейт (для отправки SMS сообщений о срабатывании датчиков и других событиях)
  • Сирена
  • Счетчик электроэнергии (можно дистанционно контролировать расход)

Для некоторых типов датчиков UniPing поддерживает подключение до 8 или 16 штук на одно устройство. Надо сказать, что можно также использовать разные датчики других производителей и других типов, лишь бы они были совместимы по сигналам. Поддерживается 16 датчиков типа «сухой контакт» — входы, принимающие логический сигнал: замкнуто — разомкнуто.

В моем комплекте на картинке сверху датчики температуры, влажности, открытия двери и датчик удара.

На фото можно заметить еще одну плату, подключенную к NetPing. Это коммутационная плата NetPing Connection Board, предназначенная для упрощения подключения внешних датчиков.



В принципе, можно обойтись и без нее, но тогда придется самостоятельно паять провода под 44-штырьковый разъем, а это требует определенных навыков. Но мне понравилось, что не навязываются никакие лишние детали без необходимости.

Внутрь коробочки NetPing я лезть не стал, но, думаю, что там все просто: какой-нибудь специализированный микропроцессор, ОЗУ и обвес из миниатюрной периферии.

Собираем



Теперь как все это собрать. Очень просто. Берем в руки отвертку, коммутационную плату, датчики и инструкцию (качаем с сайта). А дальше просто находим раздел про нужный датчик, вставляем проводки в нужные клеммы и прижимаем сверху винтиком.



На месте производителя, я бы все-таки сделал не голые провода, а что-то наподобие коннекторов на материнской плате:



Хотя, судя по всему, такие варианты у них тоже есть:



Руководство по сборке и настройке в некоторых случаях предполагает понимание азов схемотехники. Иногда встречаются вот такие пассажи: «Если линия, настроенная на вход, не подтянута к +5В и не подключена к источнику информации, то она является высокоомным входом». Однако, в остальном все описано не сложнее, чем в руководстве к материнской плате.

Включаем и настраиваем



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

Итак, соединяем NetPing со свободным портом роутера и включаем в розетку.



По умолчанию IP-адрес устройства выставлен в 192.168.0.100, поэтому если у вас сконфигурирована другая подсеть, может потребоваться поменять адрес NetPing. Делается это в программе NPConf. Программка эта также используется для загрузки новой прошивки. Есть еще возможность конфигурирования через Telnet, но мне она не потребовалась.



NetPing имеет встроенный веб-сервер, на который можно зайти через HTTP по адресу устройства.



Про его возможности расскажу немного ниже.

Программируем



Полный функционал устройства для программиста доступен по протоколу SNMP. HTTP — это лишь дополнение.

Протокол SNMP удобен, когда необходимо получать данные с большого количества устройств, при помощи каких-либо скриптов автоматизации или для отображения данных в уже существующих программах мониторинга сети. Получение данных по протоколу SNMP сводится к чтению/записи специальных адресов внутри устройства, называемых OID (object identifier). Адреса, поддерживаемые устройствами, можно найти в MIB-файлах (Management Information Base). Файл MIB должен соответствовать устройству и версии прошивки. Переменные внутри MIB-файла организованы в иерархии, и их удобно просматривать специальными программами, например, есть бесплатный MIB Browser. Здесь также можно менять значения переменных. Выглядит это примерно так:



Вот здесь пример полностью.

Сам MIB-файл можно открыть как ASCII-текст. Вот, например, описание датчика влажности:
npRelHumSensorValueH  OBJECT-TYPE
  SYNTAX   INTEGER (0..100)
  MAX-ACCESS   read-only
  STATUS   current
  DESCRIPTION "Relative humidity value, %"
  ::= { npRelHumSensor 2 }



На самом деле, протокол SNMP достаточно простой, хотя нотация требует некоторого привыкания. Управляющая система может получить информацию с устройства через команды GET, GETNEXT и GETBULK. Так можно считывать информацию с датчиков. Агент (на стороне устройства) может самостоятельно без запроса отправить данные, используя операцию протокола TRAP или INFORM. Управляющие системы могут также отправлять конфигурационные обновления или контролирующие запросы, используя операцию SET. Вот, собственно, и все.

Как это выглядит с точки зрения программиста. Пара примеров на PHP:

Получение значения температуры от датчика.

$t = snmpget("192.168.0.100","SWITCH"," .1.3.6.1.4.1.25728.8900.1.1.3.2");
echo ''Current temperature: ''.$t;


Включение/выключение реле: пишем по его адресу (OID) 1 для включения, и 0 для выключения.
$result = snmpset("192.168.0.100","SWITCH"," .1.3.6.1.4.1.25728.8900.1.1.3.1",”i”,"1");


Первый параметр функций – IP-адрес устройства. Второй (слово «SWITCH») – это так называемое community, специальное кодовое слово, которое необходимо указывать в любом запросе по протоколу SNMP. Оно задается на web странице настроек устройства NetPing. Далее идет OID, по которому мы читаем или пишем. Команда snmpset имеет еще 2 параметра: тип значения (в нашем случае integer) и само значение.

А вот опрос датчика на Perl. Или просто из командной строки (используются бесплатные утилиты NET-SNMP).

Если требуется только чтение показаний датчиков, то это можно делать по HTTP простым GET запросом.

Пробуем готовые программы мониторинга



Безусловно, давно существует множество программ мониторинга, в которых можно работать, в том числе, и с устройствами NetPing. Опытные администраторы наверняка знакомы с какой-то из них. Кстати, для серверных комнат есть даже специализированное устройство UniPing server solution:



Я попробовал PRTG Network Monitor, который рекомендует сам производитель NetPing – Алентис Электроникс. При использовании 10 датчиков программа бесплатна. Если надо больше – придется платить $380, но под серьезные задачи оно того стоит.



В следующем разделе я покажу эту программу в работе, а здесь еще упомяну другие системы мониторинга: Zabbix и Nagios.

Экспериментируем



К сожалению, у меня пока не было времени повозиться со всеми функциями и попрограммировать.
Сначала я подключил самое простое – датчики влажности и температуры. Термодатчиков можно подключить до 8 штук.

Все заработало сразу. Для примера я провел небольшое исследование климата: положил датчик влажности на пол в комнате.



Влажность оказалась всего 25% (это еще когда отопление работало). По-моему, совсем нездоровый климат у нас в квартирах… Затем я протер пол вокруг датчика мокрой тряпкой. Как видим, влажность поднялось аж до 67% и держалось целых 5 минут :) Комфорт оказался мимолетным виденьем. А жаль. Надо будет серьезно думать над увлажнением комнаты. И это, кстати, еще при постоянно открытом окне. Страшно представить, чем мы дышим зимой за закрытым стеклопакетом.

Датчик влажности показывает еще и температуру по совместительству. Здесь все просто.



Заметьте (если это возможно на таком скриншоте), в программе есть вкладки на месяц и на 365 дней, так что, имея постоянно включенный сервер, можно строить красивые картинки климата. Еще бы барометр добавить – будет полноценная метеостанция.

С датчиком удара немного поиграл, убедился, что работает, но не стал настраивать TRAP-сообщения.



Зеленая лампочка (высокая чувствительность) загоралась при небольших сотрясениях, красная – при больших. Чувствительность настраивается. Датчик этот универсальный. Его можно использовать где угодно, в том числе в автомобиле с какой-нибудь сигнализацией.

Датчик открытия/закрытия двери тоже очень простой.



Разъединились половинки – уровень сигнала перешел из «0» в «1», соединились – снова вернулся в «0». Это было видно на коммутационной плате – там загорался или гас зеленый светодиод:



Все-таки пара слов о том, как настраивать TRAP. Потому что это единственный способ инициировать посылку сообщений от датчиков в случае каких-то важных событий. Настроить их можно и во встроенном web-сервере, но наблюдать удобнее в PRTG Monitor.



На этой страничке задается IP адрес, на который будут отсылаться TRAP пакеты по протоколу SNMP. События, по которым будут отправляться эти пакеты, задаются на других страницах web-интерфейса устройства.

Далее можно, например, настроить термодатчик на генерацию TRAP при превышении заданной температуры.



Безусловно, скриптами можно существенно расширить возможности. Например, отправлять SMS-оповещения при определенных событиях.

Провода у некоторых датчиков оказались достаточно короткими. Как я потом прочитал, длина проводов зависит от типа датчика. Особенность «токовых датчиков» (датчик дыма, датчик движения, датчик присутствия, шлейф сигнализации с контролем целостности и т.д.) в том, что сигнализация об их состоянии идет посредством не напряжения, а тока, из-за этого они намного меньше подвержены влиянию электромагнитных помех и допускают длинные шлейфы. Я думаю, что при хорошем экранировании любой датчик можно повесить на длинный шлейф. Потому что иначе применять их, например, в большой серверной комнате затруднительно.

В Web-интерфейсе есть также Журнал, в котором в хронологическом порядке фиксируются важные события, произошедшие в устройстве.



Так как устройство не содержит встроенных энергонезависимых часов, время в журнале отсчитывается от момента включения, который принимается за 01.01.1970,0:00. Если в настройках указан IP адрес NTP сервера, устройство вскоре после включения питания попытается установить свои часы по серверу времени.

Интересные примеры применения



Область применения устройства не заканчивается на контроле датчиков, а наоборот только начинается.

Здесь я приведу ссылки на другие интересные примеры применения.

Пара примеров отсюда (статья, кстати, сама по себе очень интересная).
  • Можно сделать небольшой и простой климат-контроль в гараже: включать тепловентилятор по порогам температуры. Интернета вообще не надо. Достаточно настроить граничные условия через web-интерфейс и оставить его вместе с датчиком температуры в гараже. Когда надо – пришел с ноутбуком, переставил значения.
  • Простейшая сигнализация на дому с выводом в интернет или далее — через SMS шлюз на сотовый телефон владельца.
  • На сайте Алентис нашел забавный случай. Во время тестирования системы сотрудник включал не систему охлаждения, а всего лишь светодиод, и в какой-то момент была создана простейшая «мигалка», в основе которой находился вот такой скрипт:
    #!/bin/sh
    while true; do
      snmpset -v 1 -c SWITCH 192.168.2.10 1.3.6.1.4.1.25728.50.8.116 integer 1;
      sleep 1;
      snmpset -v 1 -c SWITCH 192.168.2.10 1.3.6.1.4.1.25728.50.8.116 integer 0;
      sleep 1;
    done

    Что подсказало следующую идею: к устройству можно подключить гирлянду из ламп накаливая или светодиодов и заставить её мигать. Поскольку на плате четыре реле, можно подключить четыре разных гирлянды и с помощью несложных скриптов переключать их создавая эффект «бегущего огня» и более сложные эффекты.

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

Как видите, идей применения море.

Сравнение устройств и цены



Линейка устройств NetPing довольно большая и функционал часто пересекается. Поэтому не всегда легко разобраться, какой прибор лучше подойдет для той или иной задачи. Я нашел ссылку с таблицей сравнения функций.

И еще полезной может оказаться тестовая плата DigiPing – на ней удобно отлаживать скрипты управления.

Что касается цен. Так как это конструктор, то для каждого решения стоимость может отличаться. Но в целом, по-моему, совсем не дорого. Для примера, небольшой комплекс для мониторинга оборудования в организации с ценами компонентов:



Выводы



Если вы системный администратор, то устройства NetPing вполне могут сэкономить вам время и средства на управление оборудованием в организации.

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

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

С другой стороны, бывают ситуации, когда коробочка с одной кнопкой предпочтительнее сложного и гибкого устройства. Мне понравился пример в одной из статей, на которые я ссылался выше: «Настольный видеотелефон Skype у моей бабушки. Сколько я мучался, пытаясь ей настроить автопилотно работающие ноутбуки с камерой, и все равно проблемы и ставить некуда. А коробочка работает прекрасно».

В общем, вряд ли стоит думать, что все изобретено до нас. Успехов в творчестве!

 

Автор статьи - ZakharS, опубликовал статью 6 мая 2011 года.