Плагин MegaD



  • @artem521 не совсем в курсе, в чем там проблема? Нельзя просто использовать коэффициент пересчета напряжения в физическое значение на вкладке Обработка? Или зависимость нелинейная?



  • Участник @intrapro написал в Плагин MegaD:

    @artem521 не совсем в курсе, в чем там проблема? Нельзя просто использовать коэффициент пересчета напряжения в физическое значение на вкладке Обработка? Или зависимость нелинейная?

    Да проблемы то нету, просто незнал как это сделать)



  • Участник @intrapro написал в Плагин MegaD:

    Тогда просветите, пока мы в неведении

    Выше все написано.
    На меге порт сконфигурирован как IN P&R.
    Без сервера - работает как написано, управляет своим же выходом 23:3.

    Но стоит только прописать IP и порт сервера, как настройка порта у меги меняется с P&R на P.
    И это не исправляется. При изменении конфигурации после сохранения мега перезагружается, и возвращает настройку P.

    Убираю настройку сервера - и настройка порта сама возвращается к P&R.

    Потом оказалось, что достаточно изменить слушающий порт на сервере. С 8082 на 8083.

    Но факт изменения настройки порта меги сервером IH на лицо. 🙂



  • Подскажите, будет ли доработан плагин для обработки одновременных срабатываний каналов MegaD-16I-XT?
    Подключил датчики движения, там через раз происходят одновременные срабатывания которые не обрабатываются плагином. Периодически опрашивать датчики движения, как вы понимаете, нет ни какого смысла.



  • Да, доработаем. По сроку не скажу



  • C портами какая-то мистика, объяснить логически не могу 😞
    В этот порт запросы отправляет контроллер, плагин открывает слушающий порт и только отвечает, сам передать ничего не может.

    Еще можно посмотреть порт 8082 с помощью netstat или lsof, возможно, он занят кем-то.

    sudo netstat -ntulp
    или
    sudo lsof -i | grep 8082

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



  • Добрый день, подскажите как настроить Диммер для лед ленты обычной, не rgb.



  • @intrapro
    Пробовал повторить ситуацию - менял порты на сервере и на меге на 8082.
    Такого же результата добиться не смог.
    Но есть другой.
    alt text
    После смены порта в настройках плагина у плагина меняется отображение версии. Обновление экрана исправляет ситуацию.
    Но это каждый раз случается при корректировке порта. Повторяемая ситуация.



  • Ситуация повторилась.
    Для повторения ситуации нужно щелкнуть выключателем.

    И порт, меги настроенный как P&R становится P

    Лог отладчика

    15.12 07:29:18.056 megad1: 192.168.13.10 => localhost:8083 HTTP GET /?pt=16&cnt=1
    15.12 07:29:18.058 IH: get [ { id: '16', value: '1' }, { id: '23', value: '1' } ]
    15.12 07:29:18.060 megad1: 192.168.13.10 <= localhost:8083 23:1
    15.12 07:29:19.050 megad1: 192.168.13.10 => localhost:8083 HTTP GET /?pt=16&m=2&cnt=1
    15.12 07:29:19.051 IH: get [ { id: '16', value: '1' }, { id: '23', value: '1' } ]
    set { SENSOR6: { dval: 1, err: 0 }, LAMP13: { dval: 1, err: 0 } }
    15.12 07:29:19.052 megad1: 192.168.13.10 <= localhost:8083 23:1
    15.12 07:29:20.489 megad1: 192.168.13.10 => localhost:8083 HTTP GET /?pt=16&cnt=2
    15.12 07:29:20.493 IH: get [ { id: '16', value: '1' }, { id: '23', value: '1' } ]
    

    Происходило так. Перед началом проверил в веб интерфейсе моду порта 16, все правильно, P&R
    Включил выключаель - свет включился.
    Выключил выключатель - свет не выключился.
    ПРоверил моду порта 16 в веб интерфейсе меги - там P.



  • @Erik
    /?pt=16&m=1 (Release) контроллер ни разу ни присылает
    А зачем вам событие R для выключателя? У вас переключатель, а не кнопочный выключатель?
    Еще вопрос - где-то такая конфигурация работает? Мы сами не отслеживаем обновления прошивок MegaD 😞
    Но точно могу сказать - со стороны сервера ничего на контроллер не отсылается, чего бы не было в логе. Может меге не нравится что подряд две одинаковые команды в ответ приходят? Если нужно что-то переделать - переделаем. Знать бы, что 🙂



  • Дв, у меня выклчатели, а не кнопки.

    Вот это что такое?
    15.12 07:29:19.050 megad1: 192.168.13.10 => localhost:8083 HTTP GET /?pt=16&m=2&cnt=1



  • Контроллер MegaD отправляет сообщение о длительном нажатии (m=2), если оно длится более 1.5 сек по документации https://ab-log.ru/smart-house/ethernet/megad-2561
    Фактически, как видим менее секунды
    Можно попробовать перехватывать это сообщение и ничего не включать: добавить во входящие /?pt=16&m=2, а в команду оставить пустую, тогда сервер вернет ответ на контроллер без команды



  • Ни на одном другом выключателе такого не приходит.
    Не включал я обработку длинных нажатий. У меня коротких нет. Это выключатели, а не кнопки.
    Почему при общении с сервером при включении выключателя меняется настройка порта?
    Если отладчик ничего не показывает, куда еще смотреть?

    Что такое "значение физического уровня" и "значение логического уровня" в свойствах канала плагина?
    У 16 порта у единственного они 255 и 100 соответственно.



  • Участник @Erik написал в Плагин MegaD:

    Ни на одном другом выключателе такого не приходит.
    Не включал я обработку длинных нажатий. У меня коротких нет. Это выключатели, а не кнопки.

    То есть выключателей несколько, но один работает по другому? Это хорошо. Вы можете в отладчике посмотреть, m=2 думаю приходит и там.
    А обработка длинных видимо не отключается, это встроенная фича MegaD, как повествует мануал:

    Если используется сервер, то в том случае, когда вход (в режиме P или P&R) удерживается замкнутым более 1,5 секунд, на сервер отправляется второй запрос, в котором передается параметр m=2.
    
    http://192.168.0.1/megad.php?pt=4
    // спустя 1,5 секунды удержания клавиши выключателя
    http://192.168.0.1/megad.php?pt=4&m=2
    

    Почему при общении с сервером при включении выключателя меняется настройка порта? Если отладчик ничего не показывает, куда еще смотреть?

    Нашей экспертизы тут не хватает 🙂 Может проконсультироваться на ab-log? Что может приводить к переключению настройки? Еще раз повторю, плагин не отправляет никаких скрытых сообщений
    А здесь он вообще только отвечает ответом на запрос.
    Кстати, можно попробовать такую комбинацию: в ответ команду не отправлять (Передать в ответ оставить пустым), но заполнить Выполнить запрос (в т.ч. на другой MegaD), и там прописать команду включения как /sec/?pt=23&cmd=1
    Но это только как эксперимент, особого смысла здесь нет

    Что такое "значение физического уровня" и "значение логического уровня" в свойствах канала плагина? У 16 порта у единственного они 255 и 100 соответственно.

    Это должно быть только у аналоговых актуаторов (напр у диммеров 100% яркость соответствует значению 255) , для бинарных это никакой роли не играет. У вас же выбран бинарный вход? Если нет, попробуйте заменить. Но не думаю, что это поможет



  • Участник @intrapro написал в Плагин MegaD:

    Это должно быть только у аналоговых актуаторов (напр у диммеров 100% яркость соответствует значению 255) , для бинарных это никакой роли не играет. У вас же выбран бинарный вход? Если нет, попробуйте заменить. Но не думаю, что это поможет

    Объясните, как оно там появляется.
    Потому, как я - не ставил. И порт не аналоговый актуатор. А универсальный бинарный датчик.
    Порт 16
    Зеленым выделены другие аналогичные выключатели, у которых проблем нет.



  • Участник @Erik написал в Плагин MegaD:

    Объясните, как оно там появляется.
    Потому, как я - не ставил. И порт не аналоговый актуатор. А универсальный бинарный датчик.
    Зеленым выделены другие аналогичные выключатели, у которых проблем нет.

    Объяснить могу, но это тонкости реализации редактора каналов на сервере.
    Если вы войдете внутрь канала для редактирования, там этих полей нет. Вероятно, когда канал создавался, он был скопирован из AO. Или тип переключался, так как это разрешено. Потом тип был изменен на DI, но поля остались, хотя они для канала этого типа не используются.
    Исправить это очень легко - удалите канал и создайте его как DI.
    Я даже предлагаю Вам 16 канал не создавать, так как для функции выключателя он не нужен. Входящее сообщение pt=16 просто отправляет команду 23:1



  • Нет. Никогда он не создавался как АО.
    И, кроме того, я его удалял и создавал заново, сразу как DI. Чтобы исключить некорректный конфиг.
    Поэтому, кстати, он последний в списке.

    И по поводу этой части лога.

    15.12 07:29:19.050 megad1: 192.168.13.10 => localhost:8083 HTTP GET /?pt=16&m=2&cnt=1
    15.12 07:29:19.051 IH: get [ { id: '16', value: '1' }, { id: '23', value: '1' } ]
    set { SENSOR6: { dval: 1, err: 0 }, LAMP13: { dval: 1, err: 0 } }
    

    При всем моем уважении. Сервер даже на включение меге команду не послал, пока я в расширениях запись не создал.
    Так там созданы только для /?pt=16 и /?pt=16&m=1
    Для /?pt=16&m=2 нет. На каком основании он отрабатывается вообще?



  • Участник @Erik написал в Плагин MegaD:

    Нет. Никогда он не создавался как АО.
    И, кроме того, я его удалял и создавал заново, сразу как DI. Чтобы исключить некорректный конфиг.
    Поэтому, кстати, он последний в списке.

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

    При всем моем уважении. Сервер даже на включение меге команду не послал, пока я в расширениях запись не создал.
    Так там созданы только для /?pt=16 и /?pt=16&m=1
    Для /?pt=16&m=2 нет. На каком основании он отрабатывается вообще?

    Алгоритм обработки входящих сообщений такой: ищется максимально совпадающий запрос.

    • Для /pt=16&m=1&cnt=xx это /pt=16&m=1

    • Для /pt=16&cnt=xx это /pt=16

    • Для /pt=16&m=2&cnt=xx это тоже /pt=16, так как других нет

    Если Вы добавите /pt=16&m=2 с пустой командой, то он команду отсылать не будет, отправит пустой ответ.



  • @Erik, честно говоря, нет необходимости в плагине делать каналы для выключателей, СМК, датчиков движения, то есть для всех, которые имеют "сухой контакт". Все их сработки просто должны быть описаны в расширениях.
    В качестве примера привожу расширениях с 3-х разных своих MegaD:
    Switch_Click&M2.png

    Участник @intrapro написал в Плагин MegaD:

    Алгоритм обработки входящих сообщений такой: ищется максимально совпадающий запрос.

    Как я уже говорил, тут то ли какие-то чудеса, то ли @intrapro (без обид!) не понимает где есть проблема. Потому что алгоритм в iH Berry работал безупречно. То есть:

    1. Если было прописано условие pt=0, то оно срабатывало только при входящем pt=0&cnt=xx
    2. Если было прописано условие pt=0&m=1, то оно срабатывало только при входящем pt=0&m=1&cnt=xx
    3. Если было прописано условие pt=0&m=2, то оно срабатывало только при входящем pt=0&m=2&cnt=xx
      Поскольку при переходе на iH Cherry и воссоздании всех настроек из iH Berry у меня все стало работать по другому...
      В общем, надо допилить этот алгоритм - чтобы он работал как полагается:)

    Мои рассуждения:

    1. Имеем, например, нужное условие срабатывания pt=0&m=1
    2. Имеем входящее pt=0&m=1&cnt=xx
      Нам нужно из всех условий данного плагина сформировать массив и при входящем сообщении отбросить у него ключ cnt и полученное сообщение сравнить со всеми элементами массива:
    massiv[number_element].indexOf("pt=0&m=1") >= 0
    

    Как итог, на выходе мы получим, что по заданному входящему есть совпадения в массиве, соответствующие, только pt=0&m=1...
    Другой момент, если нам надо будет обращать внимание на значение ключа cnt.

    @intrapro, в вашем коде мне немного не хватает комментариев чтобы читать код с листа, но у Вас все так и делается - утилитой формируется массив из всех условий и ищется первый номер условия, которое совпадает со входящим сообщением:

    for (var i = 0; i < tableMReq[pathname][id].length; i++) {
      if (isSuitable(tableMReq[pathname][id][i].queryprops, query)) {
      return tableMReq[pathname][id][i];
    }
    

    А вот эта функция как раз отвечает за принцип поиска совпадений сообщения body в массиве условий, но она мне реально не понятна...

    function isSuitable(patobj, qobj) {
        if (!patobj || !qobj) return;
    
        for (var prop in patobj) {
          if (patobj[prop] == "*") {
            if (qobj[prop] == undefined) return;
          } else if (qobj[prop] != patobj[prop]) return;
        }
        return true;
      }
    


  • @Alex_Jet , у меня ситуация странная.
    Потому, что до обновления прошивки на мегах все работало отлично.
    После обносления прошивки вылез этот один косяк, но только после того, как мегу присоединил к серверу. Без связки с сервером работает корректно.

    Я сам не могу найти проблему. Вот и бегаю между двумя форумами - ab-log и IntraHouse.

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

    Каналы на выключатели мне нужны. Они у меня кроме включения нагрузки еще и автоматику выключают. Например, свет в туалете включается скриптом по датчику движения на 3 минуты, и выключается. Но если включить выключателем, этот скрипт не будет запускаться. И никаких выключений через 3 минуты не наступит.
    Или, включить выключатель, и выключить свет иконкой в интерфейсе - тот же эффект, скрипт по датчику движения не запустится.
    То же самое с вентиляторами. Автоматика - на 2 минуты после выключения света (например), а выключателем можно или включить надолго, или отключить автоматику.
    Плюс дополнительный датчик безопасности. Если кто при включенном режиме охраны щелкает выключателем - оно сообщает.
    Плюс комбинации состояний выключателей (пример - скрипт кодового замка минибара).

    Мне вообще выключатели нравятся больше кнопок. И каналы для них нужны. Это вам не кнопки! 🙂


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