Теперь понятно,что дело в модуле, а то я думал что-то не так настраивал.
[Модуль] MQTT (mqtt)
Модератор: immortal
-
- Сообщения: 25
- Зарегистрирован: Ср фев 20, 2019 7:16 am
- Благодарил (а): 6 раз
- Поблагодарили: 1 раз
Re: Предложения по доработке модуля MQTT
Cubieboard7 + WD Black WD5000LPLX, Debian GNU/Linux 9 (stretch)
-
- Сообщения: 60
- Зарегистрирован: Чт мар 19, 2015 10:27 pm
- Благодарил (а): 8 раз
- Поблагодарили: 22 раза
Re: [Модуль] MQTT (mqtt)
Вы говорите про безупречную работу MQTT, но постом раньше упоминаете некорректную работу retain, где логика? Про Retain, кстати, отдельная тема, клиент мажордома их тоже считывает не без косяков.
-
- Сообщения: 60
- Зарегистрирован: Чт мар 19, 2015 10:27 pm
- Благодарил (а): 8 раз
- Поблагодарили: 22 раза
Re: [Модуль] MQTT (mqtt)
Нет, никакого конфликта нет и в целом такой подход работает вполне нормально, лично у меня по публикации в брокер проблем нет, все пакеты уходят исправно...
-
- Сообщения: 60
- Зарегистрирован: Чт мар 19, 2015 10:27 pm
- Благодарил (а): 8 раз
- Поблагодарили: 22 раза
Re: [Модуль] MQTT (mqtt)
Наши споры побудили меня немного поковыряться в цикле, в частности, я изменил цикл while в файле cycle_mqtt.php следующим образом:
Для замера времени выполнения функции proc() библиотеки phpMQTT.
В итоге в логах получил такой результат:
То есть периодически возникают задержки в 30 секунд! Причем ровно 30, что не похоже на высокую загрузку ЦП, тем более она в норме...
Версия брокера свежая (mosquitto is already the newest version (1.5.8-0mosquitto1))
У меня всего 75 топиков, причем привязанных меньше 2х десятков.
Ок, может я один такой? Тогда что у меня не так?
СпойлерПоказать
Код: Выделить всё
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;
}
}
}
В итоге в логах получил такой результат:
СпойлерПоказать
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
Версия брокера свежая (mosquitto is already the newest version (1.5.8-0mosquitto1))
У меня всего 75 топиков, причем привязанных меньше 2х десятков.
Ок, может я один такой? Тогда что у меня не так?
-
- Сообщения: 529
- Зарегистрирован: Сб мар 12, 2016 6:33 pm
- Откуда: Ухта, Россия
- Благодарил (а): 3 раза
- Поблагодарили: 154 раза
Re: [Модуль] MQTT (mqtt)
протестировал работу нативного модуля, работает намного лучше чем phpMQTT.
Рекомендую: https://github.com/mgdm/Mosquitto-PHP
Рекомендую: https://github.com/mgdm/Mosquitto-PHP
-
- Сообщения: 60
- Зарегистрирован: Чт мар 19, 2015 10:27 pm
- Благодарил (а): 8 раз
- Поблагодарили: 22 раза
Re: [Модуль] MQTT (mqtt)
Как именно прикрутили его к системе? Что переписывали?Aven писал(а): ↑Пн апр 01, 2019 12:28 amпротестировал работу нативного модуля, работает намного лучше чем phpMQTT.
Рекомендую: https://github.com/mgdm/Mosquitto-PHP
-
- Сообщения: 32
- Зарегистрирован: Вт июн 27, 2017 7:01 pm
- Благодарил (а): 6 раз
- Поблагодарили: 4 раза
Re: [Модуль] MQTT (mqtt)
Пож-ста дайте подробности. У меня уже истерика с этим mqttAven писал(а): ↑Пн апр 01, 2019 12:28 amпротестировал работу нативного модуля, работает намного лучше чем phpMQTT.
Рекомендую: https://github.com/mgdm/Mosquitto-PHP
-
- Сообщения: 529
- Зарегистрирован: Сб мар 12, 2016 6:33 pm
- Откуда: Ухта, Россия
- Благодарил (а): 3 раза
- Поблагодарили: 154 раза
Re: [Модуль] MQTT (mqtt)
Я использую в своем проекте, не совместно с МДМ. Я это к тому, что модуль можно переписать, что бы он работал с брокером через Mosquitto-PHP и проблемы уйдут.
- hc2hunter
- Сообщения: 507
- Зарегистрирован: Сб дек 02, 2017 10:45 am
- Откуда: RUS
- Благодарил (а): 228 раз
- Поблагодарили: 348 раз
Re: [Модуль] MQTT (mqtt)
Подскажите, знающие, можно как-то отследить состояние сервисного цикла MQTT по каким-то системным переменным?
Вижу, что в модуле есть setGlobal('cycle_mqttControl', 'restart'); для рестарта.
Старые версии модуля еще сохраняли какие-то данные о состоянии в переменной ThisComputer.cycle_mqttRun, теперь же там пусто...
Вижу, что в модуле есть setGlobal('cycle_mqttControl', 'restart'); для рестарта.
Старые версии модуля еще сохраняли какие-то данные о состоянии в переменной ThisComputer.cycle_mqttRun, теперь же там пусто...
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: [Модуль] MQTT (mqtt)
В ThisComputer.cycle_mqttRun как раз хранится последнее время итерации цикла. Обновляется вроде раз в 5 или в 10 сек. Если оно больше 2х минут назад обновлено - смело можете считать цикл умершим.
- За это сообщение автора nick7zmail поблагодарил:
- hc2hunter (Вт апр 02, 2019 3:08 pm)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<