Плагин SNMP



  • @Erik:

    Пока писал, еще "хотелка" сформулировались.

    Настраиваемый SNMP-MIB умного дома. Чтобы всем его устройствам/сценариям можно было сопоставить SNMP переменную, и управлять ей SNMP командой.

    Добрый день, создаете виртуальное устройство, в плагине SNMP создаете канал, выбираете тип запроса GET/TABLE и время опроса или входящий TRAP, прописываете необходимый OID для запроса/слушания. Переходите в раздел "Команды" и настраиваете действия для виртуально устройства on/off/toggle, прописываете необходимый OID, тип значения и передаваемое значение.

    Теперь вы можете считывать SNMP переменную и управлять ей (SNMP командой) через виртуальное устройство.



  • Вот. Осталось сделать это интуитивно понятным в интерфейсе. 🙂

    Хотя нет.

    Вы не поняли.

    Из сторонней SNMP консоли управлять умным домом.

    чтобы "лампочке на кухне" присвоить OID, и SET-запросом из сторонней консоли изменяя этот OID с 0 на 1 включать "лампочку на кухне".

    А не привязывать виртуальное устройство в УД к внешнему SNMP прибору.

    Видится (например) как дополнительное поле в свойствах устройств. Куда при необходимости устройством управлять ставится OID.

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



  • @Erik:

    Вот. Осталось сделать это интуитивно понятным в интерфейсе. 🙂

    Хотя нет.

    Вы не поняли.

    Из сторонней SNMP консоли управлять умным домом.

    чтобы "лампочке на кухне" присвоить OID, и SET-запросом из сторонней консоли изменяя этот OID с 0 на 1 включать "лампочку на кухне".

    А не привязывать виртуальное устройство в УД к внешнему SNMP прибору.

    Видится (например) как дополнительное поле в свойствах устройств. Куда при необходимости устройством управлять ставится OID.

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

    Добрый день, планируется реализовать механизм Аддонов, данное нововведение поможет реализовать такие вещи как HTTP API, SNMP для управления и интеграцией с самой системой intraHouse.

    Первый Аддон планируется сделать для управления системой через sms/email/телеграмм/голосовой ввод



  • @dev:

    Добрый день, планируется реализовать механизм Аддонов, данное нововведение поможет реализовать такие вещи как HTTP API, SNMP для управления и интеграцией с самой системой intraHouse.

    Первый Аддон планируется сделать для управления системой через sms/email/телеграмм/голосовой ввод

    Хорошие планы!



  • Добрый день.

    А можно решить такую задачку?

    Есть роутер zixel keenetic_4G, можно ли организовать получение информации о подключенных к его Wi-Fi пользователях, и при подключении конкретного пользователя, запускать определенный сценарий.

    В качестве примера использования: Пришел домой, телефон автоматически подключился к сети, умный дом запустил определенный сценарий.



  • @Andrey:

    Добрый день.

    А можно решить такую задачку?

    Есть роутер zixel keenetic_4G, можно ли организовать получение информации о подключенных к его Wi-Fi пользователях, и при подключении конкретного пользователя, запускать определенный сценарий.

    В качестве примера использования: Пришел домой, телефон автоматически подключился к сети, умный дом запустил определенный сценарий.

    Дать телефонам статический IP (через DHCP, но постоянные), и пинговать их плагином Ping.

    Как появятся в сети - объект поменяет статус, что можно использовать для запуска скриптов.

    Только WiFI не всегда не телефонах включен. Поэтому + / -



  • Спасибо, за идею… попробую.👍



  • Наверно лучше через блютуз так сделать, но как?…



  • Либо другой вариант - поставить на телефон приложение Tasker.

    https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ru

    У него есть много настроек, в т.ч. выполнить определенные действия при попадании в определенную Wi-Fi сеть.

    Действием может быть в т.ч. дергание необходимого URL, который, в свою очередь, запустит сценарий в IntraHouse.

    Приложение , правда, платное, ограничения бесплатной версии на память не помню.



  • @filippovsky:

    Либо другой вариант - поставить на телефон приложение Tasker.

    https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ru

    У него есть много настроек, в т.ч. выполнить определенные действия при попадании в определенную Wi-Fi сеть.

    Действием может быть в т.ч. дергание необходимого URL, который, в свою очередь, запустит сценарий в IntraHouse.

    Приложение , правда, платное, ограничения бесплатной версии на память не помню.

    Слишком сложно, пинг проще. Но можно проследить момент если вифи не включен, также не понятно как реагировать на переподключение к сети, если перезагружаешь дома телефон, либо выключаешь\включаешь вифи находясь дома. Много сложностей, по-моему проще считыватель на сходе. Чиркнул брелком и необходимые скрипты для каждого члена семьи запустились



  • @homa:

    @filippovsky:

    Либо другой вариант - поставить на телефон приложение Tasker.

    https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ru

    У него есть много настроек, в т.ч. выполнить определенные действия при попадании в определенную Wi-Fi сеть.

    Действием может быть в т.ч. дергание необходимого URL, который, в свою очередь, запустит сценарий в IntraHouse.

    Приложение , правда, платное, ограничения бесплатной версии на память не помню.

    Слишком сложно, пинг проще. Но можно проследить момент если вифи не включен, также не понятно как реагировать на переподключение к сети, если перезагружаешь дома телефон, либо выключаешь\включаешь вифи находясь дома. Много сложностей, по-моему проще считыватель на сходе. Чиркнул брелком и необходимые скрипты для каждого члена семьи запустились

    С Таскером конечно немного муторнее, хотя настроек там море и стоит копейки - но это скорее для совсем гиков)))

    Между Wi-Fi и NFC/Em-Marine - огромная пропасть! Не надо это путать. Одно дело когда подъехал к дому, зацепился Wi-Fi и включилось уличное освещение, ну может начали открываться ворота территории/гаража. Другое дело когда с помощью Wi-Fi еще снялась охрана с дома и включился свет/розетки и т.д. А вдруг вы решили дойти до соседа, магазина/посидеть в авто и послушать музыку, а в это время дом без сигнализации, территория не охвачена видеонаблюдением и пр? Поэтому нельзя по Wi-Fi снимать сигнализацию, деактивировать камеры, включать свет в доме. Это как раз прерогатива NFC/Em-Marine, которые располагаются у входной двери дома/гаража.

    И скрипты для каждого члена семьи - это как-то излишне. А если вечером приехала семья в полном составе? Как это отследить и что активировать? Можно конечно отслеживать пингом смартфоны всех членов семьи и без разницы кто снимет охрану - запустить сценарий "Все дома"… а так - если дети хотят удобств, вероятно надо на входе их комнат тоже размещать NFC/Em-Marine считыватели - "чиркнул" и включился нужный свет/открылось нужное окно в зависимости от времени суток, запустился плей-лист плеера в данной комнате, включился компьютер/монитор.



  • @Alex_Jet:

    @homa:

    @filippovsky:

    Либо другой вариант - поставить на телефон приложение Tasker.

    https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ru

    У него есть много настроек, в т.ч. выполнить определенные действия при попадании в определенную Wi-Fi сеть.

    Действием может быть в т.ч. дергание необходимого URL, который, в свою очередь, запустит сценарий в IntraHouse.

    Приложение , правда, платное, ограничения бесплатной версии на память не помню.

    Слишком сложно, пинг проще. Но можно проследить момент если вифи не включен, также не понятно как реагировать на переподключение к сети, если перезагружаешь дома телефон, либо выключаешь\включаешь вифи находясь дома. Много сложностей, по-моему проще считыватель на сходе. Чиркнул брелком и необходимые скрипты для каждого члена семьи запустились

    С Таскером конечно немного муторнее, хотя настроек там море и стоит копейки - но это скорее для совсем гиков)))

    Между Wi-Fi и NFC/Em-Marine - огромная пропасть! Не надо это путать. Одно дело когда подъехал к дому, зацепился Wi-Fi и включилось уличное освещение, ну может начали открываться ворота территории/гаража. Другое дело когда с помощью Wi-Fi еще снялась охрана с дома и включился свет/розетки и т.д. А вдруг вы решили дойти до соседа, магазина/посидеть в авто и послушать музыку, а в это время дом без сигнализации, территория не охвачена видеонаблюдением и пр? Поэтому нельзя по Wi-Fi снимать сигнализацию, деактивировать камеры, включать свет в доме. Это как раз прерогатива NFC/Em-Marine, которые располагаются у входной двери дома/гаража.

    И скрипты для каждого члена семьи - это как-то излишне. А если вечером приехала семья в полном составе? Как это отследить и что активировать? Можно конечно отслеживать пингом смартфоны всех членов семьи и без разницы кто снимет охрану - запустить сценарий "Все дома"… а так - если дети хотят удобств, вероятно надо на входе их комнат тоже размещать NFC/Em-Marine считыватели - "чиркнул" и включился нужный свет/открылось нужное окно в зависимости от времени суток, запустился плей-лист плеера в данной комнате, включился компьютер/монитор.

    А если дома, лежа в кровати, перезагрузил смартфон, вифи переподключился, ворота тоже откроются? Всетаки это наверное ручная функция, ну и на радиобрелки иногда посматриваю, но мне в этом плане в квартире проще)



  • @homa:

    А если дома, лежа в кровати, перезагрузил смартфон, вифи переподключился, ворота тоже откроются? Всетаки это наверное ручная функция, ну и на радиобрелки иногда посматриваю, но мне в этом плане в квартире проще)

    У вас какой-то не надежный телефон… но в принципе Вы правы. Wi-Fi в плане выполнения по наличию подключения сценариев штука не нужная. Легче в iH сделать мобильный интерфейс с нужными кнопками. Собственно, что я и сделал у себя.



  • Добрый день! У меня есть плавающий параметр по 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 {}
    
    


  • @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);
        }
      }
    })
    
    
    

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