[Модуль] MQTT (mqtt)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

AndreyD
Сообщения: 25
Зарегистрирован: Ср фев 20, 2019 7:16 am
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: Предложения по доработке модуля MQTT

Сообщение AndreyD » Вс мар 31, 2019 8:49 pm

Aven писал(а):
Вс мар 31, 2019 8:05 pm
для Publish используется отдельное подключение, а не существующее которое прослушивает подписки
sergejey писал(а):
Чт ноя 10, 2016 1:00 pm
Из того, что ещё в очереди -- одно постоянное соединение с сервером, а то сейчас работает через два: одно для мониторинга подписок (постоянное) и одно для установки значений (по необходимости).
Теперь понятно,что дело в модуле, а то я думал что-то не так настраивал.
Cubieboard7 + WD Black WD5000LPLX, Debian GNU/Linux 9 (stretch)
Fav0rit
Сообщения: 60
Зарегистрирован: Чт мар 19, 2015 10:27 pm
Благодарил (а): 8 раз
Поблагодарили: 22 раза

Re: [Модуль] MQTT (mqtt)

Сообщение Fav0rit » Вс мар 31, 2019 10:32 pm

Ron писал(а):
Вс мар 31, 2019 4:32 pm
Fav0rit писал(а):
Вс мар 31, 2019 11:22 am
Была мысль попробовать, сделал, но ничего не изменилось.
Тогда конфиг железа, чем нагружена, (все процессы), журнал ошибок всего и т.д.
MQTT на мажоре норм работает и не глючит ни разу, если система не перегружена и нет ничего того, что грузит сеть.cpu и т.д.
Вы говорите про безупречную работу MQTT, но постом раньше упоминаете некорректную работу retain, где логика? Про Retain, кстати, отдельная тема, клиент мажордома их тоже считывает не без косяков.
Fav0rit
Сообщения: 60
Зарегистрирован: Чт мар 19, 2015 10:27 pm
Благодарил (а): 8 раз
Поблагодарили: 22 раза

Re: [Модуль] MQTT (mqtt)

Сообщение Fav0rit » Вс мар 31, 2019 10:33 pm

rzag писал(а):
Вс мар 31, 2019 8:11 pm
Aven писал(а):
Вс мар 31, 2019 8:05 pm
для Publish используется отдельное подключение, а не существующее которое прослушивает подписки
Спасибо, но все равно не пойму, зачем создавать два подключения, отдельно для публикации и отдельно для подписки.
Они не создают конфликт для брокера ?
Как раньше писал - рвется соеденение, сразу после публикации - это особенности библиотеки phpmqtt ?
Нет, никакого конфликта нет и в целом такой подход работает вполне нормально, лично у меня по публикации в брокер проблем нет, все пакеты уходят исправно...
Fav0rit
Сообщения: 60
Зарегистрирован: Чт мар 19, 2015 10:27 pm
Благодарил (а): 8 раз
Поблагодарили: 22 раза

Re: [Модуль] MQTT (mqtt)

Сообщение Fav0rit » Вс мар 31, 2019 11:53 pm

Наши споры побудили меня немного поковыряться в цикле, в частности, я изменил цикл while в файле cycle_mqtt.php следующим образом:
СпойлерПоказать

Код: Выделить всё

