Страница 6 из 9

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пт ноя 09, 2018 6:12 pm
crazy_russian_bear
Подтверждаю проблему. Две квартиры увешанные датчиками движения ксаоми и сенсорными выключателями. Средняя частота срабатывания 1-2 секунды. Бывают задержки в от 5 до 15 секунд. Бывает вообще не срабатывают. В одной квартире малина с МДМ установлена подключены по изернте кабелю. Во второй квартире малина подключена по вайфаю. Во втором случае задержки и несрабатывания происходят гораздо чаще. Картина в целом очень печальная. Каждый раз идешь и думаешь, сработает или нет.

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Сб ноя 10, 2018 2:47 pm
maksimka
Я решил проблему тормозов кардинально - выделил для MDM отдельный роутер, и все что связано с датчиками, ESP, терминалами и прочими компонентами живут в отдельной сети. Третий месяц пошел - полет более чем нормальный!

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пн ноя 12, 2018 12:24 am
crazy_russian_bear
Товарищи, у кого есть задержки, к какому модулю (устройствам) привязаны ваши датчики? Какие выключатели/реле включают? У меня, к примеру, броадлинк. Я сделал дебаги по всему коду ксаомихоум, и прихожу к выводу, что задержка возникает в самом конце работы модуля, при вызове callMethod на связанном объекте. У меня через объекты привязаны выключатели броадлинк. Возможно именно они и дают лаг. Но, это не точно. 1. Я не уверен, что метод callMethod способен блокировать поток выполнения модуля, тем более там получается довольно длинная цепочка. 2. В этом методе есть еще поиск объекта, возможно лагает он. 3. Я проверял все объекты связанные с броадлинк, включение, при нажатии на кнопку тест в разделе редактирования методов, выполняется почти мгновенно.

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пн ноя 12, 2018 9:23 am
crazy_russian_bear
Пока выложу лог, который получился. Дебаги поставил в скрипте xiaomihome.class.php
09:09:15 0.57258000 Recive motion - пришло сообщение от датчика
09:09:15 0.58363100 Xiaomi motion complete setGlobal - в этот момент прошли записи в бд, связанные с сообщением. Никаких задержек нету
09:09:15 0.58383500 Start call method XMotion_ванная motionDetected - дебаг перед вызовом связанного метода
09:09:15 0.98176800 Xiaomi motion update complete!! - завершение метода. Т.е. вся обработка сообщения и вызова метода на выключатели заняли пол секунды. И свет включился без задержки.

А вот лог с другого датчика через несколько минут
09:09:22 0.71682000 Start call method XMotion_туалет motionDetected
09:09:26 0.26229200 Xiaomi motion update complete!!

