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

Управление IO линиями устройства NetPing через Telegram

Управление IO линиями устройства мониторинга NetPing IO v2 через Telegram

Мы продолжаем публикацию цикла статей по реализации интеграции устройств NetPing с мессенджером «Telegram». Ранее в нашем блоге мы достаточно подробно рассматривали процесс создания ботов для мессенджера «Telegram», управление розетками IP PDU NetPing через Telegram и управление кондиционером в серверной комнате через Telegram. В этой статье мы рассмотрим процесс настройки бота для управления дискретными линиями ввода-вывода устройства мониторинга NetPing IO v2. Подобная интеграция может применяться на практике в следующих случаях:

  • Обслуживающий персонал с помощью мессенджера «Telegram» может отправлять команду на открытие и закрытие шлагбаума. В этом случае использование бота позволяет отказаться от использования обычной механической стационарной кнопки в пользу варианта удалённого управления посредством мобильного телефона и/или планшета. Шлагбаум подключается к BM8070D силовое реле 16А/250В на DIN-рейку, которое в свою очередь подключается к IO линии устройства мониторинга NetPing IO v2;
  • Технический персонал с помощью мессенджера «Telegram» может управлять нагрузкой (сервер, коммутатор, роутер, освещение, вентиляция и прочее), подключённой к управляемой розетке NetPing AC/DIN, в независимости от своего географического положения;
  • Технический персонал с помощью мессенджера «Telegram» может удалённо открывать или закрывать электрозамок на входной двери в серверную комнату тем самым обеспечивая дополнительную защиту от проникновения посторонних лиц на объект.

Требуемое оборудование, программное обеспечение и подготовка к разработке

Для реализации функционала удалённого управления дискретными линиями ввода-вывода устройства NetPing через «Telegram» потребуется следующий комплект оборудования:

  • Устройство мониторинга NetPing IO v2 – 1 шт.;
  • BM8070D силовое реле 16А/250В на DIN-рейку – 1 шт.;
  • Шлагбаум – 1 шт.;
  • Управляемая розетка NetPing AC/DIN – 1 шт.;
  • Электрозамок на входной двери в серверную комнату – 1 шт.
  • ПК или сервер с предустановленной операционной системой Linux или Windows и доступом в Интернет – 1 шт.;
  • Локальная сеть для связи между устройством мониторинга и ПК, на котором выполняется скрипт бота – 1 шт.;
  • Мессенджер «Telegram» на ПК или смартфоне с доступом к Интернет – 1 шт.

Считаем, что устройство мониторинга NetPing IO v2 настроено на работу в вашей локальной сети. BM8070D силовое реле 16А/250В на DIN-рейку, управляемая розетка NetPing AC/DIN и электрозамок подключены к соответствующим линиям ввода-вывода устройства NetPing IO v2 и настроены. Подробнее ознакомиться с настройками NetPing IO v2 можно в документации.

Ниже представлена примерная схема подключения оборудования к устройству мониторинга NetPing IO v2 (более подробную информацию по подключению внешних устройств можно посмотреть в руководстве пользователя на странице «Подключение датчиков» либо обратиться в службу технической поддержки по адресу support@netping.ru):

NetPing IO v2 схема подключения оборудования

Также предполагается, что у вас настроен сервер с OS Ubuntu, и созданы боты в соответствии с рекомендациями этой статьи. В данном примере мы создали бота с именем @NetPing_IO_bot.

Программирование функций управления дискретными линиями ввода-вывода для бота @NetPing_IO_bot

Запрограммируем расширенный функционал для нашего бота @NetPing_IO_bot. Бот управляет дискретными линиями ввода-вывода устройства NetPing IO v2 при помощи URL-encoded команд, которые прописаны в коде скрипта бота и назначены кнопкам. Правим основной файл скрипта управляющего ботом – «bot.py»:

import telebot
import requests
from telebot import types
import conf_bot

auth = conf_bot.auth
url = conf_bot.url
bot = telebot.TeleBot(conf_bot.TOKEN)

# Обработка команд "/start" и "/help"
@bot.message_handler(commands=['start', 'help'])
def start(message):
     markup = types.ReplyKeyboardMarkup()
     markup.row('/barrier', '/socket', '/door')
     markup.row('/help')
     bot.send_message(message.chat.id, '''
     ***Тестовый бот для управления IO линиями устройства NetPing IO v2***
     Чтобы открыть или закрыть шлагбаум используйте команду /barrier
     Чтобы включить, выключить или перезагрузить роутер используйте команду /socket
     Чтобы открыть или закрыть дверь в серверную используйте команду /door
     Для вызова этой справки используйте команду /help
          ''',
     reply_markup=markup)

# Обработка команды "/barrier", создание меню.
@bot.message_handler(commands=['barrier'])
def status(m):
     keyboard = types.InlineKeyboardMarkup()
     keyboard.add(*[types.InlineKeyboardButton(text=name,
          callback_data=name) for name in ['Открыть шлагбаум',
     'Закрыть шлагбаум']])
     msg = bot.send_message(m.chat.id, '''
          Эта команда позволяет открыть или закрыть шлагбаум.
          Выберите необходимое действие: ''',
          reply_markup=keyboard)
# Обработка команды "/socket", создание меню.
@bot.message_handler(commands=['socket'])
def status(m):
     keyboard = types.InlineKeyboardMarkup()
     keyboard.add(*[types.InlineKeyboardButton(text=name,
          callback_data=name) for name in ['Включить розетку',
     'Выключить розетку', 'Перезагрузить розетку' ]])
     msg = bot.send_message(m.chat.id, '''
          Эта команда позволяет управлять розеткой электропитания.
          Выберите необходимое действие: ''',
          reply_markup=keyboard)

# Обработка команды "/door", создание меню.
@bot.message_handler(commands=['door'])
def status(m):
     keyboard = types.InlineKeyboardMarkup()
     keyboard.add(*[types.InlineKeyboardButton(text=name,
          callback_data=name) for name in ['Открыть электрозамок',
     'Закрыть электрозамок' ]])
     msg = bot.send_message(m.chat.id, '''
          Эта команда позволяет открывать или закрывать электрозамок на двери в серверную.
          Выберите необходимое действие: ''',
          reply_markup=keyboard)

# Обработка нажатия кнопки меню "Открыть шлагбаум"
@bot.callback_query_handler(func=lambda c: True)
def inline(c):
     if c.data =='Открыть шлагбаум':
          bot.edit_message_text(
                chat_id=c.message.chat.id,
                message_id=c.message.message_id,
                text='Шлагбаум открыт',
                parse_mode='Markdown')
          r = requests.get(url+'io.cgi?io1=1', auth=auth)

#Обработка нажатия кнопки меню "Закрыть шлагбаум"
     elif c.data =='Закрыть шлагбаум':
          bot.edit_message_text(
                chat_id=c.message.chat.id,
                message_id=c.message.message_id,
                text='Шлагбаум закрыт',
                parse_mode='Markdown')
          r = requests.get(url+'io.cgi?io1=0', auth=auth)
            
# Обработка нажатия кнопки меню "Включить розетку"
     elif c.data =='Включить розетку':
          bot.edit_message_text(
                chat_id=c.message.chat.id,
                message_id=c.message.message_id,
                text='Роутер включен',
                parse_mode='Markdown')
          r = requests.get(url+'io.cgi?io2=0', auth=auth)

#Обработка нажатия кнопки меню "Выключить розетку"
     elif c.data =='Выключить розетку':
          bot.edit_message_text(
                chat_id=c.message.chat.id,
                message_id=c.message.message_id,
                text='Роутер выключен',
                parse_mode='Markdown')
          r = requests.get(url+'io.cgi?io2=1', auth=auth)

#Обработка нажатия кнопки меню "Перезагрузить розетку"
     elif c.data =='Перезагрузить розетку':
          bot.edit_message_text(
                chat_id=c.message.chat.id,
                message_id=c.message.message_id,
                text='Роутер перезагружен',
                parse_mode='Markdown')
          r = requests.get(url+'io.cgi?io2=f,10', auth=auth)   

# Обработка нажатия кнопки меню "Открыть электрозамок"
     elif c.data =='Открыть электрозамок':
          bot.edit_message_text(
                chat_id=c.message.chat.id,
                message_id=c.message.message_id,
                text='Дверь в серверную открыта',
                parse_mode='Markdown')
          r = requests.get(url+'io.cgi?io3=1', auth=auth)

#Обработка нажатия кнопки меню "Закрыть электрозамок"
     elif c.data =='Закрыть электрозамок':
          bot.edit_message_text(
                chat_id=c.message.chat.id,
                message_id=c.message.message_id,
                text='Дверь в серверную закрыта',
               parse_mode='Markdown')
          r = requests.get(url+'io.cgi?io3=0', auth=auth)

bot.polling()

