gps и доступ извне

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Модуль GPS-трекер

Сообщение LutsenkoDenis » Пт авг 07, 2015 4:32 pm

Ну, значит я переделаю под себя. так как считаю более правильным отслеживать устройства, а не каких то непонятных виртуальных пользователей.

Такой вопрос ещё:
Файл: /modules/app_gpstrack/gpslog_search.inc.php (вкладка Лог Событий)
Вот этот кусок кода используется где-то? Т.к. в пользовательском интерфейсе я не нашел где можно сортировать таблицу.
СпойлерПоказать

Код: Выделить всё

// search filters
if (isset($this->device_id))
{
   $device_id = $this->device_id;
   $qry .= " AND DEVICE_ID = '" . $this->device_id . "'";
}
else
{
   global $device_id;
}

if (isset($this->location_id))
{
   $location_id = $this->location_id;
   $qry .= " AND LOCATION_ID = '" . $this->location_id . "'";
}
else
{
   global $location_id;
}

// QUERY READY
global $save_qry;

if ($save_qry)
{
   $qry=$session->data['gpslog_qry'];
}
else
{
   $session->data['gpslog_qry'] = $qry;
}

if (!$qry)
   $qry="1";

// FIELDS ORDER
global $sortby_gpslog;

if (!$sortby_gpslog)
{
   $sortby_gpslog = $session->data['gpslog_sort'];
}
else
{
   if ($session->data['gpslog_sort'] == $sortby_gpslog)
   {
      if (is_integer(strpos($sortby_gpslog, ' DESC')))
      {
         $sortby_gpslog = str_replace(' DESC', '', $sortby_gpslog);
      }
      else
      {
         $sortby_gpslog = $sortby_gpslog . " DESC";
      }
   }
   
   $session->data['gpslog_sort'] = $sortby_gpslog;
}

if (!$sortby_gpslog)
   $sortby_gpslog="gpslog.ID DESC";

$out['SORTBY'] = $sortby_gpslog;

