Страница 1 из 1

MQTT Модуль падает через время

Добавлено: Пт май 13, 2016 5:50 pm
khlon
Всем добрый день.
у меня система ARMBIAN Debian GNU/Linux 8 (jessie) 3.4.112-sun7i стоит на cubietruck, так же стоит mosquitto, и модуль Mqtt в самом majordomo.

настройки MQTT
Hostname: (*) localhost
Port: (*) 1883
Subscription path: (*) #

Данные приходят с ESP8266 приходят постоянно (проверено что модуль передает), направление ESP8266->Majordomo. в модуле соответственно вижу /Spalnya_1/shth
/Spalnya_1/shth 05/13/2016 17:39:31 58.7 (Spalnya_1_Hum.humidity)
всё работает, но только через какое то время данные перестают обновляться в модуле MQTT.
Захожу с консоли и проверяю что брокер получает данные от модуля, там всё в норме.Делаю полную перезагрузку системы и всё снова работает какое то время (примерно 10 минут по логам).

Вывод Debug
18:00:04 DEBUG [root]: Executing (exclusive): mplayer /var/www/cached/voice/68d47a24ecd226100bb1f6f3a11cc27f_yandex.mp3 (at /var/www/lib/general.class.php:547)
18:00:00 DEBUG [root]: Executing (exclusive): mplayer /var/www/sounds/dingdong.mp3 (at /var/www/lib/general.class.php:547)
18:00:00 DEBUG [root]: yandex_tts.processSubscription (at /var/www/lib/general.class.php:547)
17:56:44 DEBUG [root]: Closing thread: php -q ./scripts/cycle_mqtt.php --params "a:0:{}">>/var/www/debmes/log_2016-05-13-cycle_mqtt.php.txt (at /var/www/lib/general.class.php:547)
17:54:27 DEBUG [root]: Executing (exclusive): mplayer /var/www/cached/voice/e1f8e6e2a5279f08160517771cedb394_yandex.mp3 (at /var/www/lib/general.class.php:547)
17:54:24 DEBUG [root]: Executing (exclusive): mplayer /var/www/sounds/dingdong.mp3 (at /var/www/lib/general.class.php:547)
17:54:24 DEBUG [root]: yandex_tts.processSubscription (at /var/www/lib/general.class.php:547)
17:52:56 DEBUG [root]: Closing thread: php -q ./scripts/cycle_rss.php --params "a:0:{}">>/var/www/debmes/log_2016-05-13-cycle_rss.php.txt (at /var/www/lib/general.class.php:547)
17:52:56 DEBUG [root]: Closing thread: php -q ./scripts/cycle_connect.php --params "a:0:{}">>/var/www/debmes/log_2016-05-13-cycle_connect.php.txt (at /var/www/lib/general.class.php:547)
17:52:56 DEBUG [root]: Closing thread: php -q ./scripts/cycle_skype.php --params "a:0:{}">>/var/www/debmes/log_2016-05-13-cycle_skype.php.txt (at /var/www/lib/general.class.php:547)
17:52:56 DEBUG [root]: Closing thread: php -q ./scripts/cycle_zoneminder.php --params "a:0:{}">>/var/www/debmes/log_2016-05-13-cycle_zoneminder.php.txt (at /var/www/lib/general.class.php:547)
17:52:55 DEBUG [root]: Closing thread: DISPLAY=:101 php ./scripts/cycle_X101_skype.php --params "a:0:{}" (at /var/www/lib/general.class.php:547)
17:52:53 DEBUG [root]: Starting ./scripts/cycle_websockets.php ... (at /var/www/lib/general.class.php:547)
17:52:53 DEBUG [root]: Starting ./scripts/cycle_rss.php ... (at /var/www/lib/general.class.php:547)
17:52:53 DEBUG [root]: Starting ./scripts/cycle_connect.php ... (at /var/www/lib/general.class.php:547)
17:52:53 DEBUG [root]: Starting ./scripts/cycle_webvars.php ... (at /var/www/lib/general.class.php:547)
17:52:53 DEBUG [root]: Starting ./scripts/cycle_ping.php ... (at /var/www/lib/general.class.php:547)
17:52:53 DEBUG [root]: Starting ./scripts/cycle_main.php ... (at /var/www/lib/general.class.php:547)
17:52:52 DEBUG [root]: Starting ./scripts/cycle_scheduler.php ... (at /var/www/lib/general.class.php:547)
17:52:52 DEBUG [root]: Starting ./scripts/cycle_skype.php ... (at /var/www/lib/general.class.php:547)
17:52:52 DEBUG [root]: Starting ./scripts/cycle_states.php ... (at /var/www/lib/general.class.php:547)
17:52:52 DEBUG [root]: Starting ./scripts/cycle_mqtt.php ... (at /var/www/lib/general.class.php:547)
17:52:52 DEBUG [root]: Starting ./scripts/cycle_zoneminder.php ... (at /var/www/lib/general.class.php:547)
17:52:52 DEBUG [root]: Starting ./scripts/cycle_X101_skype.php ... (at /var/www/lib/general.class.php:547)
17:52:52 DEBUG [root]: Starting ./scripts/cycle_execs.php ... (at /var/www/lib/general.class.php:547)
17:52:45 DEBUG [root]: Running maintenance script (at /var/www/lib/general.class.php:547)
17:51:38 DEBUG [root]: RESTARTING: ./scripts/cycle_main.php (at /var/www/lib/general.class.php:547)

