Плагин MegaD



  • @intrapro будет реализована обратная связь (pluginCommand) с ролокасетами? То что я так долго ждал?



  • @amgstone, реализовано получение ответа от контроллера в сценарий:

    script({
        start() {
            // Передать запрос на megad1, ответ придет в сценарий (onResponse:'raw')
            this.pluginCommand({unit:'megad1', command:{url:'/sec/?pt=7&cmd=get', onResponse:'raw'}}, 'getResponse');
            // Взвести таймер на случай, если ответа от контроллера нет
            this.startTimer('T1', 3, 'onTimeout');
        },
        
        getResponse(body) {
          // body 
          this.log('getResponse body= '+body);
         // Анализируем body ....
          this.exit();
        },
        
        onTimeout() {
          this.log('Истек таймаут, ответ от megad1 не получен');
          this.exit();
        }
    });
    

    Если это поможет, то да 🙂



  • @intrapro, так в body будет всего лишь "Done". Какой смысл его анализировать? Собственно, тут написал как правильнее сделать @amgstone



  • @Alex_Jet а у Вас ролета подключена к 2 реле, одно на открытие а второе на закрытие?



  • @amgstone, нет - у меня одно выбирает направление, другое подает питание))). Но от этого суть не меняется.



  • @intrapro, даже не представляю какая полезность будет от доработки по п.2...
    А вы мои выкладки тут не анализировали?
    И да - для Формулы расчета входного значения нужно добавить конвертацию типа данных чтобы не писать "Number(value)+2".

    Update: тестируя версию 1.1.14, я на старом форуме в личных сообщениях писал что не работает.



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

    @intrapro, даже не представляю какая полезность будет от доработки по п.2...

    • Во-первых, такой функционал (функция-обработчик для ответа при выполнении pluginCommand ) добавлен в ядре, и при доработке плагинов добавляем всем, тут просто совпало.
    • Во-вторых, можно ведь послать команду на опрос канала, как в примере:
    this.pluginCommand({unit:'megad1', command:{url:'/sec/?pt=7&cmd=get', onResponse:'raw'}}, 'getResponse');
    

    Для выхода контроллер вернет "ON" или "OFF". Можно иногда использовать, если выход постоянно не опрашивать. Или еще какой экзотический запрос. Да, не несущая конструкция, но пригодится

    И да - для Формулы расчета входного значения нужно добавить конвертацию типа данных чтобы не писать "Number(value)+2".

    Это на сервере считается, в релизе нужно будет поправить

    Update: тестируя версию 1.1.14, я на старом форуме в личных сообщениях писал что не работает.

    Не работает функция для подканала? А мы так поняли что работает 🙂 Личка старого форума к сожалению больше не доступна.

    А вы мои выкладки тут не анализировали?

    Конечно, анализировали, спасибо за подробное описание и предложения. Но пока не хочется ничего менять сущностно. Для версии сервера 5.x будем переделывать плагин с использованием иерархических структур.
    Цель последнего изменения - решение для датчиков, подключенных к MCP. Сейчас нет никакой возможности обработать одновременные сработки.



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

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

    На github выложена новая версия плагина v1.1.15:
    https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases/tag/v1.1.15

    Нужно скачать zip архив и загрузить его:
    Плагины -> меню Command -> Загрузить из .zip файла

    В новой версии плагина в Расширениях добавлен флаг:
    Расширенный порт (одновременная сработка датчиков)

    Все датчики одного порта pt, которые могут сработать одновременно, нужно прописать в одном запросе (обратите внимание, что MCP расширения (ext) нумеруются с 0, а каналы на сервере с 1, т е ext0 - это 32_1 )

    Пример настройки расширений для порта 32:
    Входящее от контроллера:
    /?pt=32&ext0=*&ext1=*&ext2=*&ext3=*&ext4=*&ext5=*&ext6=*&ext7=*

    Установить состояния каналов:
    32_1=%ext0%&32_2=%ext1%&32_3=%ext2%&32_4=%ext3%&32_5=%ext4%&32_6=%ext5%&32_7=%ext6%&32_8=%ext7%

    Расширенный порт: Да

    В результате, например, такого входящего запроса /pt=32&ext1=1&ext7=0 будут присвоены значения 32_2=1 и 32_8=0

    Просьба счастливых обладателей расширенных портов протестировать функционал 🙂



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

    Не работает функция для подканала? А мы так поняли что работает Личка старого форума к сожалению больше не доступна.

    Да, вот посмотрите лог плагина. Обратите внимание на каналы 30 и 33_ff48a6701605 - для обоих включена функция обработки значений (пишем 5 в массив, сортируем, откидываем крайние и вычисляем среднее с округлением до 2-х знаков после запятой).
    Не буду томить - для канала в режиме DSen->1W все работает, а для DSen->1WBUS не работает, то есть при каждом получении значения оно присваивается устройству сразу же.

    25.12 21:45:56.722 megad1: 
    25.12 21:45:56.723 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=30&cmd=get
    25.12 21:45:56.731 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:45:56.731 megad1:  body: temp:4.62
    25.12 21:45:56.924 megad1: 
    25.12 21:45:56.925 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=31&cmd=get
    25.12 21:45:56.932 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:45:56.933 megad1:  body: temp:3.18
    25.12 21:45:56.933 IH: get [ { id: '31', value: '3.18' } ]
    set { ST_SEWERAGE2: { aval: 3.18, err: 0 } }
    25.12 21:45:57.125 megad1: 
    25.12 21:45:57.126 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=32&cmd=get
    25.12 21:45:57.133 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:45:57.134 megad1:  body: temp:1.62
    25.12 21:45:57.135 IH: get [ { id: '32', value: '1.62' } ]
    set { ST_SEWERAGE3: { aval: 1.62, err: 0 } }
    25.12 21:45:57.327 megad1: 
    25.12 21:45:57.328 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=33&cmd=list
    25.12 21:45:57.387 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:45:57.387 megad1:  body: ff48a6701605:4.12;ff779e701604:2.06
    25.12 21:45:57.390 IH: get [ { id: '33_ff48a6701605', value: '4.12' },
      { id: '33_ff779e701604', value: '2.06' } ]
    set { ST_SEWERAGE4: { aval: 4.12, err: 0 },
      ST_SEWERAGE5: { aval: 2.06, err: 0 } }
    25.12 21:46:56.907 megad1: 
    25.12 21:46:56.908 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=30&cmd=get
    25.12 21:46:56.915 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:46:56.916 megad1:  body: temp:4.62
    25.12 21:46:57.109 megad1: 
    25.12 21:46:57.110 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=31&cmd=get
    25.12 21:46:57.117 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:46:57.118 megad1:  body: temp:3.18
    25.12 21:46:57.118 IH: get [ { id: '31', value: '3.18' } ]
    set { ST_SEWERAGE2: { aval: 3.18, err: 0 } }
    25.12 21:46:57.310 megad1: 
    25.12 21:46:57.310 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=32&cmd=get
    25.12 21:46:57.317 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:46:57.318 megad1:  body: temp:1.62
    25.12 21:46:57.319 IH: get [ { id: '32', value: '1.62' } ]
    set { ST_SEWERAGE3: { aval: 1.62, err: 0 } }
    25.12 21:46:57.511 megad1: 
    25.12 21:46:57.511 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=33&cmd=list
    25.12 21:46:57.571 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:46:57.571 megad1:  body: ff48a6701605:4.12;ff779e701604:2.06
    25.12 21:46:57.573 IH: get [ { id: '33_ff48a6701605', value: '4.12' },
      { id: '33_ff779e701604', value: '2.06' } ]
    set { ST_SEWERAGE4: { aval: 4.12, err: 0 },
      ST_SEWERAGE5: { aval: 2.06, err: 0 } }
    25.12 21:47:57.090 megad1: 
    25.12 21:47:57.092 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=30&cmd=get
    25.12 21:47:57.097 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:47:57.098 megad1:  body: temp:4.56
    25.12 21:47:57.292 megad1: 
    25.12 21:47:57.292 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=31&cmd=get
    25.12 21:47:57.300 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:47:57.300 megad1:  body: temp:3.18
    25.12 21:47:57.301 IH: get [ { id: '31', value: '3.18' } ]
    set { ST_SEWERAGE2: { aval: 3.18, err: 0 } }
    25.12 21:47:57.492 megad1: 
    25.12 21:47:57.493 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=32&cmd=get
    25.12 21:47:57.500 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:47:57.501 megad1:  body: temp:1.62
    25.12 21:47:57.501 IH: get [ { id: '32', value: '1.62' } ]
    set { ST_SEWERAGE3: { aval: 1.62, err: 0 } }
    25.12 21:47:57.694 megad1: 
    25.12 21:47:57.694 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=33&cmd=list
    25.12 21:47:57.754 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:47:57.755 megad1:  body: ff48a6701605:4.12;ff779e701604:2.06
    25.12 21:47:57.756 IH: get [ { id: '33_ff48a6701605', value: '4.12' },
      { id: '33_ff779e701604', value: '2.06' } ]
    set { ST_SEWERAGE4: { aval: 4.12, err: 0 },
      ST_SEWERAGE5: { aval: 2.06, err: 0 } }
    25.12 21:48:57.273 megad1: 
    25.12 21:48:57.273 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=30&cmd=get
    25.12 21:48:57.281 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:48:57.281 megad1:  body: temp:4.56
    25.12 21:48:57.285 IH: get [ { id: '30', value: '4.60' } ]
    set { ST_SEWERAGE1: { aval: 4.6, err: 0 } }
    25.12 21:48:57.474 megad1: 
    25.12 21:48:57.475 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=31&cmd=get
    25.12 21:48:57.482 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:48:57.483 megad1:  body: temp:3.18
    25.12 21:48:57.484 IH: get [ { id: '31', value: '3.18' } ]
    set { ST_SEWERAGE2: { aval: 3.18, err: 0 } }
    25.12 21:48:57.676 megad1: 
    25.12 21:48:57.676 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=32&cmd=get
    25.12 21:48:57.683 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:48:57.684 megad1:  body: temp:1.62
    25.12 21:48:57.685 IH: get [ { id: '32', value: '1.62' } ]
    set { ST_SEWERAGE3: { aval: 1.62, err: 0 } }
    25.12 21:48:57.877 megad1: 
    25.12 21:48:57.877 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=33&cmd=list
    25.12 21:48:57.936 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    25.12 21:48:57.937 megad1:  body: ff48a6701605:4.12;ff779e701604:2.06
    25.12 21:48:57.938 IH: get [ { id: '33_ff48a6701605', value: '4.12' },
      { id: '33_ff779e701604', value: '2.06' } ]
    set { ST_SEWERAGE4: { aval: 4.12, err: 0 },
      ST_SEWERAGE5: { aval: 2.06, err: 0 } }
    

    Но есть нюанс...вот такая функция для DSen->1WBUS вроде работает, поскольку ошибочных значений на графиках нет совсем, и датчики в ошибку не вываливаются:

    function (val, depo)
    {  if(val > 100) return; //Проверяем значение - если ошибочное то выходим
       else return val;        //Иначе возвращаем значение
    }
    

    Функция усреднения такая:

    function (val, depo)
    {  var result;
    
       if (!depo.res) depo.res = [];
       depo.res.push(val);
    
       if (depo.res.length < 5) //Нужны еще измерения, значение не возвращаем
       return;
       else
       { depo.res.sort();
         result = ((depo.res[1] + depo.res[2] + depo.res[3]) / 3).toFixed(2);
       }
    
       depo.res = []; //Перед следующими измерениями сбрасываем массив
       return result; //Возвращаем значение
    }
    


  • @intrapro, еще посмотрите лог плагина - я вам уже говорил, что у меня плагины часто перезапускаются и мы вроде выяснили, что почему-то MegaD иногда либо долго отвечают, либо вообще не отвечают... но сейчас увидел другую картину и не понимаю из-за чего это произошло:

    25.12 22:18:39.941 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:18:42.410 megad4: 
    25.12 22:18:42.411 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=30&cmd=get
    25.12 22:18:42.418 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:18:42.419 megad4:  body: temp:-14.50
    25.12 22:18:42.612 megad4: 
    25.12 22:18:42.612 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=31&cmd=list
    25.12 22:18:42.694 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:18:42.695 megad4:  body: e46477910b02:43.75;666877911402:43.93;35e977910902:42.68
    25.12 22:18:42.698 IH: get [ { id: '31_e46477910b02', value: '43.75' },
      { id: '31_666877911402', value: '43.93' },
      { id: '31_35e977910902', value: '42.68' } ]
    set { ST_HEATING_SYS_02: { aval: 46.75, err: 0 },
      ST_HEATING_SYS_03: { aval: 47.93, err: 0 },
      ST_HEATING_SYS_01: { aval: 47.31, err: 0 } }
    25.12 22:18:42.813 megad4: 
    25.12 22:18:42.813 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280&i2c_par=1
    25.12 22:18:42.829 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:18:42.830 megad4:  body: -14.60
    25.12 22:18:43.014 megad4: 
    25.12 22:18:43.014 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280
    25.12 22:18:43.030 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:18:43.031 megad4:  body: 746.94
    25.12 22:18:43.215 megad4: 
    25.12 22:18:43.215 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280&i2c_par=2
    25.12 22:18:43.232 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:18:43.232 megad4:  body: 92.73
    25.12 22:19:11.027 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&cnt=6592&mdid=
    25.12 22:19:11.028 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:19:12.023 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&m=2&cnt=6592&mdid=
    25.12 22:19:12.025 IH: get [ { id: '7', value: 6582.6 } ]
    set { METER1_01: { aval: 6582.6, err: 0 } }
    25.12 22:19:12.025 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:19:42.587 megad4: 
    25.12 22:19:42.588 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=30&cmd=get
    25.12 22:19:42.594 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:19:42.595 megad4:  body: temp:-14.43
    25.12 22:19:42.788 megad4: 
    25.12 22:19:42.788 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=31&cmd=list
    25.12 22:19:42.871 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:19:42.871 megad4:  body: e46477910b02:43.75;666877911402:43.87;35e977910902:42.68
    25.12 22:19:42.873 IH: get [ { id: '31_e46477910b02', value: '43.75' },
      { id: '31_666877911402', value: '43.87' },
      { id: '31_35e977910902', value: '42.68' } ]
    set { ST_HEATING_SYS_02: { aval: 46.75, err: 0 },
      ST_HEATING_SYS_03: { aval: 47.87, err: 0 },
      ST_HEATING_SYS_01: { aval: 47.31, err: 0 } }
    25.12 22:19:42.988 megad4: 
    25.12 22:19:42.989 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280&i2c_par=1
    25.12 22:19:43.006 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:19:43.006 megad4:  body: -14.55
    25.12 22:19:43.189 megad4: 
    25.12 22:19:43.190 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280
    25.12 22:19:43.207 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:19:43.207 megad4:  body: 746.96
    25.12 22:19:43.287 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&cnt=6593&mdid=
    25.12 22:19:43.288 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:19:43.391 megad4: 
    25.12 22:19:43.393 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280&i2c_par=2
    25.12 22:19:43.408 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:19:43.409 megad4:  body: 92.156
    25.12 22:19:44.282 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&m=2&cnt=6593&mdid=
    25.12 22:19:44.284 IH: get [ { id: '7', value: 6582.61 } ]
    set { METER1_01: { aval: 6582.61, err: 0 } }
    25.12 22:19:44.284 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:20:15.916 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&cnt=6594&mdid=
    25.12 22:20:15.916 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:20:16.911 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&m=2&cnt=6594&mdid=
    25.12 22:20:16.913 IH: get [ { id: '7', value: 6582.62 } ]
    set { METER1_01: { aval: 6582.62, err: 0 } }
    25.12 22:20:16.913 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:20:42.762 megad4: 
    25.12 22:20:42.762 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=30&cmd=get
    25.12 22:20:42.769 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:20:42.770 megad4:  body: temp:-14.43
    25.12 22:20:42.772 IH: get [ { id: '30', value: '-14.50' } ]
    set { ST_HEATING_SYS_00: { aval: -14.5, err: 0 } }
    25.12 22:20:42.963 megad4: 
    25.12 22:20:42.963 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=31&cmd=list
    25.12 22:20:43.164 megad4: 
    25.12 22:20:43.164 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280&i2c_par=1
    25.12 22:20:43.181 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:20:43.182 megad4:  body: -14.55
    25.12 22:20:43.185 IH: get [ { id: '34_1', value: '-14.59' } ]
    set { STEMP4_01: { aval: -14.59, err: 0 } }
    25.12 22:20:43.364 megad4: 
    25.12 22:20:43.365 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280
    25.12 22:20:43.380 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:20:43.381 megad4:  body: 747.02
    25.12 22:20:43.382 IH: get [ { id: '34_2', value: '746.99' } ]
    set { SPRESSURE4_01: { aval: 746.99, err: 0 } }
    25.12 22:20:43.566 megad4: 
    25.12 22:20:43.567 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280&i2c_par=2
    25.12 22:20:43.583 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:20:43.584 megad4:  body: 92.76
    25.12 22:20:43.586 IH: get [ { id: '34_3', value: '92.25' } ]
    set { SHUMIDITY4_01: { aval: 92.25, err: 0 } }
    25.12 22:20:48.430 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&cnt=6595&mdid=
    25.12 22:20:48.431 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:20:49.426 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&m=2&cnt=6595&mdid=
    25.12 22:20:49.428 IH: get [ { id: '7', value: 6582.63 } ]
    set { METER1_01: { aval: 6582.63, err: 0 } }
    25.12 22:20:49.429 megad4: 192.168.11.24 <= localhost:11024 
    25.12 22:21:12.966 megad4: localhost <=> 192.168.11.24 Socket timed out - abort!
    25.12 22:21:12.968 megad4: localhost <= 192.168.11.24 Error ECONNRESET.  Stopped.
    25.12 22:21:12.972 IH: Plugin exit with code 3
    25.12 22:21:13.015 IH: restart timer 60
    


  • @Alex_Jet, контроллер перестал отвечать на запросы к 31 порту (1WBUS):

    22:19:42 Здесь еще все ОК

    25.12 22:19:42.788 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=31&cmd=list
    25.12 22:19:42.871 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:19:42.871 megad4:  body: e46477910b02:43.75;666877911402:43.87;35e977910902:42.68
    

    22:20:42 через минуту ответа уже нет . Через 200 мсек передается следующий запрос

    25.12 22:20:42.963 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=31&cmd=list
    25.12 22:20:43.164 megad4: // ??????????? Нет ответа. 
    25.12 22:20:43.164 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=34&scl=35&i2c_dev=bmx280&i2c_par=1
    25.12 22:20:43.181 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    25.12 22:20:43.182 megad4:  body: -14.55
    

    Но этот сокет остался открытым, с таймаутом 30 сек.
    Поэтому через 30 сек (22:20:42+30 сек = 22:21:12) происходит сброс этого сокета и генерируется ошибка

    25.12 22:21:12.966 megad4: localhost <=> 192.168.11.24 Socket timed out - abort!
    25.12 22:21:12.968 megad4: localhost <= 192.168.11.24 Error ECONNRESET.  Stopped.
    

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

    Может сделать интервал больше 200 мсек?
    И реже опрашивать порт с 1WBUS, так как по документации конвертация происходит каждые 30 сек. Или хотя бы не кратно 30 сек - 67 сек, например



  • @intrapro, я помню что обсуждали это уже не раз. Но не нашел пропущенного пакета...просмотрел. В данном случае связано с шиной 1WBUS...

    Пользователи MegaD!!! А вы замечали что у Вас плагины megad перезапускаются? Или ни у кого не подключены датчики I2C и 1WBUS? Все же хочу докапаться до истины - это проблема контроллера (что-то там не так, как например, алгоритм опроса DHT22), проблема в iH (что-то не то в запросах) или скорострельность iH, которую надо ограничить, например, увеличив интервал очереди запросов?



  • @Alex_Jet
    Я только запланировал использовать датчики I2C.
    И сразу началось.
    Но мега не перезагружаются. Она перенастраивается несанкционированно.
    Uptime на мегах не обнуляется сам по себе.



  • @Erik, Андрей перезагрузку MegaD победил в начале этого года... и она проявлялась только совместно с Mikrotik (у меня коммутаторы CSS326). А вот за плагинами последите. Правда у меня проблема есть только с теми, на которых есть I2C, 1WBUS, DHT22 или их комбинация.



  • Я откатился на версию плагина v1.1.10. Она от 14.01.19, на Меге прошивка тоже до конца прошлого месяца позапрошлогодняя была, т.е. в ней перезагрузка не побеждена.
    Микротик CRS125.
    С перезагрузками Меги пока не сталкивался. Зато другая проблема есть, которую ни IH ни AbLog признавать даже не хотят.
    Какая то это очень не надежная связка.
    Мега-микротик-сервер IH.



  • @Erik, я сделал вывод, что связка Mikrotik-iH слишком быстрая для MegaD и нуждается либо в особой настройке, либо доводке скорее прошивки MegaD. Однако Андрей скептически к этому всему относится, тем более является большим любителем однопоточного и медленного php. У меня не удалось убедить его провести полномасштабное тестирование контроллера с iH через тот же Mikrotik, который есть у меня (у него такой же есть). Думаю, что это помогло бы еще лучше допилить прошивку контроллера.



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

    Может сделать интервал больше 200 мсек?

    Ради эксперимента для этого контроллера установил 1000 мсек. И, кстати, при изменении этого параметра плагин приходится вручную останавливать стартовать. Добавьте чтобы при сохранении этого параметра он сам рестартовал.



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

    На github выложена новая версия плагина v1.1.15:
    https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases/tag/v1.1.15

    Вот спасибо ОГРОМНОЕ. Буду тестировать!



  • @Alex_Jet можете показать схему подключения для роллет, а то меня заинтересовало. Спасибо



  • @amgstone, собственно вот такая схема:
    Scheme_Control_of_Rollets.png


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