1

Получение данных по пробегу автомобиля за период

Topic: Получение данных по пробегу автомобиля за период

Здравствуйте,

Подскажите пожалуйста в чем может быть ошибка.

Выполняю запрос:
HTTPСоединение.Получить("wialon/ajax.html?svc=messages/load_interval&params={""itemId"":" + reportObjectId + ",
                  | ""timeFrom"":" + пДТ1 + ",
                  | ""timeTo"":" + пДТ2 + ",
                  | ""flags"":1,
                  | ""flagsMask"":0,
                  | ""loadCount"":5}&sid=" + sid, имяВыходногоФайла2);

Где reportObjectId это ID Техники
пДТ1 это начало периода
пДТ2 это окончание периода периода

Получаю 5 из 64 сообщений.

Далее если делаю запрос
HTTPСоединение.Получить("/wialon/ajax.html?svc=messages/get_messages&params={""indexFrom"":1,""indexTo"":3}&sid=" + sid, имяВыходногоФайла4);
Получаю 2 сообщения из предыдущей выборки.

Но если я делаю запрос (Получить поездки)
    HTTPСоединение.Получить("wialon/ajax.html?svc=unit/get_trips&params{""itemId"":" + reportObjectId + ",
                  | ""timeFrom"":" + пДТ1 + ",
                  | ""timeTo"":" + пДТ2  + ",
                  | ""msgsSource"":messages}&sid=" + sid, имяВыходногоФайла4)
Всегда получаю error 4, reason    "WRONG_PARAMS".

Айди техники один и тот же. Временной интервал тот же. Как же вытащить отдельно поездки по автомобилю ?

2

Получение данных по пробегу автомобиля за период

Re: Получение данных по пробегу автомобиля за период

Вообще хочу сделать онлайн отображение данных по поездкам, и вроде как можно это сделать используя
"wialon/ajax.html?svc=report/exec_report&params={""reportResourceId"":" + reportResourceId +",""reportTemplateId"":" + reportTemplateId + ",""reportObjectId"":" +reportObjectId + ",""reportObjectSecId"":0,""interval"":{""from"":"+пДТ1+",""to"":"+пДТ2+",""flags"":0} }&sid="

Но этот отчет тяжелый и подходит только для отображения данных за период.

3

Получение данных по пробегу автомобиля за период

Re: Получение данных по пробегу автомобиля за период

Параметр messages ставил в значение 1

4

Получение данных по пробегу автомобиля за период

Re: Получение данных по пробегу автомобиля за период

Такая ошибка может быть, если в load_interval и get_trips указаны разные id объекта. В целом, всё должно работать. Проверил на тестовых данных. Ниже код на python, тестировал в online компиляторе https://www.programiz.com/python-progra … -compiler/

import json
import requests

HOST = 'http://hst-api.wialon.com'
TOKEN = 'eaf3868da68dc2fd32f37d26774c318089267940FB51FD20AB493EB1D5B8254EB826A978'

# login
response = requests.post(f'{HOST}/wialon/ajax.html', params={
    'svc': 'token/login',
    'params': json.dumps({
        'token': TOKEN
    })
})
jsonData = response.json()
SID = jsonData['eid']
print('Login\n', SID, '\n')

# load_interval
response = requests.post(f'{HOST}/wialon/ajax.html', params={
    'svc': 'messages/load_interval',
    'sid': SID,
    'params': json.dumps({
        "itemId":974869,
        "timeFrom":1652216399,
        "timeTo":1652226399,
        "flags":1,
        "flagsMask":0,
        "loadCount":1
    })
})
jsonData = response.json()
print('Load interval\n', jsonData, '\n')

# get_trips
response = requests.post(f'{HOST}/wialon/ajax.html', params={
    'svc': 'unit/get_trips',
    'sid': SID,
    'params': json.dumps({
        "itemId":974869,
        "timeFrom":1652216399,
        "timeTo":1652226399,
        "msgsSource":1
    })
})
jsonData = response.json()
print('Get trips', jsonData, '\n')

# logout
response = requests.post(f'{HOST}/wialon/ajax.html', params={
    'svc': 'core/logout',
    'sid': SID,
    'params': json.dumps({})
})
print('logout\n', response.text)
5

