1

Wialon hosting API Сценарии работы с датчиками + предложение по SDK

Тема: Wialon hosting API Сценарии работы с датчиками + предложение по SDK

Добрый день!

Я реализовываю бекенд для наших нужд с использованием Wialon Hosting API. Мне нужно понять, как запрашивать датчики наиболее правильным образом. По каким-то причинам при использовании unit/calc_last_message я иногда получаю значения датчиков, равные -348201.3876. Я так понимаю, что значения еще не успевают обработаться. Как это решать? Также при использовании unit/calc_last_message нельзя получить временную метку, когда были получены значения датчиков или сообщения.

Задача сейчас стоит следующим образом:
Нужно получать значение датчиков в последний момент времени с получением временной метки, когда было получено значение датчика от объекта. Какие подходы и запросы лучше для этого использовать? Нет возможности получать значения датчиков через avl_events?

---
p.s.
В рамках нашего проекта, я частично реализовал фактически SDK с использованием pydantic. Я возможно хотел бы после завершения активной фазы проекта под MIT лицензией реализовать SDK для Python с использованием pydantic с наработками, которые были уже сделаны. Возможно ли будет получать некоторую поддержку по возникающим вопросам? Я видел два SDK на Python, но они не особо упрощают работу с API.

2

Wialon hosting API Сценарии работы с датчиками + предложение по SDK

Re: Wialon hosting API Сценарии работы с датчиками + предложение по SDK

Добрый день, pugavkomm,

Значение -348201.3876 указывает на то, что значение датчика невалидно. Причины могут быть разные, например параметр отсутствовал в сообщении от прибора, таблица расчета "отсекла" значение параметра, и т.д.
В данном случае это вопрос не скорости расчета, а связано именно со значением параметра или настройками датчика.

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

Принцип работы следующий:
Необходимо выполнить логин, затем в рамках сессии добавить нужные объекты и события в сессию запросом events/update_units.
Для контроля значений датчиков используется событие sensors. Если значение 0, то контролируются все датчики добавленных объектов.
После этого вы можете проверять получение новых данных запросом events/check_updates
Значение параметра detalization регулирует содержимое ответа.
Вы также можете найти подробное описание работы с событиями в следующем видеоматериале -- https://youtu.be/1RYY1DiR7A4?list=PLyks … yjuW4XCUoF

Касательно вашей библиотеки Python. По любым возникающим вопросам по API вы можете писать в соответсвующую ветку этого форума.
Если же вам требуется иной вид поддержки, пожалуйста, предоставьте более подробную информацию на почту support@wialon.com

Anton Zinovyev
Technical Care Engineer (L2)
Wialon
3

Wialon hosting API Сценарии работы с датчиками + предложение по SDK

(20/08/2024 00:21:24 отредактировано pugavkomm)

Re: Wialon hosting API Сценарии работы с датчиками + предложение по SDK

Спасибо за ответ!
Я смотрел некоторые видео wialon. Данное тоже смотрел, еще раз изучу его.

Есть еще такой вопрос у меня. Задача сейчас стоит такая, чтобы получать наиболее актуальные данные сенсоров. Я понял, что есть два варианта их получения. Хотел бы уточнить пару моментов.
Какой из двух способов получения является более актуальным по времени загрузки информации с оборудования?

- Использование events/check_updates, где есть данные с датчиков 
- Использование avl_evts с предварительно загруженными объектами с флагом 0x00000020 через  update_data_flags. Мне нужны в первую очередь неформатированные данные.

Также есть еще доп вопрос. В случае использования avl_evts фактически получаю значения параметров, передаваемые оборудованием, но есть одна проблема, которая заключается в том, что параметры передаются два раза, но с немного различающимися названиями. Ниже прикрепил ответ при использовании avl_evets. Данные содержатся в одном ответе для одного и того же объекта с одним id. В списке можно увидеть, что параметры называются немного по-разному, но содержат одинаковые значения.

Прикрепил вкладку с датчиками в системе wialon Wialon hosting API Сценарии работы с датчиками + предложение по SDK.
При использовании запроса core/search_items с флагом 0x00001000 получается значения параметров, которые указаны на скриншоте (скриншот из нашей системы, других значений параметров нет): Wialon hosting API Сценарии работы с датчиками + предложение по SDK.

 'i': ...,
             't': 'u'},
            {'d': {'f': 1,
                   'p': {'hdop': 0.61,
                         'param1041': 0.0,
                         'param1061': 0.0,
                         'param1062': 0.0,
                         'param1063': 0.0,
                         'param1341': 0.0,
                         'param1342': 0.0,
                         'param1343': 0.0,
                         'param1344': 0.0,
                         'param25': 1.0,
                         'param2800': 509.0,
                         'param2801': 0.0,
                         'param2802': 0.0,
                         'param2803': 8.0,
                         'param2804': 74.0,
                         'param2806': 0.0,
                         'param2807': 0.0,
                         'param2830': 1.0,
                         'param2831': 0.0,
                         'param2832': 0.0,
                         'param2833': 0.0,
                         'param2834': 0.0,
                         'param2836': 0.0},
                   'rt': datetime.datetime(2024, 8, 19, 1, 52, 9, tzinfo=TzInfo(UTC)),
                   't': datetime.datetime(2024, 8, 19, 1, 52, 6, tzinfo=TzInfo(UTC)),
                   'tp': 'ud'},
             'i': ...,
             't': 'm'},
            {'d': {'f': 1,
                   'p': {'digital_in_1': 0.0,
                         'digital_out_1': 0.0,
                         'digital_out_2': 0.0,
                         'digital_out_3': 0.0,
                         'ex_dig_out_1': 0.0,
                         'ex_dig_out_2': 0.0,
                         'ex_dig_out_3': 0.0,
                         'ex_dig_out_4': 0.0,
                         'hdop': 0.61,
                         'p25': 1.0,
                         'p2800': 509.0,
                         'p2801': 0.0,
                         'p2802': 0.0,
                         'p2803': 8.0,
                         'p2804': 74.0,
                         'p2806': 0.0,
                         'p2807': 0.0,
                         'p2830': 1.0,
                         'p2831': 0.0,
                         'p2832': 0.0,
                         'p2833': 0.0,
                         'p2834': 0.0,
                         'p2836': 0.0},
                   'rt': datetime.datetime(2024, 8, 19, 1, 52, 10, tzinfo=TzInfo(UTC)),
                   't': datetime.datetime(2024, 8, 19, 1, 52, 6, tzinfo=TzInfo(UTC)),
                   'tp': 'ud'},
  • Wialon hosting API Сценарии работы с датчиками + предложение по SDK
  • Wialon hosting API Сценарии работы с датчиками + предложение по SDK
4

Wialon hosting API Сценарии работы с датчиками + предложение по SDK

Re: Wialon hosting API Сценарии работы с датчиками + предложение по SDK

pugavkomm для более детальной проверки и предоставления рекомендации, пожалуйста, направьте запрос на support@wialon.com  в этом случае у нас будет возможно проверить конкретную ситуацию.

Anton Zinovyev
Technical Care Engineer (L2)
Wialon