1

WebAPI

Тема: WebAPI

Есть ли это на русском языке: http://docs.gurtam.com/en/hosting/sdk/webapi/webapi ?
И куда посылать свои запросы в таком случае?

И второй вопрос:
http://activex.gurtam.com/?a=login&u=***&p=*** - посылая сюда запрос из php-скрипта, я получаю свои данные. Но об этом API где почитать, я так и не нашел. И все-таки больше интересует, то что по первой ссылке.

2

WebAPI

Re: WebAPI

mrspd пишет:

Есть ли это на русском языке: http://docs.gurtam.com/en/hosting/sdk/webapi/webapi ?
И куда посылать свои запросы в таком случае?

На русском языке — пока что нет.
Запросы на: http://testing.wialon.com

mrspd пишет:

http://activex.gurtam.com/?a=login&u=***&p=*** - посылая сюда запрос из php-скрипта, я получаю свои данные. Но об этом API где почитать, я так и не нашел. И все-таки больше интересует, то что по первой ссылке.

http://docs.gurtam.com/ru/hosting/activex/activex

At the dark side of telematics...
3

WebAPI

Re: WebAPI

Тогда вопрос: http://activex.gurtam.com/?a=login&u=***&p=*** , здесь со своим логином и паролем я могу получить данные.

А здесь: http://testing.wialon.com , а точней здесь: http://testing.wialon.com/wialon/ajax.h … core/login (как указано в мане http://docs.gurtam.com/en/hosting/sdk/w … /messages) - данные не могу получить. Возвращает error: 8. Думал делаю запрос неправильно, то тестовые apitest - вполне работают.

4

WebAPI

Re: WebAPI

mrspd, ветка testing, доступ к ней есть только у партнеров Gurtam. Если Вы - партнер Gurtam - запросите по почте доступ к закрытой части форума и ветке testing.

At the dark side of telematics...
5

WebAPI

(28/02/2012 22:00:26 отредактировано GoGPS-2)

Re: WebAPI

У нас здесь вроде как баг.

Делаю запрос к серверу. Мне нужно получить последнее сообщение от устройства. Тестирую запрос messages/load_last, перевожу параметр t в читабельное время, остальное меня пока что не интересует.

POST http://testing.wialon.com/wialon/ajax.html -> svc=messages/load_last&sid=957&params={"itemId":17,"lastTime":1330288352,"lastCount":3,"flags":0,"flagsMask":0,"loadCount":3}
27/02/2012 07:02:11
27/02/2012 07:03:35
27/02/2012 07:03:36

Запросом я могу получить, как в инструкции сказано, некоторое количество последних сообщений. В инструкции нет информации какой из двух параметров count отвечает за количество результатов, поэтому я попробовал оба варианта. Делаю запрос на получение одного последнего сообщения. Ожидаем получить 27/02/2012 07:03:36.

POST http://testing.wialon.com/wialon/ajax.html -> svc=messages/load_last&sid=960&params={"itemId":17,"lastTime":1330288352,"lastCount":3,"flags":0,"flagsMask":0,"loadCount":1}
27/02/2012 07:02:11

и ещё раз

POST http://testing.wialon.com/wialon/ajax.html -> svc=messages/load_last&sid=961&params={"itemId":17,"lastTime":1330288352,"lastCount":1,"flags":0,"flagsMask":0,"loadCount":3}
27/02/2012 07:02:11

и вот так

POST http://testing.wialon.com/wialon/ajax.html -> svc=messages/load_last&sid=961&params={"itemId":17,"lastTime":1330288352,"lastCount":1,"flags":0,"flagsMask":0,"loadCount":1}
27/02/2012 07:02:11

Ни один из запросов не выдал мне последнее сообщение, вероятно на сервере не включена сортировка результатов в обратном порядке (ORDER BY id DESC или ORDER BY t DESC), поэтому команда messages/load_last даёт то же самое что messages/load_interval. И вообще не очень понимаю смысл в запросе указывать lastTime как начало периода. Даже из названия lastTime видно что это должен быть конец периода, а не начало. Уверен, этой командой будут пользоваться чтобы  получить некоторое количество сообщений до такого-то времени, а не с какого-то. Не так ли?

Схематичное решение на Mysql:
SELECT * FROM messages WHERE t <= lastTime ORDER BY t DESC LIMIT lastCount
(t в базе данных должен быть проиндексирован или являться первичным ключем)
Параметр loadCount в таком случае требуется убрать, чтобы не вводить никого в заблуждение.

Pavel Skvortsov
pavel@gogps.eu
www.gogps.eu
6

WebAPI

Re: WebAPI

GoGPS-2, да, в самом деле баг. Спасибо, исправили, скоро обновим сервер.

Также небольшие пояснения:
lastCount - этот параметр говорит сколько сообщений необходимо вообще запросить у сервера;
loadCount - а этот параметр говорит, сколько сообщений необходимо первоначально вернуть при запросе.
Например: необходимо получить 100 последних сообщений, но получать и обрабатывать большой json нет смысла. Тогда в запросе указывается, что необходимо получить первых 20-50 сообщений, которые легко обработать и просто отобразить на экране компьютера для удобного восприятия. А для запроса оставшихся сообщений необходимо выполнить команду get_msgs (документация).

Если Вам необходим какой-то определённый тип сообщений (выбираются флагами), то чтобы они учитывались (флаги) нужно использовать маску флагов. Здесь можно использовать маску, как приведено в документации 0xFF00 (65280), или такую же, как и заданный флаг, чтобы только он учитывался.

Спасибо, за SQL запросы, только Wialon построен на не реляционной базе данных, в связи с чем они здесь не годятся. В любом случае при любом запросе сообщений, которых будет больше одного, они будут идти в порядке возрастания времени (т.е. самое последнее будет самым последним). Так что если необходимо получить только последнее сообщение, то запрашивайте его одного.

GoGPS-2 пишет:

Мне нужно получить последнее сообщение от устройства.

По этому вопросу могу предложить следующее:
Получить состояние объектов с помощью команды core/update_data_flags (документация). Данная команда запустит механизм отслеживания изменений по выбранным объектам на сервере, по указанным флагам в запросе. Если произошли какие-либо изменения, то сервер пометит их в сессии и при следующем запросе, вернёт только изменения без всякой лишней информации. Например для отслеживания изменения местоположения объекта можно использовать флаги 0x1 - Base item information и 0x20 - Item messages, т.е. в запросе необходимо будет поставить 0x21 флаг. А для запроса изменений делать запрос avl_evts (документация), не чаще раза в 2 секунды.