Плагин MegaD
-
@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, собственно вот такая схема:
-
Участник @Alex_Jet написал в Плагин MegaD:
Пользователи MegaD!!! А вы замечали что у Вас плагины megad перезапускаются? Или ни у кого не подключены датчики I2C и 1WBUS?
У меня подключены 5 устройств I2C (датчики температуры-влажности, освещенности, расширитель портов, датчик давления и температуры-влажности), 2 датчика DHT22, 3 шины 1WBUS (на одной из шин 6 датчиков). Устройства I2C подключены как попало (звездой, лучи до 8м, до 3 шт на один порт, при этом - все SDL на одном порту!). Особых проблем не наблюдаю. Раньше висли DHT22, но после замены одного из них на SHT21, зависания пропали. Все работает. Опросы датчиков у меня примерно 1 раз в минуту. По поводу перегрузки плагина, ничего сказать не могу - подскажите, пожалуйста, где смотреть - понаблюдаю. Правда, у меня не классическая мега, а моноблок от Ермакова.
-
@gis, это все висит на одном моноблоке или на нескольких? И какой коммутатор и маршрутизатор используется в локальной сети?
Понаблюдать можно в разделе "Плагины" - там есть столбец "Запуск" - в идеале время запуска у каждого плагина должно совпадать со временем запуска сервера, конечно если не проводились настройки плагинов. Если хотите прям понаблюдать (будут приходить сообщения, например, в Telegram), то можно написать вот такой мультисценарий:/** * @name MegaD - уведомления от плагинов * @desc Сообщение в Telegram о проблемах с плагинами * @version 4 */ const dev = Device("SensorD"); startOnChange(dev); script({ start() { let string = ""; switch(dev.value) { case 0: string = "возникла ошибка"; break; case 1: string = "остановлен"; break; case 2: string = "запущен"; break; } this.info("telegram", "OWNER", dev.id+ ": " +string+ "; error - " +dev.error); }, GetDate() { return new Date().toLocaleString('ru-RU'); } });
-
Участник @Alex_Jet написал в Плагин MegaD:
@gis, это все висит на одном моноблоке или на нескольких? И какой коммутатор и маршрутизатор используется в локальной сети?
Спасибо! Да, все висит на одном моноблоке. Обслуживает первый этаж, кроме санузла (5 помещений) - климат, отопление, частично освещение, окна, двери, ворота и калитка. Маршрутизатор самый простой - Zyxel Kinetic Giga II, раздает беспроводный интернет. В этой же сети камеры и видеорегистратор, а так же 12 шт. Shelly управляют освещением на 220 вольт. Коммутатор - самый дешевый Dlink на 16 портов.
Понаблюдаю за плагином (сейчас перезапускал его после настройки для работы с расширителем портов).
.
-
@gis, а вы используете для аппроксимации значений (особенно актуально для управления отоплением - усреднять значение температуры в зоне в течении пятиминуток) "Функцию обработки при получении данных от контроллера? Примеры функций приводил выше. У меня не работает она для датчиков на шине 1WBus, собственно лог тоже выше приводил.
-
Провели серию тестов с контроллером MegaD от Андрея.
Тестирование проводили в локальной сети с роутером MikrotikНастройки:
Порт 16
Type: in
Act: 23:2
Mode: P&RПорт 15
Type: in
Act: 22:2
Mode: P&RПорты 22 и 23
Type: OutВерсии прошивки MegaD:
С версии прошивки от 4.30.b5 до 4.31.b8 все работает нормально
Начиная с версии 4.32.b1 при нажатии на порт 15, сбрасывается порт 16 в Mode: PПри проведении тестов с прошивками версию плагина не меняли. Работал плагин 1.1.13
Проанализировали дамп трафика с версией прошивки 4.39.b9
Увидели, что плагин отвечает в режиме фрагментации. В соответствии со спецификацией HTTP/1.1 https://tools.ietf.org/html/rfc7230#section-3.3.1Тем не менее решили попробовать без фрагментации (версия плагина 1.1.15):
Контроллер MegaD перестал сбрасывать порт 16.
Надеемся, что эта информация будет полезна разработчикам MegaD
-
@intrahouse
Большое человеческое спасибо, что занимаетесь этим вопросом.
На форум ab-log информацию положил.Я могу отнестись к сообщению как к совету перейти на версию плагина 1.1.15?
-
Участник @Erik написал в Плагин MegaD:
Я могу отнестись к сообщению как к совету перейти на версию плагина 1.1.15?
Да. Обновите плагин.
-
@intrapro, @intrahouse, коллеги, у кого Победа, а у кого Беда! После обновления плагина iH загнулась моя охранная система... iH не реагирует на открытие окна:
30.12 23:12:21.523 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?pt=1&m=1&cnt=42&mdid= 30.12 23:12:21.524 megad2: 192.168.11.22 <= localhost:11022 30.12 23:12:36.235 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?pt=1&cnt=43&mdid= 30.12 23:12:36.236 IH: get [ { id: '1', value: '1' } ] set { SGERKON1_02: { dval: 0, err: 0 } } 30.12 23:12:36.236 megad2: 192.168.11.22 <= localhost:11022 30.12 23:12:37.230 megad2: 192.168.11.22 => localhost:11022 HTTP GET /mod_megad.php?pt=1&m=2&cnt=43&mdid= 30.12 23:12:37.231 IH: get [ { id: '1', value: '1' } ] set { SGERKON1_02: { dval: 0, err: 0 } } 30.12 23:12:37.232 megad2: 192.168.11.22 <= localhost:11022
Соответствующие входы инвертированы.
-
@Alex_Jet, Добрый вечер! Проверьте пожалуйста флаг новый "Расширенный порт". Он случайно не установлен?