0
Отвечен

SNMP драйвер

Vyacheslav Shorin 4 года назад в Bugs and problems обновлен Vladimir Ovchinnikov (expert) 4 года назад 24

А что в новой студии с драйвером, в старой вроде работал,что-то изменилось?
Сделал простой проект, добавил драйвер
Устройство принтер, который через MIB Browser информацию возвращает
Из Иридиум даже не соединяется

[11-03-2020 16:22:26.470] DEBUG DIALOGSYSTEM CDialogSystem::ShowPage(Page 1)
[11-03-2020 16:22:26.475] INFO CORE *** The client started to work, version 1.3.15.19681 ***
[11-03-2020 16:22:26.560] DEBUG CUSTOM CCustomDevice(SNMP(1)): StartConnect()
[11-03-2020 16:22:31.567] DEBUG CUSTOM SNMP(1): Time of waiting for connection is over!
[11-03-2020 16:22:31.596] DEBUG CUSTOM CCustomDevice(SNMP(1)): StartConnect()
[11-03-2020 16:22:36.607] DEBUG CUSTOM SNMP(1): Time of waiting for connection is over!
[11-03-2020 16:22:36.635] DEBUG CUSTOM CCustomDevice(SNMP(1)): StartConnect()
[11-03-2020 16:22:41.659] DEBUG CUSTOM SNMP(1): Time of waiting for connection is over!

Проект

И к описанию на вики есть два вопроса
Обязательно укажите адрес контроллера в проекте iRidium, иначе он не будет работать.

Какой контроллер имеется  в виду?

Value Type - тип значения;
Такого параметра в Command нету

а сегодня заработал этот же проект
Тогда пока только вопросы по описанию остались

+1
На рассмотрении

Добрый день.

Адрес контроллера это значение в параметре Host.

Value Type используется для Type=Set.


MiB Brouser получает данные, а Иридиум нет, не могу понять в чем причина

Убедитесь, что указанный вами Local Port не занят.

Стояло 2 драйвера SMTP, значит для каждого драйвера нужно указывать свой local port?

OID .1.3.6.1.2.1.43.11.1.1.9.1.1 для принтера HP в MIB Browser показывает значение -2
Иридиум возвращает 254
OID .1.3.6.1.2.1.4.21.1.4.0.0.0.0 для принтера HP в MIB Browser показывает значение -1
Иридиум возвращает 255

Он как-то неправильно отрицательные числа интерпретирует

В OID .1.3.6.1.2.1.43.11.1.1.9.1.1 процент использования картриджа. Там ожидается целое число (Integer) GET CURRENT SUPPLY LEVEL. Это число производитель может задавать на своё усмотрение (в зависимости от того, какой уровень градаций он установил). Данный OID связан с mib-2.43.11.1.1.8.1.1 который тоже возвращает INTEGER и описан как GET THE MAXIMUN CAPACITY VALUE. Посмотрите, что у вас в последнем.

В описании написано 
The current level if this supply is a container;the remaining space if this supply is a receptacle. If this supply  container/receptacle can reliably sense this value, the value is sensed by the printer and is read-only;otherwise, the value may be written (by a Remote Contol Panel or a Management Application). The value (-1) means other and specifically indicates that the sub-unit places no restrictions on this parameter. The value (-2) means unknown. A value of (-3) means that the printer knows that there is some supply/remaining space, respectively.
Т.е. в данные момент возвращается значение The value (-2) means unknown.(в принтере картридж неоригинальный поэтому такое значение), еще может быть -1 и -3
Я так понимаю Иридиум вернет 255 или 253? 
я попробовал несколько OID на которые MIB Browser возвращает отрицательное значение, Иридиум возвращает
0 - значение, при отсчете от 255
-1    255

-2    254
mib-2.43.11.1.1.8.1.1 выдает 100 и браузер и иридиум

Ёмкость картриджа вычисляется как "mib-2.43.11.1.1.9.1.1 разделить на mib-2.43.11.1.1.8.1.1, умножить на 100 и отбросить остаток".

По-видимому значению "-2" соответствует "253".

Посмотрите через Wireshark, что в пакетах SNMP на самом деле.

Запрос был из Иридиум, возвращает -2, а Иридиум выводи 254

Добрый день.

Приложите дамп Wireshark. Если проект менялся, то приложите и его тоже.

Будет отвечен

Спасибо за информацию.

Ошибка будет исправлена в одном из следующих релизов. Мы сообщим по готовности.

вопрос попутно, в драйвере есть установка опрашивать при старте или нет
Если поставить не опрашивать, как можно опросить позже и задать период опроса через SetInterval() например

Можно изменить параметры методом SetParameters. Если новые параметры отличаются от имевшихся, то драйвер переподключается с новыми. Интересующий вас параметр называется InitTagsAtStart. Период опроса задать нельзя.

Как-то не работает
Установил опрос при старте в false,  на кнопку повесил изменение

IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("But"), function() {

IR.Log("Нажали");

IR.Log(IR.GetDevice("Kyocera").InitTagsAtStart);

IR.GetDevice("Kyocera").SetParameters({InitTagsAtStart: 1});

IR.Log("Поменяли");

IR.Log(IR.GetDevice("Kyocera").InitTagsAtStart);

});

Параметр меняется но опрос драйвера не проходит

[16-03-2020 11:09:34.262] INFO SCRIPT Нажали
[16-03-2020 11:09:34.264] INFO SCRIPT 0
[16-03-2020 11:09:34.275] INFO SCRIPT Поменяли
[16-03-2020 11:09:34.287] INFO SCRIPT 1
[16-03-2020 11:09:34.298] DEBUG CUSTOM CCustomDevice(Kyocera(1)): StartConnect()

Добрый день.

В одном из следующих релизов будут изменения для драйвера SNMP:

1) При включенном опросе значения запрашиваются после Connect().

2) Новый параметр InitTagInterval (интервал задержки между запросами новых значений).

3) Новый параметр InitTagAttemptsCount (количество попыток запроса значения).

Мы сообщим сюда по готовности релиза с этими изменениями.

В том то и дело, что несмотря на на строку в логах StartConnect(), опрос не проходит.

Спасибо, подожду релиза

+1

UDP не устанавливает соединения, поэтому мы сделаем правку на принудительный запрос после Connect().

Отвечен

Добрый день.

В релизе 1.3.16 исправлены ошибки драйвера SNMP.

Сервис поддержки клиентов работает на платформе UserEcho