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

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модератор: immortal

Ответить
khlon
Сообщения: 9
Зарегистрирован: Пт май 13, 2016 5:35 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

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

Сообщение khlon » Пт май 13, 2016 5:50 pm

Всем добрый день.
у меня система 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

Прошу помощи. по форуму похожего не нашёл.
AndrewS
Сообщения: 123
Зарегистрирован: Пт апр 15, 2016 10:18 am
Откуда: 21RU
Благодарил (а): 5 раз
Поблагодарили: 20 раз
Контактная информация:

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

Сообщение AndrewS » Вс май 15, 2016 2:23 pm

Где то на робофоруме читал, что модуль ESP8266 переходит в режим сна без сигнала на выводе таймера сна.
Слабость - велика, а сила - ничтожна.
ARMBIAN 5.38 stable Debian GNU/Linux 9 (stretch) 4.14.18-sunxi
System load: 2.03 1.85 1.78 Up time: 23 days
Memory usage: 65 % of 2014MB CPU temp: 37°C
Orange Pi Plus 2 H3 Quad Core 1.6GHZ 2GB
khlon
Сообщения: 9
Зарегистрирован: Пт май 13, 2016 5:35 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

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

Сообщение khlon » Вс май 15, 2016 5:03 pm

с Есп данные на cubietruck где стоит mosquitto приходят. проверено. но эти данные не появляются в модуле MQTT majordomo
piagreen
Сообщения: 1
Зарегистрирован: Сб сен 10, 2016 4:53 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение piagreen » Сб сен 10, 2016 5:31 pm

У меня такая же проблема в Raspberry Pi 3. Данные в брокер заходят, а МЖД их отказывается обновлять. Переустанавливал образ на малинку, настраивал на разные датчики с разными путями. Пока не могу победить, живет своей жизнью.
SergeyM
Сообщения: 100
Зарегистрирован: Вт ноя 11, 2014 5:16 pm
Откуда: Шатура
Благодарил (а): 4 раза
Поблагодарили: 8 раз

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

Сообщение SergeyM » Пт сен 30, 2016 2:15 pm

Коллеги! (хотя, наверное больше вопрос к Сергею)
настроил модуль MQTT, в него приходят сигналы с датчиков движения, пока датчик был один, всё было нормально, после появления второго, цикл MQTT стал падать. Полез в Debmes, обнаружил следующее в логах цикла mqtt
СпойлерПоказать
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 ?

затем обнаружил ошибку
СпойлерПоказать
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"
СпойлерПоказать
$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-х датчиков движения одновременно, либо функция, после выполнения в методе на удаляется из памяти.
Windows, Debian 8, 1-Wire
Connect
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Вс окт 02, 2016 2:12 pm

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
SergeyM
Сообщения: 100
Зарегистрирован: Вт ноя 11, 2014 5:16 pm
Откуда: Шатура
Благодарил (а): 4 раза
Поблагодарили: 8 раз

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

Сообщение SergeyM » Вт окт 04, 2016 11:00 am

Спасибо! Заработало.
Windows, Debian 8, 1-Wire
Connect
Ответить