Страница 28 из 28
Re: [Модуль] Устройства Bluetooth (bluetoothdevices)
Добавлено: Вс мар 28, 2021 7:45 pm
grifindorec
Witcherus писал(а): Сб мар 27, 2021 11:09 pm
Уже неделю не могу разобраться с причиной постоянного падения цикла.
Код: Выделить всё
21:05:02 0.19947600 Adding cycle_bluetoothdevices to auto-recovery list
21:04:31 0.40131200 Starting service cycle_bluetoothdevices (./scripts/cycle_bluetoothdevices.php)
21:04:03 0.72582600 Thread closed: cycle_bluetoothdevices
21:04:02 0.70239800 Closing thread: exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1
21:04:02 0.70019700 Adding cycle_bluetoothdevices to auto-recovery list
21:04:01 0.67580100 Result:
21:04:01 0.66368400 Executing: kill -9 19956
21:04:01 0.66345700 Closing thread 19956 (exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1)
21:04:01 0.66305900 Force closing service cycle_bluetoothdevices (id: 27)
21:04:01 0.63205500 Got control command 'restart' for cycle_bluetoothdevices
21:04:00 0.61583100 Looks like cycle_bluetoothdevices is dead (updated: 2021-03-27 20:33:59). Need to recovery
20:25:14 0.29346600 Adding cycle_bluetoothdevices to auto-recovery list
20:24:43 0.50417000 Starting service cycle_bluetoothdevices (./scripts/cycle_bluetoothdevices.php)
20:24:15 0.81623000 Thread closed: cycle_bluetoothdevices
20:24:14 0.79227200 Closing thread: exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1
20:24:14 0.79001900 Adding cycle_bluetoothdevices to auto-recovery list
20:24:13 0.76475900 Result:
20:24:13 0.75253900 Executing: kill -9 17485
20:24:13 0.75231800 Closing thread 17485 (exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1)
20:24:13 0.75194000 Force closing service cycle_bluetoothdevices (id: 26)
20:24:13 0.72337100 Got control command 'restart' for cycle_bluetoothdevices
20:24:12 0.70727400 Looks like cycle_bluetoothdevices is dead (updated: 2021-03-27 19:54:11). Need to recovery
19:46:29 0.40840700 Adding cycle_bluetoothdevices to auto-recovery list
19:45:58 0.57874700 Starting service cycle_bluetoothdevices (./scripts/cycle_bluetoothdevices.php)
19:45:30 0.82863800 Thread closed: cycle_bluetoothdevices
19:45:29 0.80497500 Closing thread: exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1
19:45:29 0.80276000 Adding cycle_bluetoothdevices to auto-recovery list
19:45:28 0.77771000 Result:
19:45:28 0.76570700 Executing: kill -9 14631
19:45:28 0.76547500 Closing thread 14631 (exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1)
19:45:28 0.76509200 Force closing service cycle_bluetoothdevices (id: 25)
19:45:28 0.73730000 Got control command 'restart' for cycle_bluetoothdevices
19:45:27 0.72194900 Looks like cycle_bluetoothdevices is dead (updated: 2021-03-27 19:15:26). Need to recovery
19:04:37 0.78281500 Adding cycle_bluetoothdevices to auto-recovery list
19:04:06 0.95001200 Starting service cycle_bluetoothdevices (./scripts/cycle_bluetoothdevices.php)
19:03:38 0.26312000 Thread closed: cycle_bluetoothdevices
19:03:37 0.23960000 Adding cycle_bluetoothdevices to auto-recovery list
19:03:37 0.24180700 Closing thread: exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1
19:03:36 0.21511900 Result:
19:03:36 0.20295700 Executing: kill -9 12005
19:03:36 0.20270900 Closing thread 12005 (exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1)
19:03:36 0.20223900 Force closing service cycle_bluetoothdevices (id: 24)
19:03:36 0.17474100 Got control command 'restart' for cycle_bluetoothdevices
19:03:35 0.15955800 Looks like cycle_bluetoothdevices is dead (updated: 2021-03-27 18:33:34). Need to recovery
18:24:30 0.82449000 Adding cycle_bluetoothdevices to auto-recovery list
1) Прописано www-data ALL = (ALL) NOPASSWD:ALL в visudo
2) Параметры настроены на Сканирование радиоэфира:
60
300
-1
Логов модуль не пишет и не могу понять первопричину падения.
Команда sudo -u www-data l2ping 30:22:00:00:45:25 -c1 -f не проходила даже с измененным visudo.
Изменение прав - chmod -s на hciconfig и l2ping команду l2ping пропустили, но модуль падает все равно постоянно.
Переопределял права на каталоги из www/ пробовал изменять код модуля в приближении с логикой BLEtool (который работает без сбоев)/ обновлял-удалял-переустанавливал модуль/ пробовал разные bluethooth свистки... Ничего не помогло.
Идеи закончились, что может быть еще причиной постоянной остановки цикла с выводом следующей ошибки?
Код: Выделить всё
cycle_bluetoothdevices
Backtrace:
#0 /var/www/cycle.php(370): registerError('cycle_hang', 'cycle_bluetooth...')
#1 {main}
Если вдруг найдете решение, расскажите пожалуйста, у меня тоже постоянно падает цикл, причем в самые нужные моменты.
Re: [Модуль] Устройства Bluetooth (bluetoothdevices)
Добавлено: Пн мар 29, 2021 6:57 pm
grifindorec
Witcherus писал(а): Сб мар 27, 2021 11:09 pm
Уже неделю не могу разобраться с причиной постоянного падения цикла.
Код: Выделить всё
21:05:02 0.19947600 Adding cycle_bluetoothdevices to auto-recovery list
21:04:31 0.40131200 Starting service cycle_bluetoothdevices (./scripts/cycle_bluetoothdevices.php)
21:04:03 0.72582600 Thread closed: cycle_bluetoothdevices
21:04:02 0.70239800 Closing thread: exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1
21:04:02 0.70019700 Adding cycle_bluetoothdevices to auto-recovery list
21:04:01 0.67580100 Result:
21:04:01 0.66368400 Executing: kill -9 19956
21:04:01 0.66345700 Closing thread 19956 (exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1)
21:04:01 0.66305900 Force closing service cycle_bluetoothdevices (id: 27)
21:04:01 0.63205500 Got control command 'restart' for cycle_bluetoothdevices
21:04:00 0.61583100 Looks like cycle_bluetoothdevices is dead (updated: 2021-03-27 20:33:59). Need to recovery
20:25:14 0.29346600 Adding cycle_bluetoothdevices to auto-recovery list
20:24:43 0.50417000 Starting service cycle_bluetoothdevices (./scripts/cycle_bluetoothdevices.php)
20:24:15 0.81623000 Thread closed: cycle_bluetoothdevices
20:24:14 0.79227200 Closing thread: exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1
20:24:14 0.79001900 Adding cycle_bluetoothdevices to auto-recovery list
20:24:13 0.76475900 Result:
20:24:13 0.75253900 Executing: kill -9 17485
20:24:13 0.75231800 Closing thread 17485 (exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1)
20:24:13 0.75194000 Force closing service cycle_bluetoothdevices (id: 26)
20:24:13 0.72337100 Got control command 'restart' for cycle_bluetoothdevices
20:24:12 0.70727400 Looks like cycle_bluetoothdevices is dead (updated: 2021-03-27 19:54:11). Need to recovery
19:46:29 0.40840700 Adding cycle_bluetoothdevices to auto-recovery list
19:45:58 0.57874700 Starting service cycle_bluetoothdevices (./scripts/cycle_bluetoothdevices.php)
19:45:30 0.82863800 Thread closed: cycle_bluetoothdevices
19:45:29 0.80497500 Closing thread: exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1
19:45:29 0.80276000 Adding cycle_bluetoothdevices to auto-recovery list
19:45:28 0.77771000 Result:
19:45:28 0.76570700 Executing: kill -9 14631
19:45:28 0.76547500 Closing thread 14631 (exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1)
19:45:28 0.76509200 Force closing service cycle_bluetoothdevices (id: 25)
19:45:28 0.73730000 Got control command 'restart' for cycle_bluetoothdevices
19:45:27 0.72194900 Looks like cycle_bluetoothdevices is dead (updated: 2021-03-27 19:15:26). Need to recovery
19:04:37 0.78281500 Adding cycle_bluetoothdevices to auto-recovery list
19:04:06 0.95001200 Starting service cycle_bluetoothdevices (./scripts/cycle_bluetoothdevices.php)
19:03:38 0.26312000 Thread closed: cycle_bluetoothdevices
19:03:37 0.23960000 Adding cycle_bluetoothdevices to auto-recovery list
19:03:37 0.24180700 Closing thread: exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1
19:03:36 0.21511900 Result:
19:03:36 0.20295700 Executing: kill -9 12005
19:03:36 0.20270900 Closing thread 12005 (exec php -q ./scripts/cycle_bluetoothdevices.php --params "a:0:{}" > /dev/null 2>&1)
19:03:36 0.20223900 Force closing service cycle_bluetoothdevices (id: 24)
19:03:36 0.17474100 Got control command 'restart' for cycle_bluetoothdevices
19:03:35 0.15955800 Looks like cycle_bluetoothdevices is dead (updated: 2021-03-27 18:33:34). Need to recovery
18:24:30 0.82449000 Adding cycle_bluetoothdevices to auto-recovery list
1) Прописано www-data ALL = (ALL) NOPASSWD:ALL в visudo
2) Параметры настроены на Сканирование радиоэфира:
60
300
-1
Логов модуль не пишет и не могу понять первопричину падения.
Команда sudo -u www-data l2ping 30:22:00:00:45:25 -c1 -f не проходила даже с измененным visudo.
Изменение прав - chmod -s на hciconfig и l2ping команду l2ping пропустили, но модуль падает все равно постоянно.
Переопределял права на каталоги из www/ пробовал изменять код модуля в приближении с логикой BLEtool (который работает без сбоев)/ обновлял-удалял-переустанавливал модуль/ пробовал разные bluethooth свистки... Ничего не помогло.
Идеи закончились, что может быть еще причиной постоянной остановки цикла с выводом следующей ошибки?
Код: Выделить всё
cycle_bluetoothdevices
Backtrace:
#0 /var/www/cycle.php(370): registerError('cycle_hang', 'cycle_bluetooth...')
#1 {main}
В общем похоже выход один, как писал логрус - не использовать гибридный режим.
Re: [Модуль] Устройства Bluetooth (bluetoothdevices)
Добавлено: Пн мар 29, 2021 8:27 pm
Witcherus
grifindorec писал(а): Пн мар 29, 2021 6:57 pm
В общем похоже выход один, как писал логрус - не использовать гибридный режим.
У меня только сканирование эфира стоит, цикл падает все равно

