Страница 44 из 97
Re: [Модуль] MQTT (mqtt)
Добавлено: Пн мар 25, 2019 2:25 pm
NightRider
Обнаружил ошибку. Дело в модуле или нет, пока непонятно. Воспроизводится следующим образом:
1. Создаю новый класс, объект, в нем одно свойство Status
2. В меню управления создаю выключатель, привязываю объект, и его свойство Status
В таком случае при переключении из меню, все хорошо, в историю изменения свойства пишется однократно
3. В модуле MQTT создаю новый топик, в котором привязываюсь к объекту и свойству
Теперь при изменении переключателя в истории уже по два события
Re: [Модуль] MQTT (mqtt)
Добавлено: Пн мар 25, 2019 2:53 pm
nick7zmail
Не совсем правильно сделано.
Происходит примерно так: Вы переключаете выключателем свойство - сообщение с топиком уходит брокеру, брокер топик рассылает всем подписанным клиентам (в т.ч. МД), значение в свойстве перезаписывается, что и отражается на истории.
Варианта решения 2.
1) обойти стороной подписку (не совсем правильный, т.к. статус скорее всего в этом же топике передаётся при изменении извне.
2) разнести получение статуса и отправку статуса в разные топики (для этого в модуле есть путь write, в котором можно задать топик, отличный от основного)
Re: [Модуль] MQTT (mqtt)
Добавлено: Пн мар 25, 2019 3:34 pm
NightRider
Похоже что сделано немного не так, т.к. поведение (сохранение истории) разное:
1. При записи в админке напрямую в свойство объекта, никакого дублирования в истории нет
2. При переключении выключателя же, дублирование присутствует
Это при прочих равных условиях, описанных в моем предыдущем сообщении. Если бы история всегда дублировалась, вне зависимости от того каким образом свойство изменяется, это было бы логично, по крайней мере.
Re: [Модуль] MQTT (mqtt)
Добавлено: Вт мар 26, 2019 6:57 am
nick7zmail
Аа...тогда проверьте не подвязан ли где нить дополнительно метод помимо свойства (в том же выключателе)...может выключатель меняет свойство, и вызывает при этом метод turnOn или switch к примеру, который тоже меняет свойство?
Re: [Модуль] MQTT (mqtt)
Добавлено: Вт мар 26, 2019 1:07 pm
NightRider
Специально проверял с чистого листа: создавал новый объект, выключатель и топик. Методов вообще нет.
Писал в чате MajorDomo, там проверяли, говорят дублирования воспроизводятся. Странно что никто до сих пор этого не заметил.
Re: [Модуль] MQTT (mqtt)
Добавлено: Вт мар 26, 2019 1:10 pm
KIP
Друзья здравствуйте!
Помогите разобраться с остановками цикла модуля MQTT после январского обновления MJD.
mosquitto работает без сбоев, модуль MQTT MJD также работает без привязки к объектам и свойствам . Брокер и MJD установлены на одном сервере. Цикл модуля начинает останавливается, как только связанных объектов для полученных подписок с короткими сообщениями становиться больше 4-х или строка 1-го топика длинная.
……….
12:16:10 0.18175200 Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_mqtt.php --params "a:0:{}" > NUL
12:15:09 0.06970100 Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_mqtt.php --params "a:0:{}" > NUL
12:14:07 0.10092500 Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_mqtt.php --params "a:0:{}" > NUL
12:13:05 0.94073600 Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_mqtt.php --params "a:0:{}" > NUL
12:12:04 0.97858600 Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_mqtt.php --params "a:0:{}" > NUL
12:11:03 0.92139000 Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_mqtt.php --params "a:0:{}" > NUL
………………………….
В версии MJD до обновления модуль работает без сбоев, после обновления такая вот проблема. Где искать проблему?
Re: [Модуль] MQTT (mqtt)
Добавлено: Чт мар 28, 2019 9:05 pm
nerobot
а сам модуль сервисные сообщения в протокол не будет кидать?
просто уже есть некоторый стандарт, и это удобно, что многие устройства при старте, или при изменении режимов работы кидают сообщения бродкастом, чтоб остальные подключенные устройства особо не нервничали от того, что вдруг у мажора отвалился модуль. Пусть пишет системное сообщение про себя, что жив-здоров, искренне ваш. А если болеет чем - то уходить из жизни с кодом ошибки в лог топик.
Re: Предложения по доработке модуля MQTT
Добавлено: Сб мар 30, 2019 2:00 pm
rzag
rzag писал(а): Пт май 25, 2018 11:54 am
eeak1 писал(а): Пн май 21, 2018 10:06 pm
rzag писал(а): Вт апр 24, 2018 9:46 pm
Уважаемые, как все-таки решить проблему с постоянным реконнектом ?
вот часть лога москитто:
1524595242: Client majordomo has exceeded timeout, disconnecting.
1524595242: Socket error on client majordomo, disconnecting.
1524595242: New connection from 192.168.1.40 on port 1883.
1524595242: Client majordomo disconnected.
1524595242: New client connected from 192.168.1.40 as majordomo (c0, k10).
1524595287: Client majordomo has exceeded timeout, disconnecting.
1524595287: Socket error on client majordomo, disconnecting.
1524595287: New connection from 192.168.1.40 on port 1883.
1524595287: Client majordomo disconnected.
1524595287: New client connected from 192.168.1.40 as majordomo (c0, k10).
1524595302: Client majordomo has exceeded timeout, disconnecting.
У меня та же беда, каждые 15 секунд реконнект, но т.к. все работало то и не напрягало.
Сегодня обновил mosquitto до 1.5 и сразу все стало хуже. После 10 реконнектов брокер просто перестает опправлять данные на сервер.
Откатился назад на 1.4, полет нормальный.
UPD:
Определил что постоянные реконнекты вызывает этот код:
Код: Выделить всё
if(feof($this->socket)){
if($this->debug) echo "eof receive going to reconnect for good measure\n";
fclose($this->socket);
$this->connect(false);
if(count($this->topics))
$this->subscribe($this->topics);
}
Может быть Сергей прокомментирует, так ли нужны эти искусственные реконнекты ? В новом mosquitto это приводит к проблемам.
Я пока проблему решил увеличением времени кипаливе (кажется так

)в файле библиотеки, с 10 поменял на большее значение.
Реконекты остались, но происходят не так быстро.
Все равно напрягает, т.к. основная причина не понятна. И бывает, что в момент реконнекта в МД не доходят данные.
Так что жду, что посоветуют умные люди.
Думаю, что реконекты происходят у многих (что приводит к тормозам по работе с протоколом mqtt), просто мало кто смотрит лог.
Почитал форум. Понял, что проблему до сих пор никто не решил.
Менял и сервера пробовал разные версии mosquitto, пытался что-то менять в самой библиотеке phpmqtt - проблема с реконектами остается. При чем все мои тридцать устройств не отваливаются, а mjd - через каждые 5 сек.
По моим наблюдениям происходит это так: mjdm что-то публикует\принимает и сразу рекконект, и так после кождой публикации\приема.
Как результат, в момент рекконекта - не доходят данные в mjdm. Для меня это критично.
Судя по сообщением форума проблема не только у меня.
Классный протокол, но к сожалению, не работает нормально в mjd.
Теперь думаю на что заменить или решение все же есть ?
Re: [Модуль] MQTT (mqtt)
Добавлено: Сб мар 30, 2019 5:12 pm
NightRider
Проверил у себя, да, после публикации mjd клиентом, происходит переподключение. Ноды же публикуют без реконнектов. Хотя и они переподключаются пару раз в сутки.
Re: [Модуль] MQTT (mqtt)
Добавлено: Вс мар 31, 2019 3:04 am
Fav0rit
По моим наблюдениям MQTT вообще работает абы как, причем очень давно, о чем я неоднократно писал и в эту тему. Во-первых постоянные реконнекты, но мне кажется, что при использовании PHP это победить сложно, плюс в последнее время появились какие-то затыки в работе цикла, даже по таймеру самого цикла видны. На практике если я щелкаю выключателем, который отправляет сообщения в MQTT, то некоторый промежуток времени все отображается отлично и без задержек, а потом бац и секунд 30 вообще никакой реакции, хотя сторонний клиент MQTT все отображает правильно.