// SEARCH RESULTS
$res = SQLSelect("SELECT gpslog.*, gpsdevices.TITLE as DEVICE_TITLE, gpslocations.TITLE as LOCATION_TITLE
                    FROM gpslog
                    LEFT JOIN gpsdevices ON gpsdevices.ID = gpslog.DEVICE_ID
                    LEFT JOIN gpslocations ON gpslocations.ID = gpslog.LOCATION_ID
                   WHERE $qry
                   ORDER BY " . $sortby_gpslog);
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Модуль GPS-трекер

Сообщение LutsenkoDenis » Ср авг 19, 2015 6:06 pm

файл: /gps.php
Код:

Код: Выделить всё

// checking locations
   $locations = SQLSelect("SELECT * FROM gpslocations");
   $total     = count($locations);

   $location_found = 0;
   
   for ($i = 0; $i < $total; $i++)
   {
      if (!$locations[$i]['RANGE'])
         $locations[$i]['RANGE'] = GPS_LOCATION_RANGE_DEFAULT;
       
Вопрос:
1. Почему данный код за меня выставляет RANGE. Может я специально не указывал радиус?
2. Почему это не сделано как значение по умолчанию при создании локации?
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Модуль GPS-трекер

Сообщение LutsenkoDenis » Чт авг 20, 2015 4:26 pm

Может кто рассказать как работает скрипт gps.php?

Пытаюсь разобраться в нём и чувствую что сейчас меня крушу сорвёт?
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Модуль GPS-трекер

Сообщение LutsenkoDenis » Пт авг 21, 2015 3:04 pm

файл gps.php

В начале файла есть вот такой кусок кода:
СпойлерПоказать

Код: Выделить всё

if ($_REQUEST['op'] != '')
{
   $op = $_REQUEST['op'];
   $ok = 0;
   
   if ($op == 'zones')
   {
      $zones = SQLSelect("SELECT * FROM gpslocations");
      echo json_encode(array('RESULT' => array('ZONES' => $zones, 'STATUS' => 'OK')));
      $ok = 1;
   }
   if ($op == 'add_zone' && $_REQUEST['latitude'] && $_REQUEST['longitude'] && $_REQUEST['title'])
   {
      global $title;
      global $range;
      $sqlQuery = "SELECT *
                     FROM gpslocations
                    WHERE TITLE LIKE '" . DBSafe($title) . "'";
      
      $old_location = SQLSelect($sqlQuery);
      
      if ($old_location['ID'])
         $title .= ' (1)';
      
      if (!$range)
         $range = 200;
      
      $rec = array();
      
      $rec['TITLE'] = $title;
      $rec['LAT']   = $_REQUEST['latitude'];
      $rec['LON']   = $_REQUEST['longitude'];
      $rec['RANGE'] = (int)$range;
      $rec['ID']    = SQLInsert('gpslocations', $rec);
      
      echo json_encode(array('RESULT' => array('STATUS' => 'OK')));
      
      $ok = 1;
   }
   if ($op == 'set_token' && $_REQUEST['token'] && $_REQUEST['deviceid'])
   {
      $sqlQuery = "SELECT *
                     FROM gpsdevices
                    WHERE DEVICEID = '" . DBSafe($_REQUEST['deviceid']) . "'";
      
      $device = SQLSelectOne($sqlQuery);
      
      if (!$device['ID'])
      {
         $device = array();
         $device['DEVICEID'] = $_REQUEST['deviceid'];
         $device['TITLE']    = 'New GPS Device';
         $device['ID']       = SQLInsert('gpsdevices', $device);
      }
      $device['TOKEN'] = $_REQUEST['token'];
      SQLUpdate('gpsdevices', $device);
      $ok = 1;
   }
   if (!$ok)
      echo json_encode(array('RESULT' => array('STATUS' => 'FAIL')));
   $db->Disconnect();
   exit;
}
 
По нему есть несколько вопросов...
  1. Кто вызывает файл gps.php? Из того что нашел: BigBrotherGPS, Tasker, TrackMe, GpsLocator
  2. Какие параметры в запросе принимаются? есть где максимально полное описание что должно приходить в $_REQUEST?
  3. Что за параметр 'op'?
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль GPS-трекер

Сообщение sergejey » Вс авг 30, 2015 7:34 pm

LutsenkoDenis писал(а):По нему есть несколько вопросов...
  1. Кто вызывает файл gps.php? Из того что нашел: BigBrotherGPS, Tasker, TrackMe, GpsLocator
  2. Какие параметры в запросе принимаются? есть где максимально полное описание что должно приходить в $_REQUEST?
  3. Что за параметр 'op'?
1. Да, так и есть. Ещё этот файл использует btraced (ios).
2. op это параметр дополнительной операции -- используется в ios-приложении (которое пока нигде не опубликовано). в частности по иходнику есть две операции -- одна добавление локации (зоны), а второая для обмена token-ами. В приложениях из пункта 1 этот функционал не используется и считается что всегда проиходит операция приёма координат.

По параметрам:

$_REQUEST['op'] -- операция (см. выше) (не обязательно)
$_REQUEST['deviceid'] -- уникальный идентификатор устройства (в любом формате)
$_REQUEST['token'] -- token устройства (используется только для ios-приложения) (не обязательно)

$_REQUEST['latitude'] -- широта
$_REQUEST['longitude'] -- долгота
(либо $_REQUEST['location'] вида "широта,долгота")

$_REQUEST['altitude'] -- высота (не обязательно)
$_REQUEST['provider'] -- провайдер (не обязательно)
$_REQUEST['speed'] -- скорость (не обязательно)
$_REQUEST['battlevel'] -- уровень заряда батареи (не обязательно)
$_REQUEST['charging'] -- статус (на зарядке/не на зарядке) (не обязательно)
$_REQUEST['accuracy'] -- точность (не обязательно)

когда приходит запрос, то данные пишутся сразу в gpslog.

если за устройством закреплён пользователь, а за пользователем закреплён объект, то дополнительно устанавливаются для объекта следующие данные:

Код: Выделить всё

         setGlobal($user['LINKED_OBJECT'] . '.Coordinates', $rec['LAT'] . ',' . $rec['LON']); //координаты
         setGlobal($user['LINKED_OBJECT'] . '.CoordinatesUpdated', date('H:i')); //время обновления
         setGlobal($user['LINKED_OBJECT'] . '.CoordinatesUpdatedTimestamp', time()); //время обновления (unix timestamp)
         setGlobal($user['LINKED_OBJECT'] . '.BattLevel', $rec['BATTLEVEL']); // уровень заряда
         setGlobal($user['LINKED_OBJECT'] . '.Charging', $rec['CHARGING']); // статус "на зарядке" 
так же объекту обновляется свойство isMoving в зависимости от того движется ли пользователь или нет
и, если объект находится в определённой локации (из добавленных) ему обновляется свойство seenAt с названием локации

это что касается данных. после того, как система "растусует" данные идёт проверка сработки события входа/выхода в локации и выполняются соответствующие действия.

как-то так...

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
eygen
Сообщения: 392
Зарегистрирован: Чт сен 25, 2014 5:37 pm
Откуда: Екатеринбург
Благодарил (а): 25 раз
Поблагодарили: 52 раза

Время GPS трекер

Сообщение eygen » Пт сен 04, 2015 12:27 pm

Добрый день, настроил GPS-терекер. По началу настраивал через MajorDroid потом Tasker и решил я поюзать big brother GPS через connect(оговорюсь сразу предыдущие два варианта пускал через vpn на прямую в сервер). И стало время у меня теперь по гринвичу фиксировать координаты...
Причем big brother GPS время показывает верное, почему и думается что проблема где то в связке с connect.
У меня одного так и надо где то что то докрутить?
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Время GPS трекер

Сообщение xor » Пт сен 04, 2015 3:52 pm

У меня то же самое, время в ГПС-трекере по Гринвичу. Очень неудобно.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Время GPS трекер

Сообщение sergejey » Пт сен 04, 2015 3:55 pm

xor писал(а):У меня то же самое, время в ГПС-трекере по Гринвичу. Очень неудобно.
Есть подозрение, что трэкер присылает время по гринвичу и система его так же и сохраняет.

Попробуйте в файле /gps.php найти строчку

Код: Выделить всё

$rec['ADDED']     = ($time) ? $time : date('Y-m-d H:i:s'); 
и поменять на

Код: Выделить всё

$rec['ADDED']     = date('Y-m-d H:i:s'); 
За это сообщение автора sergejey поблагодарил:
xor (Пт сен 04, 2015 5:03 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Время GPS трекер

Сообщение xor » Пт сен 04, 2015 5:04 pm

Да, мне помогло.
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Время GPS трекер

Сообщение Amarok » Сб сен 05, 2015 10:18 am

А зачем big brother если есть таскер?
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
Ответить