Можно сказать это заметка для меня, что бы я не забыл как я это сделал, а может кому и пригодится. Сделал под влиянием темы на форме камрада tarasfrompir https://mjdm.ru/forum/viewtopic.php?f=4&t=4183
И так для винды Комрад tarasfrompir написла на форум целаю статью. Но мне потребовалось тоже самое но под LINUX, так как bluetoothdevices от камрада SoulTaker постоянно сыпало ошибками, а Bluetooth devices (by SergeJey) не имеет такой возможности. Даее буду цитрировать tarasfrompir и добавлять свое.
1) Для винды качаем программы и калдем в папку apps, а для Linux должны быть установленны все пакеты для работы с синим зубом
2) Добавил функцию в general.class.php - (после функции пинга )
После вот таких строчек -
/**
* Ping host
* @param mixed $host Host address
* @return bool
*/
function ping($host)
{
if (IsWindowsOS())
exec(sprintf('ping -n 1 %s', escapeshellarg($host)), $res, $rval);
elseif (substr(php_uname(), 0, 7) === "FreeBSD")
exec(sprintf('ping -c 1 -t 5 %s', escapeshellarg($host)), $res, $rval);
else
exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
return $rval === 0 && preg_match('/ttl/is', join('', $res));
}
добавил вот такие строчки для Windows
/**
* Ping bluetooth host
* @param mixed $host Host address
* @return bool
*/
function pingbt($host)
{
if (IsWindowsOS()){
$answer='';
$connect = shell_exec(SERVER_ROOT . '/apps/blutoothscan/btdiscovery -d%a%%c%');
$PCREpattern = '/\r\n|\r|\n/u';
$connected = preg_replace($PCREpattern, '', $connect);
$pos = stripos($connected, $host);
$answer = substr($connected, $pos+18,3); // возвращает "Yes or No"
if ($answer == "Yes") {
$result=1;
} else {
$result=0;
}
}
return $result;
}
А вот этот код для Linux
function pingbt($host)
{
$data = exec('l2ping '.$host.' -c1 -f | awk \'/loss/ {print $3}\'');
if(intval($data) > 0) {
$result=1;
} else {
$result=0;
}
return $result;
}
Define('DEF_TYPE_OPTIONS', '0=PING (HOST)|1=WEB PAGE (URL));
вставил -
Define('DEF_TYPE_OPTIONS', '0=PING (HOST)|1=WEB PAGE (URL)|2=BLUETOOTH (MAC)');
и еще вместо такого
if (!$host['TYPE']) {
//ping host
$online=ping(processTitle($host['HOSTNAME']));
} else {
//web host
$online=getURL(processTitle($host['HOSTNAME']), 0);
SaveFile("./cached/host_".$host['ID'].'.html', $online);
if ($host['SEARCH_WORD']!='' && !is_integer(strpos($online, $host['SEARCH_WORD']))) {
$online=0;
}
if ($online) {
$online=1;
}
вставил такое
$online=0;
// checking
if ($host['TYPE']==0) {
//ping host
$online=ping(processTitle($host['HOSTNAME']));
} elseif ($host['TYPE']==1) {
//web host
$online=getURL(processTitle($host['HOSTNAME']), 0);
SaveFile("./cached/host_".$host['ID'].'.html', $online);
if ($host['SEARCH_WORD']!='' && !is_integer(strpos($online, $host['SEARCH_WORD']))) {
$online=0;
}
if ($online) {
$online=1;
}
} elseif ($host['TYPE']==2) {
$online =0;
$online=pingbt(processTitle($host['HOSTNAME']));
}
Теперь в модуле производится проверка подключенности устройства блютуз по МАК-адресу...
Москва, Россия
На форуме: Gastello007