- Screen.jpg (114.55 КБ) 3781 просмотр
Re: [Модуль] Устройства Bluetooth (bluetoothdevices)
Добавлено: Пн мар 29, 2021 9:08 pm
Logrus
Witcherus писал(а): Пн мар 29, 2021 8:27 pm
grifindorec писал(а): Пн мар 29, 2021 6:57 pm
В общем похоже выход один, как писал логрус - не использовать гибридный режим.
У меня только сканирование эфира стоит, цикл падает все равно
если нужно только сканирование бле то модуль автора мдм в этом плане оптимальней (но там нюансы всякие, т.к. в этом модуле сами алгоритмы лучше, но именно с бле сканирует каждого юзера)
а еще лучше сканировать есп с передачей по мкютт
т.к. сама проблема в ядре линукс и стеке бт
Re: [Модуль] Устройства Bluetooth (bluetoothdevices)
Добавлено: Пн мар 29, 2021 9:37 pm
grifindorec
Witcherus писал(а): Пн мар 29, 2021 8:27 pm
grifindorec писал(а): Пн мар 29, 2021 6:57 pm
В общем похоже выход один, как писал логрус - не использовать гибридный режим.
У меня только сканирование эфира стоит, цикл падает все равно
Вы написали про chmod на hciconfig и l2ping. А на hcitool сделали?
Re: [Модуль] Устройства Bluetooth (bluetoothdevices)
Добавлено: Пн мар 29, 2021 10:48 pm
Witcherus
Logrus писал(а): Пн мар 29, 2021 9:08 pm
если нужно только сканирование бле то модуль автора мдм в этом плане оптимальней (но там нюансы всякие, т.к. в этом модуле сами алгоритмы лучше, но именно с бле сканирует каждого юзера)
а еще лучше сканировать есп с передачей по мкютт
т.к. сама проблема в ядре линукс и стеке бт
С модулем автора таже ситуация с падением, + я не совсем понял, как можно вытащить из девайса индикатор online/offline в свойство объекта.
Re: [Модуль] Устройства Bluetooth (bluetoothdevices)
Добавлено: Пн мар 29, 2021 10:58 pm
Witcherus
grifindorec писал(а): Пн мар 29, 2021 9:37 pm
Вы написали про chmod на hciconfig и l2ping. А на hcitool сделали?
Да, пробовал весь такой набор:
chmod +s /usr/bin/hcitool
chmod +s /usr/bin/l2ping
chmod +s /usr/bin/hciconfig
chmod +s /usr/bin/gatttool
chmod +s /usr/bin/timeout
Забыл написать, не помогло.
По итогу, вроде нашел причину. Уже час цикл держится без падений.
Изменения в файле modules/bluetoothdevices/bluetoothdevices.class.php (строки 131,132):
Было
Код: Выделить всё
exec(($this->config['sudo']?'sudo ':'').'hcitool scan | grep ":"', $data);
exec(($this->config['sudo']?'sudo ':'').'timeout -s INT 10s hcitool lescan | grep ":"', $data);
Стало
Код: Выделить всё
//exec(($this->config['sudo']?'sudo ':'').'hcitool scan | grep ":"', $data);
exec(($this->config['sudo']?'sudo ':'').'timeout -s INT 15s hcitool lescan | grep ":"', $data);
Видимо какой-то конфликт запросов получался... теоретически, время задержки сканирования можно не увеличивать, но я на всякий случай оставил так.
Да, и еще чуть изменил основной файл цикла /scripts/cycle_bluetoothdevices.php (не оч красиво порубал привязку параметров, пытался сделать меньше шагов для цикла, может с этим тоже есть зависимости, проверю позже).
Код: Выделить всё
<?php
chdir(dirname(__FILE__).'/../');
include_once('./config.php');
include_once('./lib/loader.php');
include_once('./lib/threads.php');
set_time_limit(0);
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
include_once("./load_settings.php");
include_once(DIR_MODULES."control_modules/control_modules.class.php");
$ctl = new control_modules();
include_once(DIR_MODULES.'bluetoothdevices/bluetoothdevices.class.php');
$bluetoothdevices_module = new bluetoothdevices();
$bluetoothdevices_module->getConfig();
echo date('Y/m/d H:i:s'). " running " . basename(__FILE__) .PHP_EOL;
$latest_check = 0;
$check_period = 60;
while(1) {
setGlobal((str_replace('.php', '', basename(__FILE__))).'Run', time(), 1);
if ((time() - $latest_check) > $check_period) {
$latest_check = time();
$bluetoothdevices_module->processCycle();
}
if (file_exists('./reboot') || IsSet($_GET['onetime'])){
$db->Disconnect();
exit;
}
sleep(1);
}
DebMes("Unexpected close of cycle: " . basename(__FILE__));
Re: [Модуль] Устройства Bluetooth (bluetoothdevices)
Добавлено: Вт апр 20, 2021 6:55 pm
grifindorec
Witcherus писал(а): Пн мар 29, 2021 10:58 pm
grifindorec писал(а): Пн мар 29, 2021 9:37 pm
Вы написали про chmod на hciconfig и l2ping. А на hcitool сделали?
Да, пробовал весь такой набор:
chmod +s /usr/bin/hcitool
chmod +s /usr/bin/l2ping
chmod +s /usr/bin/hciconfig
chmod +s /usr/bin/gatttool
chmod +s /usr/bin/timeout
Забыл написать, не помогло.
По итогу, вроде нашел причину. Уже час цикл держится без падений.
Изменения в файле modules/bluetoothdevices/bluetoothdevices.class.php (строки 131,132):
Было
Код: Выделить всё
exec(($this->config['sudo']?'sudo ':'').'hcitool scan | grep ":"', $data);
exec(($this->config['sudo']?'sudo ':'').'timeout -s INT 10s hcitool lescan | grep ":"', $data);
Стало
Код: Выделить всё
//exec(($this->config['sudo']?'sudo ':'').'hcitool scan | grep ":"', $data);
exec(($this->config['sudo']?'sudo ':'').'timeout -s INT 15s hcitool lescan | grep ":"', $data);
Видимо какой-то конфликт запросов получался... теоретически, время задержки сканирования можно не увеличивать, но я на всякий случай оставил так.
Да, и еще чуть изменил основной файл цикла /scripts/cycle_bluetoothdevices.php (не оч красиво порубал привязку параметров, пытался сделать меньше шагов для цикла, может с этим тоже есть зависимости, проверю позже).
Код: Выделить всё
<?php
chdir(dirname(__FILE__).'/../');
include_once('./config.php');
include_once('./lib/loader.php');
include_once('./lib/threads.php');
set_time_limit(0);
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
include_once("./load_settings.php");
include_once(DIR_MODULES."control_modules/control_modules.class.php");
$ctl = new control_modules();
include_once(DIR_MODULES.'bluetoothdevices/bluetoothdevices.class.php');
$bluetoothdevices_module = new bluetoothdevices();
$bluetoothdevices_module->getConfig();
echo date('Y/m/d H:i:s'). " running " . basename(__FILE__) .PHP_EOL;
$latest_check = 0;
$check_period = 60;
while(1) {
setGlobal((str_replace('.php', '', basename(__FILE__))).'Run', time(), 1);
if ((time() - $latest_check) > $check_period) {
$latest_check = time();
$bluetoothdevices_module->processCycle();
}
if (file_exists('./reboot') || IsSet($_GET['onetime'])){
$db->Disconnect();
exit;
}
sleep(1);
}
DebMes("Unexpected close of cycle: " . basename(__FILE__));
Метод действенный и без правки цикла, спасибо.