while ($cycle) {
	
	$time_start = microtime(true);

	if ($mqtt_client->proc())
		{
		$cycle=true;
		} 
		else
		{
		$cycle=false;
		DebMes("proc error", 'mqtt');
		}
	$time_end = microtime(true);
	
	$time = $time_end - $time_start;
	
	DebMes("time:".$time, 'mqtt');
	
    /*
    $tmp=SQLSelect("SELECT * FROM mqtt_queue ORDER BY ID");
    if ($tmp[0]['ID']) {
     $total=count($tmp);
     for($i=0;$i<$total;$i++) {
      SQLExec('DELETE FROM mqtt_queue WHERE ID='.$tmp[$i]['ID']);
      $mqtt_client->publish($tmp[$i]['PATH'],$tmp[$i]['VALUE']);
     }
    }
    */

    $currentMillis = round(microtime(true) * 10000);

    if ($currentMillis - $previousMillis > 10000) {
        $previousMillis = $currentMillis;

        setGlobal((str_replace('.php', '', basename(__FILE__))) . 'Run', time(), 1);

        if (file_exists('./reboot') || IsSet($_GET['onetime'])) {
            $mqtt_client->close();
            $db->Disconnect();
            exit;
        }
    }
}
Для замера времени выполнения функции proc() библиотеки phpMQTT.
В итоге в логах получил такой результат:
СпойлерПоказать
23:38:30 0.02729100 time:0.10013818740845
23:38:30 0.12787000 time:0.10015916824341
23:38:30 0.22834300 time:0.10014200210571
23:38:30 0.32884700 time:0.10012912750244
23:38:30 0.50485100 time:0.1755850315094
23:39:00 0.88173100 time:30.376502037048
23:39:01 0.73214200 time:0.67700481414795
23:39:01 0.95575600 time:0.22319793701172
23:39:02 0.94182900 time:0.59848093986511
23:39:03 0.06824500 time:0.12591481208801
23:39:03 0.94227000 time:0.19525289535522
23:39:03 0.96517000 time:0.022436141967773
23:39:04 0.21812700 time:0.25252795219421
23:39:04 0.24623300 time:0.011814832687378
23:39:04 0.27366000 time:0.026935815811157
23:39:04 0.45256000 time:0.17844295501709
23:39:04 0.46476700 time:0.011645793914795
23:39:04 0.47818700 time:0.01289701461792
23:39:04 0.63053200 time:0.15194606781006
23:39:04 0.72076600 time:0.089940786361694
23:39:04 0.74283000 time:0.02177619934082
23:39:04 0.84840400 time:0.10531210899353
23:39:04 0.87776600 time:0.029092073440552
23:39:04 0.97895200 time:0.10018491744995
23:39:05 0.07939200 time:0.10013103485107
23:39:05 0.17997600 time:0.10014414787292
23:39:05 0.28060400 time:0.10015797615051
23:39:05 0.41742900 time:0.10016489028931
23:39:05 0.51804100 time:0.10025000572205
23:39:05 0.61844800 time:0.10012102127075
23:39:05 0.71881300 time:0.10011100769043
23:39:05 0.81929700 time:0.10012793540955
23:39:05 0.91990900 time:0.10014605522156
23:39:06 0.02052300 time:0.10015797615051
23:39:06 0.12109600 time:0.10015797615051
23:39:06 0.22156800 time:0.10013723373413
23:39:06 0.32211500 time:0.1001410484314
23:39:06 0.43859200 time:0.10017085075378
23:39:06 0.53921600 time:0.10016393661499
23:39:06 0.63983500 time:0.100182056427
23:39:06 0.74032600 time:0.10016298294067
23:39:06 0.84085600 time:0.10016298294067
23:39:06 0.94145100 time:0.1001570224762
23:39:07 0.04212100 time:0.10019898414612
23:39:07 0.14275500 time:0.10017490386963
23:39:07 0.24339800 time:0.10018992424011
23:39:07 0.25601800 time:0.012103080749512
23:39:07 0.35664000 time:0.10016202926636
23:39:07 0.48012500 time:0.10022187232971
23:39:07 0.58076800 time:0.10016584396362
23:39:07 0.68140300 time:0.10015821456909
23:39:07 0.78193000 time:0.10014200210571
23:39:07 0.88248700 time:0.10014081001282
23:39:07 0.98309300 time:0.10015988349915
23:39:08 0.08373100 time:0.10016012191772
23:39:08 0.18438200 time:0.10016798973083
23:39:08 0.28492700 time:0.10015106201172
23:39:08 0.38549100 time:0.10015201568604
23:39:08 0.74847300 time:0.10014200210571
23:39:08 0.84911500 time:0.1001570224762
23:39:08 0.94981400 time:0.10017204284668
23:39:09 0.05032500 time:0.10014820098877
23:39:09 0.15069100 time:0.10011410713196
23:39:09 0.25108300 time:0.10012412071228
23:39:09 0.35148500 time:0.10012102127075
23:39:09 0.45203600 time:0.10015106201172
23:39:09 0.58921000 time:0.10014891624451
23:39:09 0.68976500 time:0.10014200210571
23:39:09 0.79020400 time:0.10012483596802
23:39:09 0.89076400 time:0.10013604164124
23:39:09 0.99142100 time:0.10016489028931
23:39:10 0.09206700 time:0.10016703605652
23:39:10 0.19260300 time:0.1001501083374
23:39:10 0.29321800 time:0.10016298294067
23:39:10 0.39382000 time:0.10017204284668
23:39:10 0.56257100 time:0.16831588745117
23:39:40 0.76785400 time:30.190862894058
23:39:40 0.86064300 time:0.08061695098877
23:39:40 0.87854300 time:0.017626047134399
23:39:40 0.88860100 time:0.0097720623016357
23:39:40 0.89852400 time:0.0096540451049805
23:39:40 0.91069400 time:0.011888027191162
23:39:40 0.92261300 time:0.011626005172729
То есть периодически возникают задержки в 30 секунд! Причем ровно 30, что не похоже на высокую загрузку ЦП, тем более она в норме...
Версия брокера свежая (mosquitto is already the newest version (1.5.8-0mosquitto1))
У меня всего 75 топиков, причем привязанных меньше 2х десятков.
Ок, может я один такой? Тогда что у меня не так?
Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия
Благодарил (а): 3 раза
Поблагодарили: 154 раза

