Плагин MegaD



  • @MAMOHT:

    Доброго времени суток!

    Возник вопрос по работе плагина с расширителем портов MCP23017.

    Повесил данный девайс на 32-33 порты MegaD.

    Прописал каналы по аналогии с другими портами.

    Проверил отладку. Мега по честному отдаёт состояния всех 16 портов.

    Но устройства DD1 и DD2 на мнемосхеме, не реагируют на изменения состояния портов 32_1, 32_2.

    В какую сторону копать ? 😢

    Добрый день!

    Получается, данная возможность пока не реализована: в ответ на cmd=get для составных каналов ожидаются данные, разделенные /

    temp:10.75/press:728/hum:19.477  или 10.75/728/19.477
    
    

    Здесь подканалы разделены символом ";"

    Добавим, не проблема. А внутри запроса cmd=all как это работает? Покажите, пожалуйста, ответ на запрос cmd=all. Там видимо пусто для 32 порта?



  • @intrapro:

    @MAMOHT:

    В какую сторону копать ? 😢

    Добрый день!

    Получается, данная возможность пока не реализована: в ответ на cmd=get для составных каналов ожидаются данные, разделенные /

    > temp:10.75/press:728/hum:19.477  или 10.75/728/19.477
    > 
    

    Здесь подканалы разделены символом ";"

    Добавим, не проблема. А внутри запроса cmd=all как это работает? Покажите, пожалуйста, ответ на запрос cmd=all. Там видимо пусто для 32 порта?

    Ну, как то так.
    MegaD p32 cmd=all.png
    MegaD cmd=all.png



  • @MAMOHT:

    Ну, как то так.

    Да, вижу, пишет MCP. Спасибо 🙂



  • @MAMOHT:

    Но устройства DD1 и DD2 на мнемосхеме, не реагируют на изменения состояния портов 32_1, 32_2.

    Баг конечно правильный отметили. Но в разрезе "сработки" входов расширителя (без принудительного опроса состояния всех портов MCP) необходимо IntA/IntB подключить к порту MegaD и прописать его в настройках MCP, а в расширениях плагина MegaD прописать для каждого порта:

    /megad.php?pt=32&ext0=1         32_0=ON
    /megad.php?pt=32&ext0=0         32_0=OFF
    
    

    intrapro, ведь так (32_0=ON) состояние канала установится в iH уже сейчас? Единственное что будет, если сработает одновременно два канала расширителя и MegaD пришлет ?pt=32&ext0=1&ext1=1???

    И, да, подключив MCP к MegaD обнаружил интересную вещь, которой раньше не было - пока к порту расширителя, у которого в плагине стоит время опроса, но не привязано ни одно устройство плагин не опрашивает этот порт! Как только привязываю к порту устройство, так плагин начинает опрашивать порт. Чтобы было понятнее - вот так плагин не опрашивает порт, на котором висит MCP:
    MegaD_MCP_No_GET.png



  • @Alex_Jet:

    @MAMOHT:

    Но устройства DD1 и DD2 на мнемосхеме, не реагируют на изменения состояния портов 32_1, 32_2.

    Баг конечно правильный отметили. Но в разрезе "сработки" входов расширителя (без принудительного опроса состояния всех портов MCP) необходимо IntA/IntB подключить к порту MegaD и прописать его в настройках MCP, а в расширениях плагина MegaD прописать для каждого порта:

    То есть, берём либо IntA, либо IntB ? Цепляем на свободный порт Меги и пишем его здесь:
    MCP23017_INT.png



  • @MAMOHT:

    То есть, берём либо IntA, либо IntB ? Цепляем на свободный порт Меги и пишем его здесь:

    MCP23017_INT.png

    Оба берем и цепляем на вход MegaD. Почитайте тут - https://www.ab-log.ru/smart-house/ethernet/megad-2561



  • @Alex_Jet:

    @MAMOHT:

    То есть, берём либо IntA, либо IntB ? Цепляем на свободный порт Меги и пишем его здесь:

    MCP23017_INT.png

    Оба берем и цепляем на вход MegaD. Почитайте тут - https://www.ab-log.ru/smart-house/ethernet/megad-2561

    Спасибо, что ткнули носом в священный мануал. :oops: Поиски заняли 45 минут 🙂
    <quote>> В целях экономии портов контроллера, при подключении модулей на базе расширителя MCP23017 (16 дополнительных портов) линии INTA и INTB можно подключить к одному входу контроллера.



  • @MAMOHT:

    Спасибо, что ткнули носом в священный мануал. :oops: Поиски заняли 45 минут 🙂

    Да, мануал хороший. Жаль, что ссылок в нем нет на подразделы. Но я так понял, что он Вам оказался полезен:)



  • @Alex_Jet:

    @MAMOHT:

    Спасибо, что ткнули носом в священный мануал. :oops: Поиски заняли 45 минут 🙂

    Да, мануал хороший. Жаль, что ссылок в нем нет на подразделы. Но я так понял, что он Вам оказался полезен:)

    Ещё как полезен!

    Но теперь другая проблема, Мега на срабатывание порта расширителя отвечает не по феншую. 😉
    отладка 111.png



  • @MAMOHT:

    @Alex_Jet:

    @MAMOHT:

    Спасибо, что ткнули носом в священный мануал. :oops: Поиски заняли 45 минут 🙂

    Да, мануал хороший. Жаль, что ссылок в нем нет на подразделы. Но я так понял, что он Вам оказался полезен:)

    Ещё как полезен!

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

    отладка 111.png

    Это нормально. CNT - это счетчик количества замыканий/размыканий контакта. В MegaD все входы работают так и на сервер отсылается сообщение с cnt. Вот почему iH это не обрабатывает? Вот это вопрос. Вы расширения прописали?

    Причем у вас в config контроллера получается (вижу по логу), что имя скрипта не задано. Значит расширение должно выглядеть как /?pt=30&ext0=1



  • @Alex_Jet:

    Это нормально. CNT - это счетчик количества замыканий/размыканий контакта. В MegaD все входы работают так и на сервер отсылается сообщение с cnt. Вот почему iH это не обрабатывает? Вот это вопрос. Вы расширения прописали?

    Причем у вас в config контроллера получается (вижу по логу), что имя скрипта не задано. Значит расширение должно выглядеть как /?pt=30&ext0=1

    Вроде всё так.
    расширения.png



  • @MAMOHT:

    Вроде всё так.

    расширения.png

    Значит вопрос к intrapro - почему нет iH get/set? Может все же дело в не числовых номерах портов?

    МАМОНТ, попробуйте задать номер порта числовой, например, 320,321,322 и т.д. И то же прописать в расширениях 320=ON/OFF.



  • @Alex_Jet:

    Может все же дело в не числовых номерах портов?

    Да, вы правы, здесь были предусмотрены только числовые порты :(. С числовыми все должно работать.

    Но если планируется получать данные и через опрос, то не нужно переделывать нумерацию каналов, поправим и добавим разбор при опросе

    @Alex_Jet:

    И, да, подключив MCP к MegaD обнаружил интересную вещь, которой раньше не было - пока к порту расширителя, у которого в плагине стоит время опроса, но не привязано ни одно устройство плагин не опрашивает этот порт! Как только привязываю к порту устройство, так плагин начинает опрашивать порт. Чтобы было понятнее - вот так плагин не опрашивает порт, на котором висит MCP:

    Да, это так. И относится не только к порту расширения, а к любому каналу - если нет привязки, порт не опрашивается. Для экономии 🙂

    @Alex_Jet:

    Единственное что будет, если сработает одновременно два канала расширителя и MegaD пришлет ?pt=32&ext0=1&ext1=1???

    А это возможный вариант? Если да, то нужно будет устанавливать флаг в расширении, что надо продолжать перебор входящих:

    /?pt=32&ext0=*    32_0=%ext0%   и продолжаем перебирать   
    /?pt=32&ext1=*    32_1=%ext1%
    ..
    /?pt=32&ext16=*    32_16=%ext16%
    
    
    


  • @intrapro:

    Да, это так. И относится не только к порту расширения, а к любому каналу - если нет привязки, порт не опрашивается. Для экономии 🙂

    С точки зрения отладки - не очень удобно. Проще время опроса обнулять чтобы не было опроса.

    @intrapro:

    А это возможный вариант? Если да, то нужно будет устанавливать флаг в расширении, что надо продолжать перебор входящих:

    > /?pt=32&ext0=*    32_0=%ext0%   и продолжаем перебирать   
    > /?pt=32&ext1=*    32_1=%ext1%
    > ..
    > /?pt=32&ext16=*    32_16=%ext16%
    > 
    > 
    

    Теоретически да. Например, сработка двух смежных датчиков движения. Больше примеров придумать не могу 🙂



  • @Alex_Jet:

    @MAMOHT:

    Вроде всё так.

    Значит вопрос к intrapro - почему нет iH get/set? Может все же дело в не числовых номерах портов?

    МАМОНТ, попробуйте задать номер порта числовой, например, 320,321,322 и т.д. И то же прописать в расширениях 320=ON/OFF.

    Опубликован новый релиз плагина v1.1.13

    1. Добавлен разбор подканалов в формате значений через символ ";" - для MCP

    Обратите внимание! Поскольку в других местах подканалы нумеруются с 1, здесь сохранен такой же подход: 32_1,…32_16

    То есть ext0 - это 32_1. Но можно переделать, если сильно неудобно 😉

    2. В расширениях в поле "Установить состояния каналов" принимаются нечисловые каналы: 32_1=ON работает

    Также, как и раньше, для сокращения строк можно использовать синтаксис присваивания с подстановкой:

    /?pt=32&ext0=* - принимается любое значение в параметр ext0
    32_1=%ext0% - значение будет подставлено в состояние канала
    
    

    3. Добавлено свойство ip в объект для передачи сценарию

    @Alex_Jet:

    Единственное что будет, если сработает одновременно два канала расширителя и MegaD пришлет ?pt=32&ext0=1&ext1=1???

    Этот вопрос пока не прорабатывался.



  • @intrapro:

    Опубликован новый релиз плагина v1.1.13

    1. Добавлен разбор подканалов в формате значений через символ ";" - для MCP

    Обратите внимание! Поскольку в других местах подканалы нумеруются с 1, здесь сохранен такой же подход: 32_1,…32_16

    То есть ext0 - это 32_1. Но можно переделать, если сильно неудобно 😉

    Обновил плагин. При опросе со стороны сервера плагин отрабатывает ожидаемо. 😮
    отладка 2.png
    Реальное срабатывание портов MCP23017 смогу проверить в понедельник.

    Кстати, при детальном (после порции пенного ) рассмотрении отладки, нашел таки у себя ошибку. :oops:
    о чём ты думал де…png
    Ну почему 30 порт….... :oops:



  • Коллеги, случайно удалось поймать перезапуск плагина. Во вложении лог обмена данными между плагином megad и контроллером. Тут представлено два цикла - обмен данными сразу после перезагрузки контроллера и обмен данными после запуска плагина megad. По сути полностью прошел цикл опроса контроллера (окончание цикла - это опрос MCP на pt=33) - и в первом и во втором случае.

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

    01.04 10:16:35.365 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?st=1
    01.04 10:16:35.367 megad2: 192.168.11.22 <= localhost:11022 
    01.04 10:16:35.376 megad2: { type: 'startscene',
      id: 'MegaD_ST_to_Log',
      arg: '{"dev":"MegaD-2561-22 (Датчики #1)"}' }
    01.04 10:16:35.377 IH: startscene MegaD_ST_to_Log
    01.04 10:16:35.420 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?pt=0&cnt=1
    01.04 10:16:35.420 IH: get [{"id":"0","value":"1"}]
    01.04 10:16:35.422 IH: set {"SGERKON1_01":{"dval":0,"err":0}}
    01.04 10:16:35.422 megad2: 192.168.11.22 <= localhost:11022 
    01.04 10:16:35.422 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?pt=1&cnt=1
    01.04 10:16:35.422 IH: get [{"id":"1","value":"1"}]
    01.04 10:16:35.423 IH: set {"SGERKON1_02":{"dval":0,"err":0}}
    01.04 10:16:35.423 megad2: 192.168.11.22 <= localhost:11022 
    01.04 10:16:35.484 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?pt=7&v=2450&dir=1
    01.04 10:16:35.485 megad2: 192.168.11.22 <= localhost:11022 
    01.04 10:16:35.560 megad2: 
    01.04 10:16:35.561 megad2: localhost => 192.168.11.22 HTTP GET /sec/?cf=7&stime=10:16:35:1
    01.04 10:16:35.584 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:35.584 megad2:  body: [Back](/sec/?cf=1)
    
    <form action="/sec/">Cur time: 10:16:35 [1]
    Set time: 
    SCL:  SDA: 
    T:  Act: 
    T:  Act: 
    T:  Act: 
    T:  Act: 
    T:  Act: 
    </form>
    
    01.04 10:16:35.585 IH: get []
    01.04 10:16:35.585 IH: set {}
    01.04 10:16:35.762 megad2: 
    01.04 10:16:35.763 megad2: localhost => 192.168.11.22 HTTP GET /sec/?cmd=all
    01.04 10:16:35.964 megad2: 
    01.04 10:16:35.964 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=7&cmd=get
    01.04 10:16:36.165 megad2: 
    01.04 10:16:36.166 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=9&cmd=get
    01.04 10:16:36.173 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:36.173 megad2:  body: temp:24.00
    01.04 10:16:36.351 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?pt=0&m=2&cnt=1&mdid=
    01.04 10:16:36.352 IH: get [{"id":"0","value":"1"}]
    01.04 10:16:36.353 IH: set {"SGERKON1_01":{"dval":0,"err":0}}
    01.04 10:16:36.353 megad2: 192.168.11.22 <= localhost:11022 
    01.04 10:16:36.360 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?pt=1&m=2&cnt=1&mdid=
    01.04 10:16:36.361 IH: get [{"id":"1","value":"1"}]
    01.04 10:16:36.361 IH: set {"SGERKON1_02":{"dval":0,"err":0}}
    01.04 10:16:36.362 megad2: 192.168.11.22 <= localhost:11022 
    01.04 10:16:36.366 megad2: 
    01.04 10:16:36.366 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=10&cmd=get
    01.04 10:16:36.374 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:36.375 megad2:  body: temp:24.43
    01.04 10:16:36.566 megad2: 
    01.04 10:16:36.567 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=17&cmd=get
    01.04 10:16:36.574 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:36.574 megad2:  body: temp:24.25
    01.04 10:16:36.768 megad2: 
    01.04 10:16:36.769 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    01.04 10:16:36.826 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:36.827 megad2:  body: 24.91
    01.04 10:16:36.828 IH: get [{"id":"30_1","value":"24.91"}]
    01.04 10:16:36.830 IH: set {"STEMP1_01":{"aval":"24.91","err":0}}
    01.04 10:16:36.969 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:36.970 megad2: 
    01.04 10:16:36.971 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    01.04 10:16:36.973 megad2:  body: temp:24.50
    01.04 10:16:36.997 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:36.998 megad2:  body: 32.23
    01.04 10:16:36.998 IH: get [{"id":"30_2","value":"32.23"}]
    01.04 10:16:36.999 IH: set {"SHUMIDITY1_01":{"aval":"32.23","err":0}}
    01.04 10:16:37.171 megad2: 
    01.04 10:16:37.172 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=31&scl=35&i2c_dev=htu21d&i2c_par=1
    01.04 10:16:37.180 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:37.180 megad2:  body: NA
    01.04 10:16:37.373 megad2: 
    01.04 10:16:37.373 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=31&scl=35&i2c_dev=htu21d
    01.04 10:16:37.382 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:37.383 megad2:  body: NA
    01.04 10:16:37.574 megad2: 
    01.04 10:16:37.575 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=32&scl=35&i2c_dev=htu21d&i2c_par=1
    01.04 10:16:37.583 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:37.583 megad2:  body: NA
    01.04 10:16:37.775 megad2: 
    01.04 10:16:37.775 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=32&scl=35&i2c_dev=htu21d
    01.04 10:16:37.783 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:37.784 megad2:  body: NA
    01.04 10:16:37.976 megad2: 
    01.04 10:16:37.976 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=33&cmd=get
    01.04 10:16:37.986 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:37.987 megad2:  body: OFF;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON
    01.04 10:16:37.988 IH: get [{"id":"Q33_1","value":"0"}]
    01.04 10:16:37.988 IH: set {"SENSOR6":{"dval":"0","err":0}}
    01.04 10:17:05.766 megad2: localhost <=> 192.168.11.22 Socket timed out - abort!
    01.04 10:17:05.768 megad2: localhost <= 192.168.11.22 Error ECONNRESET.  Stopped.
    01.04 10:17:05.772 IH: Plugin exit with code 3
    01.04 10:17:05.778 IH: restart timer 60
    01.04 10:18:06.356 IH: Run /var/lib/intrahouse-c/plugins/megad/megad.js megad2
    01.04 10:18:06.573 megad2: MegaD plugin has started.
    01.04 10:18:06.603 megad2: Listen server start
    01.04 10:18:06.610 megad2: Listening localhost:11022
    01.04 10:18:06.814 megad2: 
    01.04 10:18:06.814 megad2: localhost => 192.168.11.22 HTTP GET /sec/?cf=7&stime=10:18:06:1
    01.04 10:18:06.852 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:06.858 megad2:  body: [Back](/sec/?cf=1)
    
    <form action="/sec/">Cur time: 10:18:06 [1]
    Set time: 
    SCL:  SDA: 
    T:  Act: 
    T:  Act: 
    T:  Act: 
    T:  Act: 
    T:  Act: 
    </form>
    
    01.04 10:18:06.860 IH: get []
    01.04 10:18:06.861 IH: set {}
    01.04 10:18:07.029 megad2: 
    01.04 10:18:07.030 megad2: localhost => 192.168.11.22 HTTP GET /sec/?cmd=all
    01.04 10:18:07.042 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:07.043 megad2:  body: ON/1;ON/1;temp:NA;OFF;OFF;OFF;OFF;temp:24.43;OFF/0;temp:23.93;temp:24.43;OFF;OFF;OFF;OFF;OFF;OFF;temp:24.18;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON/2;MCP;;OFF;OFF;OFF
    01.04 10:18:07.045 IH: get [{"id":"0","value":"1"},{"id":"1","value":"1"},{"id":"3","value":"0"},{"id":"4","value":"0"},{"id":"5","value":"0"},{"id":"6","value":"0"},{"id":"8","value":"0"}]
    01.04 10:18:07.045 IH: set {"SGERKON1_01":{"dval":0,"err":0},"SGERKON1_02":{"dval":0,"err":0},"SMOTION1_02":{"dval":"0","err":0},"SFIRE1_01":{"dval":"0","err":0},"SFIRE1_02":{"dval":"0","err":0},"SLEAKAGE1_01":{"dval":"0","err":0},"BUTTON1_01":{"dval":"0","err":0}}
    01.04 10:18:07.232 megad2: 
    01.04 10:18:07.232 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=7&cmd=get
    01.04 10:18:07.239 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:07.240 megad2:  body: temp:24.43
    01.04 10:18:07.433 megad2: 
    01.04 10:18:07.433 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=9&cmd=get
    01.04 10:18:07.441 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:07.441 megad2:  body: temp:23.93
    01.04 10:18:07.634 megad2: 
    01.04 10:18:07.635 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=10&cmd=get
    01.04 10:18:07.642 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:07.643 megad2:  body: temp:24.43
    01.04 10:18:07.835 megad2: 
    01.04 10:18:07.835 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=17&cmd=get
    01.04 10:18:07.842 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:07.843 megad2:  body: temp:24.18
    01.04 10:18:08.036 megad2: 
    01.04 10:18:08.036 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    01.04 10:18:08.094 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:08.095 megad2:  body: 24.80
    01.04 10:18:08.095 IH: get [{"id":"30_1","value":"24.8"}]
    01.04 10:18:08.095 IH: set {"STEMP1_01":{"aval":"24.8","err":0}}
    01.04 10:18:08.236 megad2: 
    01.04 10:18:08.240 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    01.04 10:18:08.263 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:08.264 megad2:  body: 32.37
    01.04 10:18:08.264 IH: get [{"id":"30_2","value":"32.37"}]
    01.04 10:18:08.265 IH: set {"SHUMIDITY1_01":{"aval":"32.37","err":0}}
    01.04 10:18:08.438 megad2: 
    01.04 10:18:08.438 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=31&scl=35&i2c_dev=htu21d&i2c_par=1
    01.04 10:18:08.447 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:08.447 megad2:  body: NA
    01.04 10:18:08.639 megad2: 
    01.04 10:18:08.640 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=31&scl=35&i2c_dev=htu21d
    01.04 10:18:08.648 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:08.649 megad2:  body: NA
    01.04 10:18:08.840 megad2: 
    01.04 10:18:08.840 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=32&scl=35&i2c_dev=htu21d&i2c_par=1
    01.04 10:18:08.849 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:08.850 megad2:  body: NA
    01.04 10:18:09.041 megad2: 
    01.04 10:18:09.041 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=32&scl=35&i2c_dev=htu21d
    01.04 10:18:09.049 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:09.050 megad2:  body: NA
    01.04 10:18:09.242 megad2: 
    01.04 10:18:09.243 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=33&cmd=get
    01.04 10:18:09.253 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:18:09.254 megad2:  body: OFF;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON
    01.04 10:18:09.255 IH: get [{"id":"Q33_1","value":"0"}]
    01.04 10:18:09.255 IH: set {"SENSOR6":{"dval":"0","err":0}}
    
    


  • @Alex_Jet:

    Коллеги, случайно удалось поймать перезапуск плагина. Во вложении лог обмена данными между плагином megad и контроллером. Тут представлено два цикла - обмен данными сразу после перезагрузки контроллера и обмен данными после запуска плагина megad. По сути полностью прошел цикл опроса контроллера (окончание цикла - это опрос MCP на pt=33) - и в первом и во втором случае.

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

    Здесь все объяснимо:

    Контроллер по какой-то причине не отвечает на два запроса. Но начиная с третьего начинает отвечать.

    Опрос идет асинхронно. Для каждого запроса взводится таймаут - 30 сек.

    01.04 10:16:35.763 megad2: localhost => 192.168.11.22 HTTP GET /sec/?cmd=all
    01.04 10:16:35.964 megad2: 
    01.04 10:16:35.964 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=7&cmd=get
    01.04 10:16:36.165 megad2: 
    01.04 10:16:36.166 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=9&cmd=get
    01.04 10:16:36.173 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    01.04 10:16:36.173 megad2:  body: temp:24.00
    
    
    

    Через 30 секунд без ответа (10:16:35.763+30 сек= 10:17:05.766) фиксируется, что ждать нечего.

    Поскольку раньше контроллер зависал, при таких ошибках сделана перезагрузка плагина.

    01.04 10:17:05.766 megad2: localhost <=> 192.168.11.22 Socket timed out - abort!
    01.04 10:17:05.768 megad2: localhost <= 192.168.11.22 Error ECONNRESET.  Stopped.
    01.04 10:17:05.772 IH: Plugin exit with code 3
    
    

    Если сейчас контроллер не виснет, а перезагружается сам, можно эту перезагрузку плагина убрать, просто сбросить запрос и игнорировать.

    Для этого предусмотрен флаг stopOnError - попробуйте его установить в false

    Модуль plugin.js, строки 146-158

      getReqObj(index) {
        if (index >= 0) {
          return {
            url: this.reqarr[index].url,
            adr: this.reqarr[index].adr,
    
            host: this.params.host,
            port: this.params.port,
            stopOnError: true,  // строка 154  -> false
            index
          };
        }
      },
    
    
    

    Плагин будет просто сбрасывать запросы без ответа, как и было в старой версии.

    Почему контроллер позволяет себе игнорировать запросы - уже другой вопрос.

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



  • Коллеги, обратите внимание, что в свежей прошивке Меги добавился новый параметр.

    Мега сообщает серверу об изменении состояния выходов, если изменение не было инициировано внешним запросом, через параметр "v"

    Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

    Непрочитанное сообщение Andrey_B » Сегодня, 15:19

    https://ab-log.ru/files/File/megad-2561 … a1-hex.zip

    • Добавлена функция отправки на сервер сообщений об изменении состояния выходов.

    Эта функция срабатывает только в том случае, если порты переключаются самим контроллером: Act, Cron, Program.

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

    На сервер передается параметр "v". Пример, когда P7 включен: pt=7&v=1

    Первоисточник тут:

    https://ab-log.ru/forum/viewtopic.php?p=36252#p36252

    Соответственно, надо добавить обработку этого параметра в Ваших настройках intraHouse, если ставите свежую прошивку.



  • Коллеги.

    Если кто зарегистрирован на форуме ab-log, прошу поддержать тему https://www.ab-log.ru/forum/viewtopic.php?f=1&t=1580

    Задавать такой опрос на нашем форуме я не стал. Здесь пользователи intraHouse.

    А на ab-log посчитал вопрос уместным.

    Для чего нам это нужно?

    Во-первых нам интересно это сравнение с точки зрения потребностей пользователей и дальнейшего развития системы.

    Во-вторых многие просто не знают про возможности системы intraHouse.


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