Плагин SNMP



  • @homa:

    Добрый день! У меня есть плавающий параметр по snmp. Его значение неважно, но важно понимать доступность OIDа (мак-адрес устройства). Как прописать обработку значений? (value == null)?"0":"1" такая запись переводит сенсор в 1, но когда значение перестает появляться не переводит в 0.

    Лог когда устройство доступно:

    > 29.05 10:02:22.194 snmp1: GET 1.3.6.1.2.1.17.7.1.2.2.1.2.1.0.80.86.177.76.217, oid: 1.3.6.1.2.1.17.7.1.2.2.1.2.1.0.80.86.177.76.217, value: 2
    > 29.05 10:02:22.194 IH: set {"SENSORA15":{"aval":1,"err":0}}
    > 
    

    Лог когда устройство не доступно:

    > 29.05 10:05:01.387 IH: set {}
    > 29.05 10:05:02.389 IH: set {}
    > 
    

    Как вариант - использовать не значение, а флаг ошибки. Для этого использовать настройку на уровне устройства: Установить ошибку если нет данных в течение (сек). Сервер будет устанавливать ошибку, а плагин сбрасывать



  • @intrapro:

    @homa:

    Добрый день! У меня есть плавающий параметр по snmp. Его значение неважно, но важно понимать доступность OIDа (мак-адрес устройства). Как прописать обработку значений? (value == null)?"0":"1" такая запись переводит сенсор в 1, но когда значение перестает появляться не переводит в 0.

    Лог когда устройство доступно:

    > > 29.05 10:02:22.194 snmp1: GET 1.3.6.1.2.1.17.7.1.2.2.1.2.1.0.80.86.177.76.217, oid: 1.3.6.1.2.1.17.7.1.2.2.1.2.1.0.80.86.177.76.217, value: 2
    > > 29.05 10:02:22.194 IH: set {"SENSORA15":{"aval":1,"err":0}}
    > > 
    

    Лог когда устройство не доступно:

    > > 29.05 10:05:01.387 IH: set {}
    > > 29.05 10:05:02.389 IH: set {}
    > > 
    

    Как вариант - использовать не значение, а флаг ошибки. Для этого использовать настройку на уровне устройства: Установить ошибку если нет данных в течение (сек). Сервер будет устанавливать ошибку, а плагин сбрасывать

    Почему-то при такой настройке датчик переходит в ошибку через значительно большее время, чем прогнозируется или не переходит вообще

    upd:

    поставил перевод в ошибку через 1с, получил такую картинку причем по логам snmp устройство офлайн
    snmp1.JPG



  • Не совсем понятно. Поясните вопрос подробнее. Можно дать скриншоты.



  • Большинство устройств не требует разделения community на RO и RW

    Судя по информации в инете, это используется в Cisco

    В данной реализации плагина используется общий community



  • @jejg3:

    для авторизации протокол snmp предусматривает наличие community:

    • rocommunity для запросов get, get next, tablr и trap;

    • rwcommunity для запросов set.

    Они задаются на девайсах, к которым нужен доступ. Тут бывает 2 строки, для разного уровня доступа задаются разные коммунити.

    А в клиенте/консоли указывается, с каким коммунити взаимодействовать с устройством.

    Тут обычно одна строка. Какую укажешь (или какую знаешь) - такой уровень и будет.

    Консоли/клиенту не нужно указывать 2. Всегда достаточно одного. Если нужно и читать и писать - укажите RW.

    Если нужно только читать - укажите RO.

    Если нужно, чтобы ктототам видел статусы. но не мог влиять на работу - скажите ему только коммунити для RO.

    Это такой нехитрый механизм безопасности SNMP.



  • @den_istu@mail.ru:

    Добрый день, всем!

    Есть задача, неким сценарием передавать по SNMP командой SET значение, полученное от устройства STEMP_1_1 при смещении ползунка изменения температуры в заданных пределах устройства на собственный сервер. Подскажите, кто имел дело с данным вопросом, техническая поддержка к сожалению, ничего не отвечает.

    Скрипт сценария написал в таком виде:

    const STEMP_1_1 = Device("STEMP_1_1");

    startOnChange([STEMP_1_1]);

    script({

    start() {

    if (STEMP_1_1.setpoint) {

    this.plugincCommand({unit:"snmp3", command:STEMP_1_1.setpoint});

    }

    }

    })

    В результате отладки скрипта, при смещении ползунка изменения температуры в заданных пределах устройства в плагин SNMP передается значение, полученное от устройства STEMP_1_1.

    Остается решить вопрос, как именно передать командой SET, полученное значение из сценария от устройства STEMP_1_1 на сервер по SNMP.

    Помогите пожалуйста найти решение.

    В приложении скрины отладки плагина, сценария.

    Добрый день! Извините, что техподдержка протянула с ответом 🙂

    Если мы правильно поняли вашу задачу, вы хотите менять уставку на датчике температуры через интерфейс IH и передавать ее по snmp.

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

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

    Кроме того, чтобы команда set появилась при настройке каналов, нужно обновить плагин snmp до версии 0.0.6

    1. Создаем новое устройство. Тип - Актуатор универсальный аналоговый

    Пусть будет ACTOR_SETPOINT1

    Это устройство техническое, его можно особо не настраивать и никуда не выводить.

    2. Создаем канал snmp, привязываем к устройству ACTOR_SETPOINT1

    На вкладке команд нужно настроить команду set - ввести oid

    Настройка_канала_snmp.png

    3.В сценарии при изменении уставки будем менять значение актуатора ACTOR_SETPOINT1. Прямая команда плагину не нужна.

    const STEMP_1_1 = Device("STEMP_1_1");
    const ACTOR_SETPOINT1 = Device("ACTOR_SETPOINT1");
    
    startOnChange([STEMP_1_1]);
    
    script({
      start() { 
        if (this.isChanged(STEMP_1_1,"setpoint")) {
          ACTOR_SETPOINT1.setValue(STEMP_1_1.setpoint);
        }
      }
    })
    
    
    


  • @den_istu@mail.ru:

    Добрый день, спасибо за Ваши ответы, я все выполнил как Вы сказали, но на вкладке команды у аналогового актуатора нет команды SET. скрины в приложении.

    Добрый день! Плагин 0.0.6 был не полностью обновлен :(. Сейчас выложим 0.0.7. Пожалуйста, обновите версию плагина



  • @den_istu@mail.ru:

    Доброе утро, может я что то не так делаю, но к сожалению после обновления плагина до версии 0.0.7 ничего не изменилось 😞

    Добрый день, непонятно 😞

    Возможно, вы сохранили старый манифест как манифест проекта. Вам нужно вызвать меню плагина и если там есть пункт Восстановить основной манифест, нажмите на него.
    restore_manifest.png

    Если этого пункта нет, посмотрите манифест в нижнем окне. там должны быть команды, включая set
    manifest.png
    Если set нет - манифест старый, попробуйте обновить еще раз.



  • Здравствуйте! А никто не пробовал по SNMP получать параметры с synology? Она передает значения в каком-то другом формате. Коммутаторы отдают в counter32, а synology в counter 64:
    fcef26c1-5293-4d36-b54d-8051d87fa127-image.png
    В отладчике:
    c6d4aa6f-94d9-4e20-80fa-a35612042bdc-image.png
    Как получить integer-значение?)



  • Добрый день! Есть проблема с управлением по SNMP. Настраиваю управление светом. Через командную строку дистанционное реле в локальной сети управляется как на включение так и на выключение:
    snmpset -v1 -c private 192.168.1.101 .1.3.6.1.4.1.42505.1.2.3.1.11.0 i 1
    SNMPv2-SMI::enterprises.42505.1.2.3.1.11.0 = INTEGER: 1
    snmpset -v1 -c private 192.168.1.101 .1.3.6.1.4.1.42505.1.2.3.1.11.0 i 0
    SNMPv2-SMI::enterprises.42505.1.2.3.1.11.0 = INTEGER: 0
    В IH настраиваю SNMP плагин (фото ниже) создаю команду на включение и выключение. Community "private"- read-write. К сожалению плагин работает только на выключение. При включении, виртуальная лампа на экране загорается и тут же гаснет. Физически на реле нет реакции. Если включить реле командной строкой то IH выключает его без проблем. IH версия 4.7.0., конфигурация Lite, SNMP плагин 0.0.7, операционка win 10. Летом настраивал плагин таким же образом и плагин работал. Буду очень признателен за любой полезный совет.
    SNMP настройки плагина.jpg
    Отладчик.jpg
    Мнемосхема 1 этаж.jpg
    1 этаж.jpg



  • @slasatavic Добрый день, выпущено обновление плагина 0.0.8, проверьте пожалуйста ☺



  • Заработало! Спасибо.



  • @slasatavic Отлично 👍



  • @dev а мою проблему это не решит?)



  • @homa Добрый день, доступно обновление ☺



  • @dev Спасибо!



  • Добрый день, доступно обновление плагина 0.0.18



  • Подскажите, плагин присваивает значения актуаторам только в каналах с гет-запросами.
    Запросами с табличным типом значения получает, но актуаторам их не присваивает.
    Отладчик:

    02.03 15:51:54.391 snmp1: GET 1.3.6.1.2.1.33.1.2.3.0, oid: 1.3.6.1.2.1.33.1.2.3.0, value: 0
    02.03 15:51:54.393 IH: get [ { dn: 'ACTORA93', value: '0', ext: {} } ]
    set { ACTORA93: { aval: 0, err: 0 } }
    02.03 15:51:54.394 snmp1: GET 1.3.6.1.2.1.33.1.2.4.0, oid: 1.3.6.1.2.1.33.1.2.4.0, value: 97
    02.03 15:51:54.395 IH: get [ { dn: 'ACTORA94', value: '97', ext: {} } ]
    set { ACTORA94: { aval: 97, err: 0 } }
    02.03 15:51:54.742 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.2, oid: 1.3.6.1.2.1.33.1.4.4.1.2.1, value: 230
    02.03 15:51:54.742 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.2, oid: 1.3.6.1.2.1.33.1.4.4.1.2.2, value: 0
    02.03 15:51:54.743 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.2, oid: 1.3.6.1.2.1.33.1.4.4.1.2.3, value: 0
    02.03 15:51:54.988 snmp1: TABLE 1.3.6.1.2.1.33.1.3.3.1.2, oid: 1.3.6.1.2.1.33.1.3.3.1.2.1, value: 500
    02.03 15:51:54.989 snmp1: TABLE 1.3.6.1.2.1.33.1.3.3.1.2, oid: 1.3.6.1.2.1.33.1.3.3.1.2.2, value: 0
    02.03 15:51:54.989 snmp1: TABLE 1.3.6.1.2.1.33.1.3.3.1.2, oid: 1.3.6.1.2.1.33.1.3.3.1.2.3, value: 0
    02.03 15:51:54.990 snmp1: TABLE 1.3.6.1.2.1.33.1.3.3.1.3, oid: 1.3.6.1.2.1.33.1.3.3.1.3.1, value: 230
    02.03 15:51:54.991 snmp1: TABLE 1.3.6.1.2.1.33.1.3.3.1.3, oid: 1.3.6.1.2.1.33.1.3.3.1.3.2, value: 0
    02.03 15:51:54.992 snmp1: TABLE 1.3.6.1.2.1.33.1.3.3.1.3, oid: 1.3.6.1.2.1.33.1.3.3.1.3.3, value: 0
    02.03 15:51:54.995 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.4, oid: 1.3.6.1.2.1.33.1.4.4.1.4.1, value: 0
    02.03 15:51:54.996 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.4, oid: 1.3.6.1.2.1.33.1.4.4.1.4.2, value: 0
    02.03 15:51:54.997 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.4, oid: 1.3.6.1.2.1.33.1.4.4.1.4.3, value: 0
    02.03 15:51:55.018 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.5, oid: 1.3.6.1.2.1.33.1.4.4.1.5.1, value: 25
    02.03 15:51:55.019 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.5, oid: 1.3.6.1.2.1.33.1.4.4.1.5.2, value: 0
    02.03 15:51:55.019 snmp1: TABLE 1.3.6.1.2.1.33.1.4.4.1.5, oid: 1.3.6.1.2.1.33.1.4.4.1.5.3, value: 0
    


  • Подскажите, можно как-то присвоить значение из table-запроса актуатору?
    Или функциональность плагина предполагает только посмотреть значение в отладчике, если больше никаких других возможностей нет?


Авторизуйтесь, чтобы ответить