Получение данных по пробегу автомобиля за период

Re: Получение данных по пробегу автомобиля за период

lhx18 wrote:

Вообще хочу сделать онлайн отображение данных по поездкам, и вроде как можно это сделать используя
"wialon/ajax.html?svc=report/exec_report&params={""reportResourceId"":" + reportResourceId +",""reportTemplateId"":" + reportTemplateId + ",""reportObjectId"":" +reportObjectId + ",""reportObjectSecId"":0,""interval"":{""from"":"+пДТ1+",""to"":"+пДТ2+",""flags"":0} }&sid="

Но этот отчет тяжелый и подходит только для отображения данных за период.

Отчёт для online тяжеловат, но всё зависит от задачи. Если данные достаточно обновлять ~каждые 5 минут, то отчёт справится. Плюс этого подхода в простоте. Для оптимизации количества отправляемых запросов, их можно склеить в 1 batch https://sdk.wialon.com/wiki/en/sidebar/ … core/batch (т.е вместо последовательных запросов load_interval, get_messages и get_trips отправлять 1 batch c массивом запросов  load_interval, get_messages и get_trips, и получать 1 ответ с массивом внутри)

Как более сложную альтенативу, могу предложить модуль событий. https://sdk.wialon.com/wiki/en/sidebar/ … nts/events
Каждая поездка в Wialon - это событие (event). Можно загрузить события в сессию https://sdk.wialon.com/wiki/en/sidebar/ … vents/load и потом периодически опрашивать изменения событий с помощью https://sdk.wialon.com/wiki/en/sidebar/ … ck_updates

6

Получение данных по пробегу автомобиля за период

(edited by lhx18 09/06/2022 11:07:37)

Re: Получение данных по пробегу автомобиля за период

Такая ошибка может быть, если в load_interval и get_trips указаны разные id объекта. В целом, всё должно работать. Проверил на тестовых данных.

Да нет, ID объекта одинаковый, такое ощущение что я не попадаю в выборку сообщений.

Могу ли я напрямую сообщения парсить и вытаскивать оттуда информацию по поездкам?

7

Получение данных по пробегу автомобиля за период

Re: Получение данных по пробегу автомобиля за период

Отчёт для online тяжеловат, но всё зависит от задачи. Если данные достаточно обновлять ~каждые 5 минут, то отчёт справится

В моем случае он не подходит так как за один период возможно получить 2 поездки, либо упустить границу начала и поездка которая длилась к примеру час в отчет не попадет.

Попробую другие варианты.

8

Получение данных по пробегу автомобиля за период

Re: Получение данных по пробегу автомобиля за период

Странно, если выполнить:
Запрос: hst-api.wialon.com/wialon/ajax.html?svc=unit/get_trips&params={"itemId":2501434,"timeFrom":1653198000,"timeTo":1653200400}&sid=****

Получу ошибку error 7
То есть доступ запрещен.

9

Получение данных по пробегу автомобиля за период

Re: Получение данных по пробегу автомобиля за период

Запрос: hst-api.wialon.com/wialon/ajax.html?svc=unit/get_trips&params={"itemId":2501434,"timeFrom":1653198000,"timeTo":1653200400,"msgsSource":1}&sid=****

И так доступ запрещен (error 7)

10

Получение данных по пробегу автомобиля за период

Re: Получение данных по пробегу автомобиля за период

Могу ли я напрямую сообщения парсить и вытаскивать оттуда информацию по поездкам?

Поездки не хранятся в сообщениях. Поездки строятся на основании сообщений (грубо говоря, есть 100 сообщений, поездка - это интервал с 5-го по 60-ое сообщения).
Альтернативный вариант - это система событий, о которой я писал. Там поездки хранятся отдельно от сообщений и можно их отдельно запросить.

Получу ошибку error 7

В моём тестовом примере иcпользовалась Демо-учётка, все id привязаны к ней. Чтобы заработал пример - нужно использовать креды демоучётки.. Если выполнять запросы из-под другой учётки/сессии - доступа не будет. Об этом и говорит {error:7}