Разница почти 4 секунды. И визуально я эту задержку включения света в 4 секунды наблюдал.

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пн ноя 12, 2018 9:35 am
VladPTZ
crazy_russian_bear писал(а):
Пн ноя 12, 2018 12:24 am
Товарищи, у кого есть задержки, к какому модулю (устройствам) привязаны ваши датчики? Какие выключатели/реле включают?
Датчики включают выключатели sonoff с собственной прошивкой через http запросы.

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пн ноя 12, 2018 10:42 am
crazy_russian_bear
VladPTZ писал(а):
Пн ноя 12, 2018 9:35 am
crazy_russian_bear писал(а):
Пн ноя 12, 2018 12:24 am
Товарищи, у кого есть задержки, к какому модулю (устройствам) привязаны ваши датчики? Какие выключатели/реле включают?
Датчики включают выключатели sonoff с собственной прошивкой через http запросы.
А сколько у вас всего устройств от ксаоми подключенных к МД? Включая датчики температуры, открытия/закрытия, движения, в общем все, которые шлют с определенной периодичностью сообщения?
Сейчас прихожу к выводу, что задержка складывается из 2 составляющих. 1. Это обработка сообщений 2. Отправка сообщения на броадлинк
И обе эти задержки могут колебаться. Например вижу, что идет задержка включения света. Лезу в логи, а там в этот момент помимо вызова метода от датчика движения, вызвались еще 20 методов от датчика температуры и прочих датчиков движения, которые послали no_motion. В итоге идет лаг. Но опять же это не точно. Пока нету четкого понимания, как выполняются методы, есть ли какой-нибудь параллелизм или все вызовы блокирующие.

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пн ноя 12, 2018 11:05 am
VladPTZ
10 устройств и шлюз xiaomi
5 датчиков движения
2 кнопки
2 датчика протечки
1 датчик вибрации

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пн ноя 12, 2018 11:39 am
crazy_russian_bear
Скорее всего у вас такая же ситуация как и у меня
10:58:55 0.55968700 {"cmd":"report","model":"motion","sid":"158d00023ec821","short_id":22706,"data":"{\"status\":\"motion\"}"}
10:58:55 0.56300100 Recive motion
10:58:55 0.56682700 Xiaomi motion start SQLSelectOne cmd_rec
10:58:55 0.56932500 Xiaomi motion complete SQLSelectOne cmd_rec
10:58:55 0.56972600 Xiaomi motion start SQLUpdate cmd_rec
10:58:55 0.57129100 Xiaomi motion , SQLUpdate cmd_rec
10:58:55 0.58437300 Xiaomi motion completesetGlobal cmd_rec
10:58:55 0.58474500 Start call method XMotion_ванная motionDetected
10:58:55 0.66857900 Start execute method XMotion_ванная statusUpdated
10:58:55 0.67079300 Method update complete XMotion_ванная statusUpdated
10:58:55 0.69729700 Start execute method XMotion_ванная setUpdatedText
10:58:55 0.69885800 Method update complete XMotion_ванная setUpdatedText
10:58:55 0.70655900 Method execute complete setUpdatedText
10:58:55 0.72224600 Start execute method XMotion_ванная logicAction
10:58:55 0.72355900 Method update complete XMotion_ванная logicAction
10:58:55 0.72399300 Method execute complete logicAction
10:58:55 0.72509000 Method execute complete statusUpdated
10:58:55 0.77800000 Start execute method Выключатель_ванная_зеркало statusUpdated
10:58:55 0.77932600 Method update complete Выключатель_ванная_зеркало statusUpdated
10:58:55 0.79155000 Start execute method Выключатель_ванная_зеркало setUpdatedText
10:58:55 0.79277400 Method update complete Выключатель_ванная_зеркало setUpdatedText
10:58:55 0.80031800 Method execute complete setUpdatedText
10:58:55 0.81992800 Start execute method Выключатель_ванная_зеркало logicAction
10:58:55 0.82113900 Method update complete Выключатель_ванная_зеркало logicAction
10:58:55 0.82151400 Method execute complete logicAction
10:58:55 0.82258500 Method execute complete statusUpdated
//здесь заканчивается вызов связанных методов
10:58:55 0.97326200 Xiaomi motion update complete!!
// Вот здесь внезапно идет поиск совершенно не связанного объекта и тратиться на это 2 секунды
10:58:58 0.18632600 Object founded, start call method Выключатель_прихожая
10:58:58 0.19567600 Start execute method Выключатель_прихожая setUpdatedText
10:58:58 0.19770400 Method update complete Выключатель_прихожая setUpdatedText
10:58:58 0.21025900 Method execute complete setUpdatedText
// Еще секунда чтобы обновить этот непонятный объект и потом только отправка сообщения на броадлинк
10:58:59 0.73645700 Broadlink packet checked 16 16 72
10:58:59 0.77492200 Message sended
10:58:59 0.79667800 Broadlink packet checked 16 16 72
10:58:59 0.92516500 Message sended

В итоге задержка в несколько секунд. А бывает, что это полотно из методов просто огромное, обновляется все подряд, выключатель в коридоре, датчики температуры в детской и прочее. И в итоге задержка может быть в 10 и более секунд. На 1м этапе нужно пройтись по связанным объектам и методам и понять, почему приходит motion от одного датчика, а обновляться начинает все подряд.
Потом нужно что-то придумать, когда приходят сообщения сразу от нескольких датчиков. Тут нужна какая-то очередь с приоритетом, чтобы события от датчиков движения и датчиков закрытия обрабатывались в первую очередь

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пн ноя 12, 2018 12:02 pm
skysilver
crazy_russian_bear писал(а):
Пн ноя 12, 2018 12:24 am
Я не уверен, что метод callMethod способен блокировать поток выполнения модуля.
Способен, если в пользовательских методах есть какой-либо треш, например sleep() или еще чего.

Попробуй замени в callMethod($cmd_rec['LINKED_OBJECT'] . '.' . $cmd_rec['LINKED_METHOD'], $message_data['data']);
callMethod() на callMethodSafe()

https://github.com/sergejey/majordomo-x ... s.php#L722

Re: Скорость работы Majordomo на разном железе (Raspberry, Intel PC, etc..)

Добавлено: Пн ноя 12, 2018 12:20 pm
skysilver
crazy_russian_bear писал(а):
Пн ноя 12, 2018 11:39 am
// Вот здесь внезапно идет поиск совершенно не связанного объекта и тратиться на это 2 секунды
10:58:58 0.18632600 Object founded, start call method Выключатель_прихожая
10:58:58 0.19567600 Start execute method Выключатель_прихожая setUpdatedText
А это откуда? В какое место вставлял дебмес, чтобы увидеть?