Re: [Модуль] MQTT (mqtt)

Сообщение Aven » Пн апр 01, 2019 12:28 am

протестировал работу нативного модуля, работает намного лучше чем phpMQTT.
Рекомендую: https://github.com/mgdm/Mosquitto-PHP
Fav0rit
Сообщения: 60
Зарегистрирован: Чт мар 19, 2015 10:27 pm
Благодарил (а): 8 раз
Поблагодарили: 22 раза

Re: [Модуль] MQTT (mqtt)

Сообщение Fav0rit » Пн апр 01, 2019 12:48 am

Aven писал(а):
Пн апр 01, 2019 12:28 am
протестировал работу нативного модуля, работает намного лучше чем phpMQTT.
Рекомендую: https://github.com/mgdm/Mosquitto-PHP
Как именно прикрутили его к системе? Что переписывали?
rzag
Сообщения: 32
Зарегистрирован: Вт июн 27, 2017 7:01 pm
Благодарил (а): 6 раз
Поблагодарили: 4 раза

Re: [Модуль] MQTT (mqtt)

Сообщение rzag » Пн апр 01, 2019 1:04 pm

Aven писал(а):
Пн апр 01, 2019 12:28 am
протестировал работу нативного модуля, работает намного лучше чем phpMQTT.
Рекомендую: https://github.com/mgdm/Mosquitto-PHP
Пож-ста дайте подробности. У меня уже истерика с этим mqtt :D
Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия
Благодарил (а): 3 раза
Поблагодарили: 154 раза

Re: [Модуль] MQTT (mqtt)

Сообщение Aven » Пн апр 01, 2019 3:54 pm

Я использую в своем проекте, не совместно с МДМ. Я это к тому, что модуль можно переписать, что бы он работал с брокером через Mosquitto-PHP и проблемы уйдут.
Аватара пользователя
hc2hunter
Сообщения: 507
Зарегистрирован: Сб дек 02, 2017 10:45 am
Откуда: RUS
Благодарил (а): 228 раз
Поблагодарили: 348 раз

Re: [Модуль] MQTT (mqtt)

Сообщение hc2hunter » Вт апр 02, 2019 2:05 pm

Подскажите, знающие, можно как-то отследить состояние сервисного цикла MQTT по каким-то системным переменным?
Вижу, что в модуле есть setGlobal('cycle_mqttControl', 'restart'); для рестарта.
Старые версии модуля еще сохраняли какие-то данные о состоянии в переменной ThisComputer.cycle_mqttRun, теперь же там пусто...

:?
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: [Модуль] MQTT (mqtt)

Сообщение nick7zmail » Вт апр 02, 2019 2:55 pm

В ThisComputer.cycle_mqttRun как раз хранится последнее время итерации цикла. Обновляется вроде раз в 5 или в 10 сек. Если оно больше 2х минут назад обновлено - смело можете считать цикл умершим.
За это сообщение автора nick7zmail поблагодарил:
hc2hunter (Вт апр 02, 2019 3:08 pm)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить