netping       
тел.(044) 592-86-30   ICQ: 127-935-064


Автоматизация слежения за температурой с NetPing TS v2 - Форум

Меню сайта

Статистика

Форма входа

Поиск

Друзья сайта

Приветствую Вас, Гость · RSS 02.05.2024, 21:42

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Алентис Электроникс » Устройства NetPing » Автоматизация слежения за температурой с NetPing TS v2
Автоматизация слежения за температурой с NetPing TS v2
KSERKSДата: Понедельник, 20.07.2009, 15:11 | Сообщение # 1
Сержант
Группа: Администраторы
Сообщений: 22
Репутация: 100
Статус: Offline
Автоматизация слежения за температурой с помощью устройств NetPing TS v2.
Отечественная компания «Лайт Коммуникейшн» выпускает достаточно интересные устройства, позволяющие осуществлять удалённый мониторинг температуры и поддерживающее до восьми датчиков - NetPing TS v2. Далее будет показано как автоматизировать процедуру сбора данных с устройства с помощью несложных скриптов на perl.

Для начала кратко опишем возможности устройства, декларируемые производителем:
Управление по сети через удобный интерфейс,
Поддержка SNMP trap,
Поддержка syslog.

К сожалению все эти возможности имеют неприятные оговорки, которые были обнаружены уже после покупки устройства, а именно:
Последняя на момент написания статьи стабильная прошивка (версия 50.4.5.B-8) имеет только telnet-интерфейс. Есть более новые прошивки, имеющие уже и веб-интерфейс, но они отмечены разработчиком как тестовые и как показала практика на самом деле содержат массу проблем.
Автору этой статьи так и не удалось заставить устройство нормально отдавать температуру через SNMP trap. Соответствующие опции в конфигурации есть, но в какой-то момент устройство просто переставало отдавать температуру вплоть до перезагрузки по питанию.
С поддержкой syslog проблем не было, однако выяснилось что в syslog устройство отсылает только информацию об изменении собственных настроек, но никак не информацию о температуре. Впринципе в телефонном разговоре разработчик выразил готовность выпустить версию прошивки с таким функционалом, но при условии покупки достаточно большой партии таких устройств.

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

Итак, для того, чтобы получить информацию о температуре на одном из датчиков нужно зайти telnet'ом на IP-адрес устройства, ввести логин и пароль (по умолчанию - visor/ping), выбрать в меню пункт "Termo sensor settings" (нажать цифру 5) и выбрать нужный датчик (набрать "2 <номер_датчика>"), и два раза нажать ENTER. После этого в строке "Current temp" можно увидеть текущую температуру на выбранном датчике.

Впринципе ничего сложного. Теперь можно написать функцию на perl, которая будет проделывать всё это за нас и возвращать нам температуру. Будем предполагать что машина, на которой будет запускаться скрипт, работает под управлением Debian/Ubuntu. Perl скорее всего на ней есть и остаётся только поставить пакет libnet-telnet-perl, который позволит использовать в скриптах функции telnet:

apt-get install libnet-telnet-perl

Ниже приведён пример скрипта, который просто выводит на стандартный вывод температуру на одном из датчиков:

#!/usr/bin/perl

# Подключаем библиотеку для работы с telnet
use Net::Telnet;

# IP-адрес устройства
$netping_host = "10.246.5.130";
# Логин на устройстве
$netping_user = 'visor';
# Пароль на устройстве
$netping_pass = 'ping';

# Функция получения температуры. Имеет один параметр - номер датчика.
sub get_temperature {
my $number = shift;
# Создаём новый объект
$t = new Net::Telnet (Timeout => 10);
# Подключаемся к устройству
$t->open($netping_host);
# Дожидаемся приглашения и вводим логин
$t->waitfor("/Login\:/");
$t->print($netping_user);
# Дожидаемся приглашения и вводим пароль
$t->waitfor("/Password\:/");
$t->print($netping_pass);
# Дожидаемся приглашения и переходим на страницу управления датчиками
$t->waitfor('/\\\\\\>/');
$t->print("5");
# Выбираем датчик
$t->waitfor('/\\\\\\>/');
$t->print("2 ".$number);
$t->waitfor('/\\\\\\>/');
$t->print("");
# Читаем информацию о датчике
($lines) = $t->waitfor('/\\\\\\>/');
# Достаём информацию о температуре и возвращаем результат
@list = grep /Current/, (split /\n/,$lines);
@rslt = split "\\.",(substr($list[0], -10));
return $rslt[scalar(@rslt)-1];
}

# Печатаем информацию о температуре на первом датчике
print get_temperature(1)."\n";

Какие приложения могут быть у этой функции? Ну например отображение таблицы текущих температур на какой-нибудь веб-странице. Для этого надо заменить строку:

print get_temperature(1)."\n";

На следующий код:

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);

$syear = sprintf("%04d",$year+1900);
$smon = sprintf("%02d",$mon+1);
$sday = sprintf("%02d",$mday);

$reportdate=$syear.".".$smon.".".$sday;

$report="";
$report.="<HTML>\n<HEAD>\n<META http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n<TITLE>Daily report (".$reportdate.")</TITLE>\n</HEAD>\n<BODY>\n";
$report.="<p>Report date: ".$reportdate."</p>";
$report.="<TABLE border=1 cellspacing=0 cellpadding=5>\n";
$report.="<TR><TH>Sensor name</TH><TH>Value</TH></TR>\n";

$report.="<TR><TD>Room 1</TD><TD>".get_temperature(1)."</TD></TR>\n";
$report.="<TR><TD>Room 2</TD><TD>".get_temperature(2)."</TD></TR>\n";
$report.="<TR><TD>Room 3</TD><TD>".get_temperature(3)."</TD></TR>\n";

$report.="</TABLE>\n</BODY>\n</HTML>\n";

print $report;

И сохранить скрипт под именем termdata.pl в DocmentRoot вашего веб-сервера. В этом случае при открытии страницы `http://<ваш_сервер >/termadata.pl вы увидите примерно такую табличку:

Report date: 2008.09.24
Sensor name Value
Room 1 25
Room 2 23
Room 3 24

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

Вобщем несмотря на недостатки устройство достаточно интересное и в руках творческого человека полезное и многофункциональное.

Приятной работы!

взято с сайта

 
appleiphone789czДата: Пятница, 04.01.2019, 13:46 | Сообщение # 2
Сержант
Группа: Пользователи
Сообщений: 28
Репутация: 0
Статус: Offline
Техника Apple
 
Форум » Алентис Электроникс » Устройства NetPing » Автоматизация слежения за температурой с NetPing TS v2
  • Страница 1 из 1
  • 1
Поиск:

Copyright LOTOS © 2024


Каталог сайтов и интернет-статистика Украина онлайн Rambler's Top100