Вывод конца лога /Debmes
2016-05-13 17:56:42 Topic:/Kuhnya/light 27
2016-05-13 17:56:43 Topic:/Kuhnya/rssi -69
2016-05-13 17:56:43 Topic:/Kuhnya/freemem 31448
2016-05-13 17:56:43 Topic:/Kuhnya/uptime 6600
2016-05-13 17:56:43 Topic:/Koridor/rssi -49
2016-05-13 17:56:44 Topic:/Koridor/input13 0

Прошу помощи. по форуму похожего не нашёл.

Re: MQTT Модуль падает через время

Добавлено: Вс май 15, 2016 2:23 pm
AndrewS
Где то на робофоруме читал, что модуль ESP8266 переходит в режим сна без сигнала на выводе таймера сна.

Re: MQTT Модуль падает через время

Добавлено: Вс май 15, 2016 5:03 pm
khlon
с Есп данные на cubietruck где стоит mosquitto приходят. проверено. но эти данные не появляются в модуле MQTT majordomo

Re: MQTT Модуль падает через время

Добавлено: Сб сен 10, 2016 5:31 pm
piagreen
У меня такая же проблема в Raspberry Pi 3. Данные в брокер заходят, а МЖД их отказывается обновлять. Переустанавливал образ на малинку, настраивал на разные датчики с разными путями. Пока не могу победить, живет своей жизнью.

Re: MQTT Модуль падает через время

Добавлено: Пт сен 30, 2016 2:15 pm
SergeyM
Коллеги! (хотя, наверное больше вопрос к Сергею)
настроил модуль MQTT, в него приходят сигналы с датчиков движения, пока датчик был один, всё было нормально, после появления второго, цикл MQTT стал падать. Полез в Debmes, обнаружил следующее в логах цикла mqtt
SPOILERSPOILER_SHOW
Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-09-29-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122
... а что он пытается писать в лог Telegram ?

затем обнаружил ошибку
SPOILERSPOILER_SHOW
Fatal error: Cannot redeclare cmp() (previously declared in C:\_majordomo\htdocs\modules\objects\objects.class.php(514) : eval()'d code:13) in C:\_majordomo\htdocs\modules\objects\objects.class.php(514) : eval()'d code on line 19
, собственно после этого и происходит падение цикла mqtt. насколько я понял - проблема в повторном декларировании функции "cmp", которая описана в методе "updateActivityStatus"
SPOILERSPOILER_SHOW
$rooms=getObjectsByClass("Rooms");
$total=count($rooms);
for($i=0;$i<$total;$i++) {
$rooms[$i]['room']=getGlobal($rooms[$i]['TITLE'].'.Title');
if (!$rooms[$i]['room']) {
$rooms[$i]['room']=$rooms[$i]['TITLE'];
}
$rooms[$i]['active']=getGlobal($rooms[$i]['TITLE'].'.SomebodyHere');
$rooms[$i]['time']=getGlobal($rooms[$i]['TITLE'].'.LatestActivity');
$rooms[$i]['diff']=time()-$rooms[$i]['time'];
}

function cmp($a, $b)
{
if ($a['diff'] == $b['diff']) {
return 0;
}
return ($a['diff'] < $b['diff']) ? -1 : 1;
}
usort($rooms,"cmp");

if (!$rooms[0]['active']) {
$somebodyHomeText="Никого нет дома. Были в ".date('H:i',$rooms[0]['time'])." (".$rooms[0]['room'].")";
} else {
$res_rooms=array();
for($i=0;$i<$total;$i++) {
if ($rooms[$i]['active']) {
$res_rooms[]=$rooms[$i]['room'];
}
}
$somebodyHomeText="Кто-то дома: ".implode(", ",$res_rooms);
}
setGlobal('somebodyHomeText',$somebodyHomeText);
//echo "Updated";
, т.е. это может происходить при срабатывании 2-х датчиков движения одновременно, либо функция, после выполнения в методе на удаляется из памяти.

Re: MQTT Модуль падает через время

Добавлено: Вс окт 02, 2016 2:12 pm
sergejey
подобную проблему уже описывали -- если в методе объявляется функция, то нужно её оборачивать в конструкцию if (function_exists('имя_фукнции')) { function имя_функции()... }

Re: MQTT Модуль падает через время

Добавлено: Вт окт 04, 2016 11:00 am
SergeyM
Спасибо! Заработало.