Плагин MegaD
-
@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 развивается, и это здорово) не должно быть привязки к конкретной реализации, насколько это возможно.Поэтому алгоритм обработки входящих запросов такой:
- Из таблицы входящих запросов формируются объекты, чтобы не было зависимости от порядка параметров в строке:
"pt=0&m=1" => {pt:0, m:1}, "pt=0" => {pt:0}, "pt=0&m=2&cnt=*" => {pt:0, m:2, cnt='*'},
- Существенным параметром считается номер порта pt. Все объекты группируются в массивы по портам плюс отдельная группа запросов, в которых порт не участвует. Массив упорядочивается по количеству параметров от большего к меньшему
Для pt=0 - [{pt:0, m:2, cnt='*'}, {pt:0, m:1}, {pt:0}]
- Когда приходит реальный запрос (который тоже преобразуется в объект), то ищется подходящая группа по номеру порта 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, есть масса вариантов:
-
Можно сделать pull-request в действующий репозитарий. Для этого откорректируйте код прямо в репо, вам будет предложено создать pull-request. После ревью и одобрения ваши изменения будут включены в действующий плагин.
-
Можно сделать fork текущего плагина и менять на свой вкус.
-
Можно разработать новый плагин с использованием нового 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:
И еще. Можно откатиться на ту же прошивку, при которой не было глюка и глянуть что будет.
Я это планирую. Выше написано.
-
Вы к словам только не придирайтесь, пожалуйста.
Баг возникает после прописывания сервера, при замыкании входа.
Если просто поменять IP сервера в настройках меги, или даже порт, ошибка пропадает.
А косяков полно, разной степени критичности. Я же выше даже скриншот прислал, как после изменения настроек плагина меняется отображение его версии.
Вы на это не прореагировали даже.Или это тоже больше ни у кого не проявляется? Или вы считаете это корректной работой?
-
Участник @intrapro написал в Плагин MegaD:
Можно попробовать:
Тест 1. На сервере убрать обработку этого канала. Посмотреть, будет ли сбрасываться настройка.
Тест 2. Прописать в качестве сервера не IH, а очень простой http-сервер, который просто слушает порт и точно ничего не отсылает
Тест 3. Попробовать замыкать вход не выключателем, а напрямую на контроллере
И самое главное - если все же думаете о внешнем воздействии на контроллер - исследуйте трафикВ выходные попробую. Но поясните цель тестов, пожалуйста.
- Разве это не то же самое, что отсутствие настройки сервера, или указание несуществующего адреса? Запрос на сервер уйдет, а ответа не будет.
- То же самое, запрос уйдет, а ответа не будет, в чем смысл теста?
- Какая цель? Если без настройки сервера нажатия выключателя отрабатываются, зачем исключать провода?
-
Участник @Erik написал в Плагин MegaD:
В выходные попробую. Но поясните цель тестов, пожалуйста.
Цель - понять, что приводит к переключению настройки.
- Разве это не то же самое, что отсутствие настройки сервера, или указание несуществующего адреса? Запрос на сервер уйдет, а ответа не будет.
Нет, плагин (его слушающий сервер) отвечает на все входящие, которые не смог распознать, пустым сообщением. Можно это увидеть в отладчике.
- То же самое, запрос уйдет, а ответа не будет, в чем смысл теста?
Да, здесь ответа не будет, или будет статус 404, или еще что-то. А Вы уверены, что переключение происходит при получении ответа? Может все же при (или после) отправки запроса
- Какая цель? Если без настройки сервера нажатия выключателя отрабатываются, зачем исключать провода?
Без настройки сервера нажатия отрабатываются на контроллере без отправки сообщений. Проверьте, если есть возможность и ситуация стабильно повторяется. Хуже, если это происходит не всегда, тогда выводы делать труднее.
Если ситуация стабильно воспроизводится, нужно исследовать сетевой трафик, можно по простому tcpdump-ом на IH сервере:
Установить, если не установлен
sudo apt-get install tcpdump
Запустить с IP MegaD, будут показаны все входящие и исходящие пакеты, т е порты 80 и слушающий (8083 в вашем случае)
sudo tcpdump host 192.168.0.14 -X
-
@Erik, если есть свободный выход у MegaD, то чтобы экспериментировать удаленно можно этим выходом замыкать вход, имитируя ваш выключатель.
Про кнопки/выключатели - конечно вы завязали выключали на очень широкий функционал, но, ИМХО, кнопки:- Приятнее "на ощуп"
- Имеют как минимум 3 действия (одинарный, двойной клики и удержание)
- Не нужно создавать каналы в плагине.
Про щелкания выключателем в режиме охраны - надуманная вещь. Во-первых, вор не знает/не видит где находится выключатель, во-вторых, не будет включать свет чтобы не привлечь внимания (зависит от условий). В нашем микрорайоне один из соседелй у себя на втором этаже лазил с фонариком под утро - и другие соседи, увидев это, сразу написали в нашу группу Whatsapp)))
Про привязку сценариев - при щелкании кнопки всегда что-то включается, поэтому создано устройство "актуатор", соответственно, у меня все сценарии к этим актуаторам и привязаны.
-
@Alex_Jet
Свободных выходов нет.- Это субъективно. Но выключатель никогда не оставляет сомнений.
- У выключателя есть не только действия, но и состояния.
- Если оставаться в рамках того, что поддерживает мега - не нужно. А что особенно грустно - и бесполезно.
-
Ситауция такая.
останавливаю плагин на сервере - и мега работает корректно.
Запускаю плагин - тут же проявляется ошибка при нажатии на выключатель.
Лог запуска плагина и нажатия выключателя тут.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#
-
@Erik, лог и дамп соответствуют друг другу, никаких дополнительных сообщений сервер не посылает.
Предлагаю попробовать это:
Тест 1. На сервере убрать обработку этого канала. Посмотреть, будет ли сбрасываться настройка.
Тест 3. Попробовать замыкать вход не выключателем, а напрямую на контроллере
Для этого пункта через полчаса могу прислать скрипт http-сервера
Тест 2. Прописать в качестве сервера не IH, а очень простой http-сервер, который просто слушает порт и точно ничего не отсылает
-
@Erik, скопируйте этот код в файл на сервер IH. Файл назовите например, myserver.js. Папка может быть любой.
const http = require('http'); const port = process.argv[2]; if (!port) { console.log('Порт не определен!'); process.exit(); } http .createServer(onRequest) .listen(port) .on('error', e => { let msg = e.code == 'EADDRINUSE' ? 'Address in use' : `${e.code} Stopped.`; console.log(`HTTP server port: ${port} error ${e.errno}. ${msg}`); process.exit(1); }); console.log('Listening localhost:' + port); function onRequest(request, response) { console.log('=> HTTP GET ' + request.url); response.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); response.end(""); response.on('error', e => { console.log('<= ERROR:' + e.code); }); }
Остановите плагин.
Перейдите в папку со скриптом и запустите myserver с помощью node, в качестве параметра передайте слушающий порт:sudo /opt/intrahouse-c/node/bin/node myserver 8083
Как видите, этот скрипт только слушает порт, выводит поступившие запросы на консоль и отправляет ответ со статусом 200 и пустым телом.
В зависимости от результата нужно будет смотреть дальше