Исходные файлы бота можно скачать здесь.

Работа с ботом удалённого управления IO линиями устройства NetPing IOv2

Активируем диалог с ботом @NetPing_IO_bot, в скрипт для управления которым мы добавили новый функционал. После того, как мы отправим боту команду «/start» (1), в окно диалога будет выведена памятка (2), и ниже поля для ввода сообщения появятся кнопки (3), дублирующие команды для управления ботом:

Telegram начало диалога с ботом для управления IO линиями NetPing IO v2

Теперь последовательно ознакомимся с командами. Первая команда «/barrier» предназначена для управления шлагбаумом и имитирует нажатие физической кнопки. При выборе команды в окне диалога отображается уведомление о выбранной команде (1) и кнопки для выбора возможных действий (2). Доступны действия «Открыть шлагбаум» и «Закрыть шлагбаум»:

Telegram команда для управления шлагбаумом подключённым к NetPing IO v2

При выполнении команды в окне диалога выводится уведомление о текущем состоянии шлагбаума. На скриншоте ниже результаты последовательного нажатия на кнопки управления шлагбаумом:

Telegram результат управления шлагбаумом подключённым к NetPing IO v2

Следующая команда «/socket» позволяет управлять питанием управляемой розетки NetPing AC/DIN и соответственно, питанием подключённой к ней нагрузки (в нашем примере роутер). При выборе команды в окне диалога отображается уведомление о выбранной команде (1) и кнопки для выбора возможных действий (2):

Telegram команда для управления розеткой подключённой к NetPing IO v2

Для управления питанием управляемой розетки NetPing AC/DIN доступны команды «Включить», «Выключить» и «Перезагрузить». Команда «Перезагрузить» выполняет кратковременное (10 секунд) переключение линии ввода-вывода в инверсное состояние (выдача импульса сброса), таким образом выполняется перезагрузка подключённого к розетке оборудования. При выполнении команды в окне диалога выводится уведомление о текущем состоянии линии ввода-вывода. На скриншоте ниже результаты последовательного нажатия на кнопки управления розеткой электропитания:

Telegram результаты управления розеткой подключённой к NetPing IO v2

Команда «/door» работает аналогично команде «/barrier», но управляет электрозамком, который подключён к IO линии 3 устройства NetPing IO v2. При выборе команды в окне диалога отображается уведомление о выбранной команде (1) и кнопки для выбора возможных действий (2). Доступны действия «Открыть электрозамок» и «Закрыть электрозамок»:

Telegram команда для управления электрозамком подключённым к NetPing IO v2

При выполнении команды в окне диалога выводится уведомление о текущем состоянии двери в серверную. На скриншоте ниже результаты последовательного нажатия на кнопки управления электрозамком:

Telegram результат управления электрозамком подключённым к NetPing IO v2

Таким образом реализуется удалённое управление дискретными линиями ввода-вывода устройства мониторинга NetPing IO v2 при помощи мессенджера «Telegram».


  • Устройство NetPing IO v2
  • Устройство UniPing server solution v3
  • Устройство UniPing server solution v3/SMS
  • Устройство UniPing v3

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


Каталог устойств мониторинг серверных комнат и шкафов
Все устройства
Устройство 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
Блок питания 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
Устройство NetPing 2/PWR-220 v4/SMS
Устройство UniPing server solution v4/SMS
Устройство NetPing 8/PWR-220 v4/SMS
VT592 кабельный датчик протечки
WLC10 кабель протечки
NetPing Connection board v2 (коммутационная плата для UniPing v3)
Инжектор питания POE (стандарта 802.3af)
NetPing датчик наличия электропитания 995S1
Устройство NetPing 2/PWR-220 v12/ETH
Устройство NetPing 2/PWR-220 v13/GSM3G
Датчик наличия 220В (мод. HRS05005), 1.5м
NetPing удлинитель-разветвитель 1-wire на 5 портов, модель R912R1
NetPing датчик качества электропитания 1-wire 910S20
PLController R15250 силовое реле 15A/250В на DIN-рейку
NetPing адаптер датчиков с аналоговым интерфейсом 0-20мА, модель 886A01
Устройство NetPing server solution v5
Устройство NetPing ИК модуль, модель 3801
Устройство NetPing server solution v5/GSM3G
Устройство NetPing 4/PWR-220 v6.1/GSM3G
Устройство NetPing 4/PWR-220 v6.2/GSM3G
NetPing IO v3
NetPing Input+Relay v1
NetPing NP-GB322
Устройство NetPing 4/PWR-220 v6.4/ETH
▼ Все теги
Новинки
NetPing v4
Устройство удаленного мониторинга датчиков по сети Ethernet/Internet на DIN-рейку. Позволяет удаленно подробнее...

