Плагин MegaD



  • @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 минуты после выключения света (например), а выключателем можно или включить надолго, или отключить автоматику.
    Плюс дополнительный датчик безопасности. Если кто при включенном режиме охраны щелкает выключателем - оно сообщает.
    Плюс комбинации состояний выключателей (пример - скрипт кодового замка минибара).

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



  • @Erik, классно, что Вы придумали и реализовали такой богатый функционал! Предлагалось удалить канал только для тестирования. Чтобы вы увидели, что плагин с каналом ничего не делает. Но, думаю, поможет примерно также как и стирание плагина 🙂

    @Alex_Jet , по алгоритму плагина

    Как я уже говорил, тут то ли какие-то чудеса, то ли @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

    Все и сейчас так работает, если прописаны все три условия. Другой вопрос, если третье условие НЕ прописано.
    С нашей точки зрения, при разработке плагина для развивающегося продукта (а MegaD развивается, и это здорово) не должно быть привязки к конкретной реализации, насколько это возможно.

    Поэтому алгоритм обработки входящих запросов такой:

    1. Из таблицы входящих запросов формируются объекты, чтобы не было зависимости от порядка параметров в строке:
    "pt=0&m=1" => {pt:0, m:1}, "pt=0" => {pt:0}, "pt=0&m=2&cnt=*" => {pt:0, m:2, cnt='*'},
    
    1. Существенным параметром считается номер порта pt. Все объекты группируются в массивы по портам плюс отдельная группа запросов, в которых порт не участвует. Массив упорядочивается по количеству параметров от большего к меньшему
    Для pt=0 -  [{pt:0, m:2, cnt='*'}, {pt:0, m:1}, {pt:0}]
    
    1. Когда приходит реальный запрос (который тоже преобразуется в объект), то ищется подходящая группа по номеру порта pt, и в ней подбирается соответствие перебором массива образцов.
      Функция isSuitable(patobj, qobj) получает каждый элемент массива образцов patobj и входящий объект qobj. Во входящем объекте должны быть все параметры, которые задал пользователь, в этом случае функция возвращает true. Обратное не требуется, т е во входящем запросе может быть сколько угодно не упомянутых в образце параметров
    if (patobj[prop] == "*") {//  в образце может быть звездочка - тогда требуется просто присутствие
           if (qobj[prop] == undefined) return;  // не подходит, так как во входящем нет совсем
    } else if (qobj[prop] != patobj[prop]) return; // не подходит, так как параметра нет или значение не совпадает
    
    

    Поскольку массив упорядочен по убыванию количества параметров, если совпадение не найдено, далее берется образец с меньшим числом параметров. Если вы не прописали pt=0&m=2, то последний образец будет pt=0, и он подходит. Для изменения ситуации достаточно прописать pt=0&m=2 с пустой командой.

    В общем, надо допилить этот алгоритм - чтобы он работал как полагается:)

    Это замечательная идея. Поскольку плагин расположен в публичном репозитарии на github https://github.com/intrahouseio/intraHouse.plugin-MegaD, есть масса вариантов:

    1. Можно сделать pull-request в действующий репозитарий. Для этого откорректируйте код прямо в репо, вам будет предложено создать pull-request. После ревью и одобрения ваши изменения будут включены в действующий плагин.

    2. Можно сделать fork текущего плагина и менять на свой вкус.

    3. Можно разработать новый плагин с использованием нового API плагинов https://github.com/intrahouseio/intraHouse-Cherry/wiki/Plugin-API-4.6

    В любом случае, если это будет реально работающий вариант, можем разместить плагин у себя для скачивания как альтернативный, а в перспективе и как основной. Welcome 🙂



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

    Предлагалось удалить канал только для тестирования. Чтобы вы увидели, что плагин с каналом ничего не делает.

    Вы просто плохо его знаете!!!!
    Если неисправность возникает только при взаимодействии с сервером - значит сервер как минимум соучастник. Тут даже к следователю не ходи.
    Вопрос только - по злому умыслу, или непреднамеренно? 🙂

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

    Но если (надеюсь) помогла замена файлов плагина - что могло быть такого в старых файлах, и откуда? Как часто нужно их менять?



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

    Если неисправность возникает только при взаимодействии с сервером - значит сервер как минимум соучастник. Тут даже к следователю не ходи.

    После этого не значит вследствие этого.
    Если следователь не профессионал, то да. Решит, как проще, и дело закрыто.

    Но мы же не следователи, технари. Мы и голову иногда можем по назначению использовать.

    Вводные:
    Контроллер - самостоятельное устройство. Он может изменить настройку портов

    a) при действиях пользователя через web-интерфейс контроллера

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

    в) под внешним воздействием. Разработчик MegaD говорит: "Отправлять GET-запросы, меняющие конфигурацию, может не только пользователь из браузера, но и сервер" То есть существует конкретный запрос, который нужно передать на контроллер по 80 порту.
    ОК, тогда этот запрос можно увидеть. Не верите отладчику, не доверяете плагину - подключите любой сниффер, wireshark или tcpdump прямо на сервере IH. Если увидите этот запрос - вопросы к серверу. Если нет - значит контроллер подвержен какому-то магическому внешнему воздействию или надо рассматривать вариант б)

    Но если (надеюсь) помогла замена файлов плагина - что могло быть такого в старых файлах, и откуда? Как часто нужно их менять?

    Наверно, нужно изучить фазы луны. Можно еще сервер тряпочкой протирать 🙂



  • @intrapro
    Вы очень здорово рассуждаете, но никак не объясняете причину бага.

    Баг такой - при добавлении сервера происходит искажение настройки порта.
    Если сервер не добавлять - не происходит. Мало того. Если убрать настройку сервера - настройки порта сами возвращаются в корректное состояние.

    Поддержка сервера предлагает изучать фазы луны. И протирать сервер тряпочкой. Прекрасно. Прошу уточнить марку тряпочки. И гарантировать, что это поможет.



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

    Но если (надеюсь) помогла замена файлов плагина - что могло быть такого в старых файлах, и откуда? Как часто нужно их менять?

    Замена файлов помочь не могла. Код плагина не менялся с марта 2019 года



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

    @intrapro
    Вы очень здорово рассуждаете, но никак не объясняете причину бага.

    Баг такой - при добавлении сервера происходит искажение настройки порта.
    Если сервер не добавлять - не происходит. Мало того. Если убрать настройку сервера - настройки порта сами возвращаются в корректное состояние.

    Поддержка сервера предлагает изучать фазы луны. И протирать сервер тряпочкой. Прекрасно. Прошу уточнить марку тряпочки. И гарантировать, что это поможет.

    Не с кем не охота вступать в дискуссию, но если все же это не косяк IH ? Дабы не обвинять ни кого, нужно более плотно подойти к анализу диагностики этой проблемы. Давайте рассмотрим мистическую и очень маловероятную вещь: если прошивка megad была старая, а при переходе на новую, было куча изменений, то при включенном сервере IH в момент перепрошивки, произошло именно то, что мешает Вам в данный момент. Просто Ваша проблема у других пользователей не проявляется. Опять же повторюсь, что для детальной диагностики этого бага нужно проблему изучать. Я бы на 2й машине с нуля установил без всего лишнего чисто для теста IH и проверил эту теорию.



  • И еще. Можно откатиться на ту же прошивку, при которой не было глюка и глянуть что будет.



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

    Давайте рассмотрим мистическую и очень маловероятную вещь: если прошивка megad была старая, а при переходе на новую, было куча изменений, то при включенном сервере IH в момент перепрошивки, произошло именно то, что мешает Вам в данный момент.

    Нет. При прошивке я отелючал Мегу от сети, подключал к нотбуку патчкордом и прошивал. Сервер на прошивку влиять не мог.



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

    Замена файлов помочь не могла. Код плагина не менялся с января 2019 года

    Посмотрим.
    Файлы меняются не только при изменениях версии. Но и при некорректных отключениях питания, например. Юникс битый файл какой либо ценностью не считает. И просто удаляет его из файловой системы.
    Чтобы хотя бы это исключить, я переустановил плагин. И изменения поведения уже видны.
    Точнее протестирую в выходные.



  • @Erik, замена файла плагина на точно такой же без всякого на то основания - это из области ритуалов. Кто верит, тому помогает 🙂

    Вы очень здорово рассуждаете, но никак не объясняете причину бага.

    Я причину объяснить не могу, у меня недостаточно информации. Могу предложить варианты поиска проблемы

    Баг такой - при добавлении сервера происходит искажение настройки порта.

    Баг возникает на контроллере при прописывании сервера. Если это так - сервер совсем не при чем.
    Или не при прописывании, а при отправке контроллером сообщения на сервер (то есть при замыкании входа)?

    Можно попробовать:
    Тест 1. На сервере убрать обработку этого канала. Посмотреть, будет ли сбрасываться настройка.

    Тест 2. Прописать в качестве сервера не IH, а очень простой http-сервер, который просто слушает порт и точно ничего не отсылает

    Тест 3. Попробовать замыкать вход не выключателем, а напрямую на контроллере

    И самое главное - если все же думаете о внешнем воздействии на контроллер - исследуйте трафик



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

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

    Я это планирую. Выше написано.



  • @intrapro

    Вы к словам только не придирайтесь, пожалуйста.

    Баг возникает после прописывания сервера, при замыкании входа.

    Если просто поменять IP сервера в настройках меги, или даже порт, ошибка пропадает.

    А косяков полно, разной степени критичности. Я же выше даже скриншот прислал, как после изменения настроек плагина меняется отображение его версии.
    Вы на это не прореагировали даже.

    Или это тоже больше ни у кого не проявляется? Или вы считаете это корректной работой?



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

    Можно попробовать:
    Тест 1. На сервере убрать обработку этого канала. Посмотреть, будет ли сбрасываться настройка.
    Тест 2. Прописать в качестве сервера не IH, а очень простой http-сервер, который просто слушает порт и точно ничего не отсылает
    Тест 3. Попробовать замыкать вход не выключателем, а напрямую на контроллере
    И самое главное - если все же думаете о внешнем воздействии на контроллер - исследуйте трафик

    В выходные попробую. Но поясните цель тестов, пожалуйста.

    1. Разве это не то же самое, что отсутствие настройки сервера, или указание несуществующего адреса? Запрос на сервер уйдет, а ответа не будет.
    2. То же самое, запрос уйдет, а ответа не будет, в чем смысл теста?
    3. Какая цель? Если без настройки сервера нажатия выключателя отрабатываются, зачем исключать провода?


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

    В выходные попробую. Но поясните цель тестов, пожалуйста.

    Цель - понять, что приводит к переключению настройки.

    1. Разве это не то же самое, что отсутствие настройки сервера, или указание несуществующего адреса? Запрос на сервер уйдет, а ответа не будет.

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

    1. То же самое, запрос уйдет, а ответа не будет, в чем смысл теста?

    Да, здесь ответа не будет, или будет статус 404, или еще что-то. А Вы уверены, что переключение происходит при получении ответа? Может все же при (или после) отправки запроса

    1. Какая цель? Если без настройки сервера нажатия выключателя отрабатываются, зачем исключать провода?

    Без настройки сервера нажатия отрабатываются на контроллере без отправки сообщений. Проверьте, если есть возможность и ситуация стабильно повторяется. Хуже, если это происходит не всегда, тогда выводы делать труднее.

    Если ситуация стабильно воспроизводится, нужно исследовать сетевой трафик, можно по простому tcpdump-ом на IH сервере:

    Установить, если не установлен

    sudo apt-get install tcpdump
    

    Запустить с IP MegaD, будут показаны все входящие и исходящие пакеты, т е порты 80 и слушающий (8083 в вашем случае)

    sudo tcpdump host 192.168.0.14 -X
    


  • @Erik, если есть свободный выход у MegaD, то чтобы экспериментировать удаленно можно этим выходом замыкать вход, имитируя ваш выключатель.
    Про кнопки/выключатели - конечно вы завязали выключали на очень широкий функционал, но, ИМХО, кнопки:

    1. Приятнее "на ощуп"
    2. Имеют как минимум 3 действия (одинарный, двойной клики и удержание)
    3. Не нужно создавать каналы в плагине.

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



  • @Alex_Jet
    Свободных выходов нет.

    1. Это субъективно. Но выключатель никогда не оставляет сомнений.
    2. У выключателя есть не только действия, но и состояния.
    3. Если оставаться в рамках того, что поддерживает мега - не нужно. А что особенно грустно - и бесполезно.
      🙂


  • Ситауция такая.
    останавливаю плагин на сервере - и мега работает корректно.
    Запускаю плагин - тут же проявляется ошибка при нажатии на выключатель.
    Лог запуска плагина и нажатия выключателя тут.

    21.12 11:04:44.947 IH: Run /var/lib/intrahouse-c/plugins/megad/megad.js megad1
    21.12 11:04:45.175 megad1: MegaD plugin has started.
    21.12 11:04:45.197 megad1: Listen server start
    21.12 11:04:45.205 megad1: Listening localhost:8083
    21.12 11:04:45.408 megad1: 
    21.12 11:04:45.409 megad1: localhost => 192.168.13.10 HTTP GET /sec/?cmd=all
    21.12 11:04:45.441 megad1: localhost <= 192.168.13.10  response: statusCode=200 contentType = text/html
    21.12 11:04:45.448 megad1:  body: ON/1;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF/0;OFF/6;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF
    21.12 11:04:45.454 IH: command [ { dn: 'VENT2', prop: 'on' } ]
    21.12 11:04:45.455 IH: send { type: 'act',
      data: 
       [ { chan: '27',
           id: '27',
           desc: 'DO',
           weight: 1,
           reqsek: 0,
           req: '/%pwd%/?pt=%adr%&cmd=get',
           value: 1,
           command: 'on' } ] }
    21.12 11:04:45.456 IH: get [ { id: '0', value: '1' },
      { id: '1', value: '0' },
      { id: '2', value: '0' },
      { id: '3', value: '0' },
      { id: '4', value: '0' },
      { id: '5', value: '0' },
      { id: '6', value: '0' },
      { id: '7', value: '0' },
      { id: '8', value: '0' },
      { id: '9', value: '0' },
      { id: '10', value: '0' },
      { id: '11', value: '0' },
      { id: '12', value: '0' },
      { id: '13', value: '0' },
      { id: '15', value: '0' },
      { id: '16', value: '0' },
      { id: '17', value: '0' },
      { id: '18', value: '0' },
      { id: '19', value: '0' },
      { id: '20', value: '0' },
      { id: '21', value: '0' },
      { id: '22', value: '0' },
      { id: '23', value: '0' },
      { id: '24', value: '0' },
      { id: '25', value: '0' },
      { id: '26', value: '0' },
      { id: '27', value: '0' },
      { id: '28', value: '0' } ]
    set { SENSOR1: { dval: 1, err: 0 },
      SENSOR13: { dval: 0, err: 0 },
      SENSOR11: { dval: 0, err: 0 },
      SENSOR12: { dval: 0, err: 0 },
      SENSOR8: { dval: 0, err: 0 },
      SENSOR10: { dval: 0, err: 0 },
      SENSOR5: { dval: 0, err: 0 },
      SOCKET7: { dval: 0, err: 0 },
      LAMP18: { dval: 0, err: 0 },
      LAMP16: { dval: 0, err: 0 },
      LAMP17: { dval: 0, err: 0 },
      LAMP1: { dval: 0, err: 0 },
      LAMP7: { dval: 0, err: 0 },
      LAMP11: { dval: 0, err: 0 },
      SENSOR4: { dval: 0, err: 0 },
      SENSOR6: { dval: 0, err: 0 },
      SENSOR7: { dval: 0, err: 0 },
      SENSOR9: { dval: 0, err: 0 },
      SENSOR23: { dval: 0, err: 0 },
      SENSOR24: { dval: 0, err: 0 },
      SENSOR25: { dval: 0, err: 0 },
      LAMP12: { dval: 0, err: 0 },
      LAMP13: { dval: 0, err: 0 },
      LAMP14: { dval: 0, err: 0 },
      LAMP15: { dval: 0, err: 0 },
      VENT1: { dval: 0, err: 0 },
      VENT2: { dval: 0, err: 0 },
      VENT3: { dval: 0, err: 0 } }
    21.12 11:04:45.620 megad1: 
    21.12 11:04:45.621 megad1: localhost => 192.168.13.10 HTTP GET /sec/?cmd=27:1
    21.12 11:04:45.629 megad1: localhost <= 192.168.13.10  response: statusCode=200 contentType = text/html
    21.12 11:04:45.633 megad1:  body: Done
    21.12 11:04:45.634 IH: get [ { id: '27', value: 1 } ]
    set { VENT2: { dval: 1, err: 0 } }
    21.12 11:05:02.379 IH: command [ { dn: 'LAMP11', prop: 'on' } ]
    21.12 11:05:02.380 IH: send { type: 'act',
      data: 
       [ { chan: '13',
           id: '13',
           desc: 'DO',
           weight: 1,
           reqsek: 0,
           req: '/%pwd%/?pt=%adr%&cmd=get',
           value: 1,
           command: 'on' } ] }
    21.12 11:05:02.459 megad1: 
    21.12 11:05:02.460 megad1: localhost => 192.168.13.10 HTTP GET /sec/?cmd=13:1
    21.12 11:05:02.464 megad1: localhost <= 192.168.13.10  response: statusCode=200 contentType = text/html
    21.12 11:05:02.467 megad1:  body: Done
    21.12 11:05:02.469 IH: get [ { id: '13', value: 1 } ]
    set { LAMP11: { dval: 1, err: 0 } }
    21.12 11:05:03.462 megad1: 192.168.13.10 => localhost:8083 HTTP GET /?pt=16&cnt=7
    21.12 11:05:03.466 IH: get [ { id: '16', value: '1' }, { id: '23', value: '1' } ]
    set { SENSOR6: { dval: 1, err: 0 }, LAMP13: { dval: 1, err: 0 } }
    21.12 11:05:03.467 megad1: 192.168.13.10 <= localhost:8083 23:1
    21.12 11:05:04.458 megad1: 192.168.13.10 => localhost:8083 HTTP GET /?pt=16&m=2&cnt=7
    21.12 11:05:04.459 IH: get [ { id: '16', value: '1' }, { id: '23', value: '1' } ]
    set { SENSOR6: { dval: 1, err: 0 }, LAMP13: { dval: 1, err: 0 } }
    21.12 11:05:04.460 megad1: 192.168.13.10 <= localhost:8083 23:1
    


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

    sudo tcpdump host 192.168.0.14 -X

    Вот дамп с сервера. Порт стоит на сервере 10083, но смена порта не влияет. Та же процедура - включение плагина и нажатие выключателя.

    oot@ud:/opt/intrahouse-c# sudo tcpdump host 192.168.13.10 -X
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:10:29.296823 IP ud.34582 > 192.168.13.10.http: Flags [SEW], seq 439621346, win 29200, options [mss 1460,sackOK,TS val 4034392299 ecr 0,nop,wscale 7], length 0
            0x0000:  4500 003c 6e4a 4000 4006 30ff c0a8 0d18  E..<nJ@.@.0.....
            0x0010:  c0a8 0d0a 8716 0050 1a34 16e2 0000 0000  .......P.4......
            0x0020:  a0c2 7210 9ba1 0000 0204 05b4 0402 080a  ..r.............
            0x0030:  f077 f0eb 0000 0000 0103 0307            .w..........
    13:10:29.297901 IP 192.168.13.10.http > ud.34582: Flags [S.], seq 7936, ack 439621347, win 2560, options [mss 1280], length 0
            0x0000:  4500 002c 6e4a 4000 4006 310f c0a8 0d0a  E..,nJ@.@.1.....
            0x0010:  c0a8 0d18 0050 8716 0000 1f00 1a34 16e3  .....P.......4..
            0x0020:  6012 0a00 1bda 0000 0204 0500 0000       `.............
    13:10:29.297951 IP ud.34582 > 192.168.13.10.http: Flags [.], ack 1, win 29200, length 0
            0x0000:  4500 0028 6e4b 4000 4006 3112 c0a8 0d18  E..(nK@.@.1.....
            0x0010:  c0a8 0d0a 8716 0050 1a34 16e3 0000 1f01  .......P.4......
            0x0020:  5010 7210 9b8d 0000                      P.r.....
    13:10:29.309193 IP ud.34582 > 192.168.13.10.http: Flags [P.], seq 1:71, ack 1, win 29200, length 70: HTTP: GET /sec/?cmd=all HTTP/1.1
            0x0000:  4500 006e 6e4c 4000 4006 30cb c0a8 0d18  E..nnL@.@.0.....
            0x0010:  c0a8 0d0a 8716 0050 1a34 16e3 0000 1f01  .......P.4......
            0x0020:  5018 7210 9bd3 0000 4745 5420 2f73 6563  P.r.....GET./sec
            0x0030:  2f3f 636d 643d 616c 6c20 4854 5450 2f31  /?cmd=all.HTTP/1
            0x0040:  2e31 0d0a 486f 7374 3a20 3139 322e 3136  .1..Host:.192.16
            0x0050:  382e 3133 2e31 300d 0a43 6f6e 6e65 6374  8.13.10..Connect
            0x0060:  696f 6e3a 2063 6c6f 7365 0d0a 0d0a       ion:.close....
    13:10:29.315087 IP 192.168.13.10.http > ud.34582: Flags [.], ack 71, win 1024, length 0
            0x0000:  4500 0028 6e4c 4000 4006 3111 c0a8 0d0a  E..(nL@.@.1.....
            0x0010:  c0a8 0d18 0050 8716 0000 1f01 1a34 1729  .....P.......4.)
            0x0020:  5010 0400 389d 0000 0000 0000 0000       P...8.........
    13:10:29.319747 IP 192.168.13.10.http > ud.34582: Flags [FP.], seq 1:240, ack 71, win 1024, length 239: HTTP: HTTP/1.0 200 OK
            0x0000:  4500 0117 6e4c 4000 4006 3022 c0a8 0d0a  E...nL@.@.0"....
            0x0010:  c0a8 0d18 0050 8716 0000 1f01 1a34 1729  .....P.......4.)
            0x0020:  5019 0400 4a6e 0000 4854 5450 2f31 2e30  P...Jn..HTTP/1.0
            0x0030:  2032 3030 204f 4b0d 0a43 6f6e 7465 6e74  .200.OK..Content
            0x0040:  2d54 7970 653a 2074 6578 742f 6874 6d6c  -Type:.text/html
            0x0050:  0d0a 5072 6167 6d61 3a20 6e6f 2d63 6163  ..Pragma:.no-cac
            0x0060:  6865 0d0a 0d0a 4f4e 2f31 3b4f 4646 2f30  he....ON/1;OFF/0
            0x0070:  3b4f 4646 2f30 3b4f 4646 2f30 3b4f 4646  ;OFF/0;OFF/0;OFF
            0x0080:  2f30 3b4f 4646 2f30 3b4f 4e2f 313b 4f46  /0;OFF/0;ON/1;OF
            0x0090:  463b 4f46 463b 4f46 463b 4f46 463b 4f46  F;OFF;OFF;OFF;OF
            0x00a0:  463b 4f46 463b 4f46 463b 4f46 463b 4f46  F;OFF;OFF;OFF;OF
            0x00b0:  462f 303b 4f46 462f 303b 4f46 462f 303b  F/0;OFF/0;OFF/0;
            0x00c0:  4f46 462f 303b 4f46 462f 303b 4f46 462f  OFF/0;OFF/0;OFF/
            0x00d0:  303b 4f46 462f 303b 4f46 463b 4f46 463b  0;OFF/0;OFF;OFF;
            0x00e0:  4f46 463b 4f46 463b 4f46 463b 4f46 463b  OFF;OFF;OFF;OFF;
            0x00f0:  4f46 463b 4f46 463b 4f46 463b 4f46 463b  OFF;OFF;OFF;OFF;
            0x0100:  4f46 463b 4f46 463b 4f46 463b 4f46 463b  OFF;OFF;OFF;OFF;
            0x0110:  4f46 463b 4f46 46                        OFF;OFF
    13:10:29.330702 IP ud.34582 > 192.168.13.10.http: Flags [F.], seq 71, ack 241, win 30016, length 0
            0x0000:  4500 0028 6e4d 4000 4006 3110 c0a8 0d18  E..(nM@.@.1.....
            0x0010:  c0a8 0d0a 8716 0050 1a34 1729 0000 1ff1  .......P.4.)....
            0x0020:  5011 7540 9b8d 0000                      P.u@....
    13:10:34.511049 ARP, Request who-has 192.168.13.10 tell ud, length 28
            0x0000:  0001 0800 0604 0001 000c 2904 5fd9 c0a8  ..........)._...
            0x0010:  0d18 0000 0000 0000 c0a8 0d0a            ............
    13:10:34.512875 ARP, Reply 192.168.13.10 is-at 54:55:c0:a8:0d:0a (oui Unknown), length 46
            0x0000:  0001 0800 0604 0002 5455 c0a8 0d0a c0a8  ........TU......
            0x0010:  0d0a 000c 2904 5fd9 c0a8 0d18 0000 0000  ....)._.........
            0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
    13:10:38.165086 ARP, Request who-has ud tell 192.168.13.10, length 46
            0x0000:  0001 0800 0604 0001 5455 c0a8 0d0a c0a8  ........TU......
            0x0010:  0d0a 0000 0000 0000 c0a8 0d18 0000 0000  ................
            0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
    13:10:38.165150 ARP, Reply ud is-at 00:0c:29:04:5f:d9 (oui Unknown), length 28
            0x0000:  0001 0800 0604 0002 000c 2904 5fd9 c0a8  ..........)._...
            0x0010:  0d18 5455 c0a8 0d0a c0a8 0d0a            ..TU........
    13:10:38.172282 IP 192.168.13.10.3015 > ud.amidxtape: Flags [S], seq 8704, win 768, options [mss 790], length 0
            0x0000:  4500 002c 0007 4000 4006 9f52 c0a8 0d0a  E..,..@.@..R....
            0x0010:  c0a8 0d18 0bc7 2763 0000 2200 0000 0000  ......'c..".....
            0x0020:  6002 0300 a727 0000 0204 0316 0000       `....'........
    13:10:38.172370 IP ud.amidxtape > 192.168.13.10.3015: Flags [S.], seq 1749760257, ack 8705, win 29200, options [mss 1460], length 0
            0x0000:  4500 002c 0000 4000 4006 9f59 c0a8 0d18  E..,..@.@..Y....
            0x0010:  c0a8 0d0a 2763 0bc7 684b 3901 0000 2201  ....'c..hK9...".
            0x0020:  6012 7210 9b91 0000 0204 05b4            `.r.........
    13:10:38.174410 IP 192.168.13.10.3015 > ud.amidxtape: Flags [.], ack 1, win 1024, length 0
            0x0000:  4500 0028 0000 4000 4006 9f5d c0a8 0d0a  E..(..@.@..]....
            0x0010:  c0a8 0d18 0bc7 2763 0000 2201 684b 3902  ......'c..".hK9.
            0x0020:  5010 0400 19e9 0000 0000 0000 0000       P.............
    13:10:38.175224 IP 192.168.13.10.3015 > ud.amidxtape: Flags [P.], seq 1:90, ack 1, win 1024, length 89
            0x0000:  4500 0081 0000 4000 4006 9f04 c0a8 0d0a  E.....@.@.......
            0x0010:  c0a8 0d18 0bc7 2763 0000 2201 684b 3902  ......'c..".hK9.
            0x0020:  5018 0400 a595 0000 4745 5420 2f3f 7074  P.......GET./?pt
            0x0030:  3d31 3626 636e 743d 3120 4854 5450 2f31  =16&cnt=1.HTTP/1
            0x0040:  2e31 0d0a 486f 7374 3a20 3139 322e 3136  .1..Host:.192.16
            0x0050:  382e 3133 2e32 340d 0a55 7365 722d 4167  8.13.24..User-Ag
            0x0060:  656e 743a 206d 6567 6164 0d0a 4163 6365  ent:.megad..Acce
            0x0070:  7074 3a20 7465 7874 2f68 746d 6c0d 0a0d  pt:.text/html...
            0x0080:  0a                                       .
    13:10:38.175279 IP ud.amidxtape > 192.168.13.10.3015: Flags [.], ack 90, win 29200, length 0
            0x0000:  4500 0028 b851 4000 4006 e70b c0a8 0d18  E..(.Q@.@.......
            0x0010:  c0a8 0d0a 2763 0bc7 684b 3902 0000 225a  ....'c..hK9..."Z
            0x0020:  5010 7210 9b8d 0000                      P.r.....
    13:10:38.185369 IP ud.amidxtape > 192.168.13.10.3015: Flags [P.], seq 1:163, ack 90, win 29200, length 162
            0x0000:  4500 00ca b852 4000 4006 e668 c0a8 0d18  E....R@.@..h....
            0x0010:  c0a8 0d0a 2763 0bc7 684b 3902 0000 225a  ....'c..hK9..."Z
            0x0020:  5018 7210 9c2f 0000 4854 5450 2f31 2e31  P.r../..HTTP/1.1
            0x0030:  2032 3030 204f 4b0d 0a43 6f6e 7465 6e74  .200.OK..Content
            0x0040:  2d54 7970 653a 2074 6578 742f 6874 6d6c  -Type:.text/html
            0x0050:  3b20 6368 6172 7365 743d 7574 662d 380d  ;.charset=utf-8.
            0x0060:  0a44 6174 653a 2053 6174 2c20 3231 2044  .Date:.Sat,.21.D
            0x0070:  6563 2032 3031 3920 3130 3a31 303a 3338  ec.2019.10:10:38
            0x0080:  2047 4d54 0d0a 436f 6e6e 6563 7469 6f6e  .GMT..Connection
            0x0090:  3a20 6b65 6570 2d61 6c69 7665 0d0a 5472  :.keep-alive..Tr
            0x00a0:  616e 7366 6572 2d45 6e63 6f64 696e 673a  ansfer-Encoding:
            0x00b0:  2063 6875 6e6b 6564 0d0a 0d0a 340d 0a32  .chunked....4..2
            0x00c0:  333a 310d 0a30 0d0a 0d0a                 3:1..0....
    13:10:38.187983 IP 192.168.13.10.3015 > ud.amidxtape: Flags [F.], seq 90, ack 163, win 1024, length 0
            0x0000:  4500 0028 b852 4000 4006 e70a c0a8 0d0a  E..(.R@.@.......
            0x0010:  c0a8 0d18 0bc7 2763 0000 225a 684b 39a4  ......'c.."ZhK9.
            0x0020:  5011 0400 18ed 0000 0000 0000 0000       P.............
    13:10:38.190571 IP ud.amidxtape > 192.168.13.10.3015: Flags [F.], seq 163, ack 91, win 29200, length 0
            0x0000:  4500 0028 b853 4000 4006 e709 c0a8 0d18  E..(.S@.@.......
            0x0010:  c0a8 0d0a 2763 0bc7 684b 39a4 0000 225b  ....'c..hK9..."[
            0x0020:  5011 7210 9b8d 0000                      P.r.....
    13:10:38.193219 IP 192.168.13.10.3015 > ud.amidxtape: Flags [.], ack 164, win 1024, length 0
            0x0000:  4500 0028 b853 4000 4006 e709 c0a8 0d0a  E..(.S@.@.......
            0x0010:  c0a8 0d18 0bc7 2763 0000 225b 684b 39a5  ......'c.."[hK9.
            0x0020:  5010 0400 18ec 0000 0000 0000 0000       P.............
    13:10:39.161321 IP 192.168.13.10.3048 > ud.amidxtape: Flags [S], seq 9472, win 768, options [mss 790], length 0
            0x0000:  4500 002c 0008 4000 4006 9f51 c0a8 0d0a  E..,..@.@..Q....
            0x0010:  c0a8 0d18 0be8 2763 0000 2500 0000 0000  ......'c..%.....
            0x0020:  6002 0300 a406 0000 0204 0316 0000       `.............
    13:10:39.161396 IP ud.amidxtape > 192.168.13.10.3048: Flags [S.], seq 3700262918, ack 9473, win 29200, options [mss 1460], length 0
            0x0000:  4500 002c 0000 4000 4006 9f59 c0a8 0d18  E..,..@.@..Y....
            0x0010:  c0a8 0d0a 2763 0be8 dc8d 8806 0000 2501  ....'c........%.
            0x0020:  6012 7210 9b91 0000 0204 05b4            `.r.........
    13:10:39.163319 IP 192.168.13.10.3048 > ud.amidxtape: Flags [.], ack 1, win 1024, length 0
            0x0000:  4500 0028 0000 4000 4006 9f5d c0a8 0d0a  E..(..@.@..]....
            0x0010:  c0a8 0d18 0be8 2763 0000 2501 dc8d 8807  ......'c..%.....
            0x0020:  5010 0400 5380 0000 0000 0000 0000       P...S.........
    13:10:39.164143 IP 192.168.13.10.3048 > ud.amidxtape: Flags [P.], seq 1:94, ack 1, win 1024, length 93
            0x0000:  4500 0085 0000 4000 4006 9f00 c0a8 0d0a  E.....@.@.......
            0x0010:  c0a8 0d18 0be8 2763 0000 2501 dc8d 8807  ......'c..%.....
            0x0020:  5018 0400 3fc5 0000 4745 5420 2f3f 7074  P...?...GET./?pt
            0x0030:  3d31 3626 6d3d 3226 636e 743d 3120 4854  =16&m=2&cnt=1.HT
            0x0040:  5450 2f31 2e31 0d0a 486f 7374 3a20 3139  TP/1.1..Host:.19
            0x0050:  322e 3136 382e 3133 2e32 340d 0a55 7365  2.168.13.24..Use
            0x0060:  722d 4167 656e 743a 206d 6567 6164 0d0a  r-Agent:.megad..
            0x0070:  4163 6365 7074 3a20 7465 7874 2f68 746d  Accept:.text/htm
            0x0080:  6c0d 0a0d 0a                             l....
    13:10:39.164200 IP ud.amidxtape > 192.168.13.10.3048: Flags [.], ack 94, win 29200, length 0
            0x0000:  4500 0028 0a4c 4000 4006 9511 c0a8 0d18  E..(.L@.@.......
            0x0010:  c0a8 0d0a 2763 0be8 dc8d 8807 0000 255e  ....'c........%^
            0x0020:  5010 7210 9b8d 0000                      P.r.....
    13:10:39.166518 IP ud.amidxtape > 192.168.13.10.3048: Flags [P.], seq 1:163, ack 94, win 29200, length 162
            0x0000:  4500 00ca 0a4d 4000 4006 946e c0a8 0d18  E....M@.@..n....
            0x0010:  c0a8 0d0a 2763 0be8 dc8d 8807 0000 255e  ....'c........%^
            0x0020:  5018 7210 9c2f 0000 4854 5450 2f31 2e31  P.r../..HTTP/1.1
            0x0030:  2032 3030 204f 4b0d 0a43 6f6e 7465 6e74  .200.OK..Content
            0x0040:  2d54 7970 653a 2074 6578 742f 6874 6d6c  -Type:.text/html
            0x0050:  3b20 6368 6172 7365 743d 7574 662d 380d  ;.charset=utf-8.
            0x0060:  0a44 6174 653a 2053 6174 2c20 3231 2044  .Date:.Sat,.21.D
            0x0070:  6563 2032 3031 3920 3130 3a31 303a 3339  ec.2019.10:10:39
            0x0080:  2047 4d54 0d0a 436f 6e6e 6563 7469 6f6e  .GMT..Connection
            0x0090:  3a20 6b65 6570 2d61 6c69 7665 0d0a 5472  :.keep-alive..Tr
            0x00a0:  616e 7366 6572 2d45 6e63 6f64 696e 673a  ansfer-Encoding:
            0x00b0:  2063 6875 6e6b 6564 0d0a 0d0a 340d 0a32  .chunked....4..2
            0x00c0:  333a 310d 0a30 0d0a 0d0a                 3:1..0....
    13:10:39.169619 IP 192.168.13.10.3048 > ud.amidxtape: Flags [F.], seq 94, ack 163, win 1024, length 0
            0x0000:  4500 0028 0a4d 4000 4006 9510 c0a8 0d0a  E..(.M@.@.......
            0x0010:  c0a8 0d18 0be8 2763 0000 255e dc8d 88a9  ......'c..%^....
            0x0020:  5011 0400 5280 0000 0000 0000 0000       P...R.........
    13:10:39.170769 IP ud.amidxtape > 192.168.13.10.3048: Flags [F.], seq 163, ack 95, win 29200, length 0
            0x0000:  4500 0028 0a4e 4000 4006 950f c0a8 0d18  E..(.N@.@.......
            0x0010:  c0a8 0d0a 2763 0be8 dc8d 88a9 0000 255f  ....'c........%_
            0x0020:  5011 7210 9b8d 0000                      P.r.....
    13:10:39.174851 IP 192.168.13.10.3048 > ud.amidxtape: Flags [.], ack 164, win 1024, length 0
            0x0000:  4500 0028 0a4e 4000 4006 950f c0a8 0d0a  E..(.N@.@.......
            0x0010:  c0a8 0d18 0be8 2763 0000 255f dc8d 88aa  ......'c..%_....
            0x0020:  5010 0400 527f 0000 0000 0000 0000       P...R.........
    13:10:41.809118 IP ud > 192.168.13.10: ICMP echo request, id 2032, seq 660, length 16
            0x0000:  4500 0024 cd59 4000 8001 920c c0a8 0d18  E..$.Y@.........
            0x0010:  c0a8 0d0a 0800 ed7b 07f0 0294 0000 0000  .......{........
            0x0020:  0000 0000                                ....
    13:10:41.810511 IP 192.168.13.10 > ud: ICMP echo reply, id 2032, seq 660, length 16
            0x0000:  4500 0024 cd59 4000 4001 d20c c0a8 0d0a  E..$.Y@.@.......
            0x0010:  c0a8 0d18 0000 f57b 07f0 0294 0000 0000  .......{........
            0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
    ^C
    31 packets captured
    36 packets received by filter
    1 packet dropped by kernel
    root@ud:/opt/intrahouse-c# 
    

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