Плагин MegaD
-
@Erik у маня созданы ACTOR для каждой ролокасети, можно как то чтобы в ACTORе обновлялось состояние, нету описания на эту тему. Чтобы использовать эти значения в сценарии.
Ну и у меня открытие и закрытие подключено к 2 разных реле через: ```this.pluginCommand({unit:'megad3', command:'/258/?cmd='+jalusi.getParam('point_open')+':1;p200;'+jalusi.getParam('point_open')+':0'});
ну и по аналогии закрытие
Вопрос как мне с 2 реле собрать информацию в одном акторе чтобы видеть последнее состояния с реле, чтобы ІН знал жалюзя сейчас открыта или закрыта, нету обратной связи.скрипт
/** * @name Новый мультисценарий * @desc * @version 4 */ const switch_1 = Device("ActorE","Switch"); const jalusi = Device("ActorD","Actor",[ {"name":"point_open", "note":"Пін відкриття", "type":"number", "val":15}, {"name":"point_close", "note":"Пін закриття", "type":"number", "val":16} ]); startOnChange([switch_1,jalusi]); script({ start() { if(this.isChanged(switch_1)){ this.onSwitch(); } if(this.isChanged(jalusi)){ this.onJalusi(); } }, onSwitch(){ switch(switch_1.value){ case 0: if(jalusi.id === "ACTOR7"){ jalusi.on(); this.pluginCommand({unit:'megad3', command:'/258/?cmd='+jalusi.getParam('point_open')+':1;p200;'+jalusi.getParam('point_open')+':0'}); } if(jalusi.id === "ACTOR8"){ //this.pluginCommand({unit:'megad2', command:'/258/?cmd='+jalusi.getParam('point_open')+':1;p210;'+jalusi.getParam('point_open')+':0'}); } if(jalusi.id === "ACTOR9"){ //this.pluginCommand({unit:'megad2', command:'/258/?cmd='+jalusi.getParam('point_open')+':1;p230;'+jalusi.getParam('point_open')+':0'}); } break; case 1: //this.pluginCommand({unit:'megad3', command:'/258/?cmd='+jalusi.getParam('point_open')+':0;'+jalusi.getParam('point_close')+':0'}); break; case 2: if(jalusi.id === "ACTOR7"){ jalusi.off(); this.pluginCommand({unit:'megad3', command:'/258/?cmd='+jalusi.getParam('point_close')+':1;p200;'+jalusi.getParam('point_close')+':0'}); } if(jalusi.id === "ACTOR8"){ jalusi.off(); this.pluginCommand({unit:'megad2', command:'/258/?cmd='+jalusi.getParam('point_close')+':1;p210;'+jalusi.getParam('point_close')+':0'}); } if(jalusi.id === "ACTOR9"){ this.startTimer('T1', 30, 'turnAllOff'); } break; } this.log('Жалюзі статус : '+switch_1.value+' '+jalusi.id); }, turnAllOff(){ jalusi.off(); this.pluginCommand({unit:'megad2', command:'/258/?cmd='+jalusi.getParam('point_close')+':1;p240;'+jalusi.getParam('point_close')+':0'}); this.exit(); }, onJalusi(){ //this.log(this.isChanged(jalusi)+' 38 line'); if(jalusi.isOn()){ //this.log('jalusi On'); if(jalusi.id === "ACTOR7"){ this.pluginCommand({unit:'megad3', command:'/258/?cmd='+jalusi.getParam('point_open')+':1;p200;'+jalusi.getParam('point_open')+':0'}); } if(jalusi.id === "ACTOR8"){ this.pluginCommand({unit:'megad2', command:'/258/?cmd='+jalusi.getParam('point_open')+':1;p210;'+jalusi.getParam('point_open')+':0'}); } if(jalusi.id === "ACTOR9"){ this.pluginCommand({unit:'megad2', command:'/258/?cmd='+jalusi.getParam('point_open')+':1;p240;'+jalusi.getParam('point_open')+':0'}); } }else{ //this.log('jalusi Off'); if(jalusi.id === "ACTOR7"){ this.pluginCommand({unit:'megad3', command:'/258/?cmd='+jalusi.getParam('point_close')+':1;p200;'+jalusi.getParam('point_close')+':0'}); } if(jalusi.id === "ACTOR8"){ this.pluginCommand({unit:'megad2', command:'/258/?cmd='+jalusi.getParam('point_close')+':1;p210;'+jalusi.getParam('point_close')+':0'}); } if(jalusi.id === "ACTOR9"){ this.pluginCommand({unit:'megad2', command:'/258/?cmd='+jalusi.getParam('point_close')+':1;p240;'+jalusi.getParam('point_close')+':0'}); } } this.exit(); } });
а так в админке http://joxi.ru/DmBRwpQSJvnMNm
-
В этом же скрипте после действия присвойте атуатору нужное значение.
После каждого действия присвоение соответствующего значения.
Актуатор будет всегда иметь значение, соответствующее последнему действию.
-
версию 1.1.14 убрали?
Обновление предлагается на 1.1.13 сегодня.
-
Участник @Erik написал в Плагин MegaD:
версию 1.1.14 убрали?
Версия 1.1.14 была сделана для тестирования и официально еще не публиковалась.
При желании ее можно взять на гитхабе.
-
Значит это нервное уже.
А что в ней нового?
-
@Erik можете подсказать что дописать?
-
После открытия
Actor.On();
после закрытия
Actor.Off();Вместо Actor - название нужного актуатора.
-
Участник @Erik написал в Плагин MegaD:
А что в ней нового?
В версии v1.1.14 изменение только для параметра канала
"Использовать функцию обработки при получении данных от контроллера"Ранее функция была привязана к номеру порта контроллера, теперь - к идентификатору канала, чтобы это работало для расширенных портов (MCP, I2C)
Сегодня на github планируем выложить версию v1.1.15, в которой будет:
-
Решение для одновременной сработки датчиков, подключенных к MCP
(модуль MegaD-16I-XT) -
Возможность обработать в сценарии ответ от контроллера для команды pluginCommand
Также на github выложен список изменений плагина за этот год :
https://github.com/intrahouseio/intraHouse.plugin-MegaD файл CHANGELOG
-
-
@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, которую надо ограничить, например, увеличив интервал очереди запросов?