Цена: 10 650 руб.

Источник питания СКАТ MOLLUSK-VRK 12/2
Адаптер питания может использоваться для питания устройств NetPing и некоторых моделей управляемых коммутаторов.Выходное подробнее...

Цена: 950 руб.

Устройство NetPing 4/PWR-220 v6.4/ETH
Устройство удаленного управления розетками электропитания по сети Ethernet/Internet (IP PDU).4 канала подробнее...

Цена: 15 730 руб.

NetPing NP-GB322
Коммутатор Ethernet на 5 портов 10/100/1000 BASE-TX с поддержкой PoE (электропитание по Ethernet-кабелю) 5 подробнее...

Цена: 4 290 руб.

NetPing Input+Relay v1
Компактное устройство удаленного мониторинга датчиков по сети Ethernet/Internet. Позволяет удаленно подробнее...

Цена: 6 200 руб.

NetPing IO v3
Компактное бескорпусное устройство удаленного мониторинга датчиков по сети Ethernet/Internet. Позволяет подробнее...

Цена: 2 500 руб.

Устройство NetPing 4/PWR-220 v6.2/GSM3G
Устройство удаленного управления розетками электропитания по сети Ethernet/Internet (IP PDU) c поддержкой подробнее...

Цена: 20 280 руб.

Устройство NetPing 4/PWR-220 v6.1/GSM3G
Устройство удаленного управления розетками электропитания по сети Ethernet/Internet (IP PDU) c поддержкой подробнее...

Цена: 20 280 руб.

NetPing блок розеток 1-wire 888S0201
Блок розеток предназначен для удаленного управления нагрузкой. Устройство не является самостоятельным, подробнее...

Цена: 10 980 руб.

Устройство NetPing ИК модуль, модель 3801
ИК-контроллер для дистанционного и автоматического управления устройствами с инфракрасным интерфейсом подробнее...

Цена: 8 580 руб.

Устройство NetPing server solution v5
Устройство удаленного мониторинга датчиков по сети Ethernet/Internet. Позволяет удаленно получать информацию подробнее...

Цена: 18 000 руб.

Устройство NetPing server solution v5/GSM3G
Устройство удаленного мониторинга датчиков по сети Ethernet/Internet. Позволяет удаленно получать информацию подробнее...

Цена: 26 000 руб.

PLController R15250 силовое реле 15A/250В на DIN-рейку
Силовое реле в корпусе для крепления на DIN-рейку предназначено для удаленной коммутации мощной нагрузки.Напряжение подробнее...

Цена: 1 429 руб.

NetPing адаптер датчиков с аналоговым интерфейсом 0-20мА, модель 886A01
Адаптер предназначен для подключения аналоговых датчиков, передающих сигнал изменением протекающего подробнее...

Цена: 3 354 руб.

NetPing датчик качества электропитания 1-wire 910S20
Датчик предназначен для мониторинга качества электропитания в розетке. Датчик должен быть подключен подробнее...

Цена: 2 240 руб.

NetPing удлинитель-разветвитель 1-wire на 5 портов, модель R912R1
Активный удлинитель-разветвитель для подключения датчиков 1-wire к устройствам NetPing5 портов для подключения подробнее...

Цена: 1 400 руб.

Устройство NetPing 2/PWR-220 v12/ETH
Управляемый блок удаленного распределения питания по сети Ethernet/Internet (IP PDU)2 независимые управляемые подробнее...

Цена: 8 157 руб.

Устройство NetPing 2/PWR-220 v13/GSM3G
Управляемый блок удаленного распределения питания по сети Ethernet/Internet (IP PDU) c поддержкой управления подробнее...

Цена: 15 700 руб.

NetPing датчик наличия электропитания 995S1
Датчик позволяет определить наличие напряжения в розетке питания. Выполнен в корпусе блока питания с подробнее...

Цена: 1 224 руб.

WLC10 кабель протечки
Чувствительный кабель для использования совместно с датчиком VT592. Может быть смонтирован в труднодоступных подробнее...

Цена: 6 700 руб.

VT592 кабельный датчик протечки
Датчик предназначен для работы совместно с кабелем протечки WLC10. Возможность подключения датчика как подробнее...

Цена: 3 800 руб.

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

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