1

Выгрузка конфигурации оборудования в файл через API

Тема: Выгрузка конфигурации оборудования в файл через API

Добрый день! Пытаюсь выгрузить через API в файл конфигурацию оборудования согласно инструкции
https://sdk.wialon.com/wiki/ru/sidebar/ … _hw_params

текст запроса
https://hst-api.wialon.com/wialon/ajax.html?svc=unit/update_hw_params&params={"hwId":742164,"action":"download_file","itemId":20053050,"fileId":"conf.txt"}&sid=03d52316af02cefeeab1ca345216e2d9

в ответ получаю
{"error":6}

Подскажите пожалуйста, что не так делаю?

2

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

ynovokreschenov пишет:

Добрый день! Пытаюсь выгрузить через API в файл конфигурацию оборудования согласно инструкции
https://sdk.wialon.com/wiki/ru/sidebar/ … _hw_params

текст запроса
https://hst-api.wialon.com/wialon/ajax.html?svc=unit/update_hw_params&params={"hwId":742164,"action":"download_file","itemId":20053050,"fileId":"conf.txt"}&sid=03d52316af02cefeeab1ca345216e2d9

в ответ получаю
{"error":6}

Подскажите пожалуйста, что не так делаю?

Добрый день!

Данный запрос с параметром "action" = "download_file" позволяет скачать именно файл конфигурации, который загружен в свойствах объекта, если тип параметра "file", но не скачать саму конфигурацию устройства в файл

Для того, чтобы экспортировать конфигурацию оборудования в файл WLP, вам необходимо воспользоваться запросом exchange/export_json и собрать JSON с конфигруацией оборудования, который должен быть примерно следующего вида:

{
   "type":"avl_unit",
   "version":"b4",
   "mu":0,
   "hwConfig":{
      "hw":"HW name",
      "fullData":1,
      "params":{

      }
   }
}

В этом JSON в параметре "params" поля "hwConfig" будет ответ на запрос конфигурации unit/update_hw_params . А в поле "hw" - тип оборудования.

Пример получения конфигурации:
https://hst-api.wialon.com/wialon/ajax.html?svc=unit/update_hw_params&params={"itemId": id_объекта,"hwId": id_оборудования,"fullData":1,"action":"get"}&sid=SID

Но сперва нужно получить тип оборудования у объекта с помощью запроса поиска элементов core/search_items по объектам с флагом 0x00000100. В ответе в поле "hw" будет тип оборудования, далее выполняется запрос core/get_hw_types для получения ID типа оборудования.

Так же не публикуйте в примерах ваших запросов настойщие sid или токен, т.к. ими можно воспользоваться для получения доступа к вашей учетной записи Wialon

3

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

Добрый день! Благодарю за ответ, хотел бы еще вопрос

получаю конфигурацию оборудования запросом
https://hst-api.wialon.com/wialon/ajax.html?svc=unit/update_hw_params&params={"itemId":20053050,"hwId":742164,"fullData":1,"action":"get"}&sid=
в ответ приходит

[
    {
        "default": "0",
        "description": "ASC-6 registration card reader",
        "label": "ASC-6 registration card reader",
        "maxval": 0,
        "minval": 0,
        "name": "reg_card_reader",
        "readonly": 0,
        "type": "bool",
        "value": "0"
    },
    {
        "default": "",
        "description": "Attention!!! Parameters cause loss of messages",
        "label": "Parameters to filter messages",
        "maxval": 0,
        "minval": 0,
        "name": "time_filter",
        "readonly": 0,
        "type": "text",
        "value": ""
    }
]

причем этот результат не зависит от того передаю в параметрах itemId или нет.

далее собираю JSON

{
   "type":"avl_unit",
   "version":"b4",
   "mu":0,
   "hwConfig":{
      "hw":"HW name",
      "fullData":1,
      "params":{
        [
            {
                "default": "0",
                "description": "ASC-6 registration card reader",
                "label": "ASC-6 registration card reader",
                "maxval": 0,
                "minval": 0,
                "name": "reg_card_reader",
                "readonly": 0,
                "type": "bool",
                "value": "0"
            },
            {
                "default": "",
                "description": "Attention!!! Parameters cause loss of messages",
                "label": "Parameters to filter messages",
                "maxval": 0,
                "minval": 0,
                "name": "time_filter",
                "readonly": 0,
                "type": "text",
                "value": ""
            }
        ]
      }
   }
}

https://hst-api.wialon.com/wialon/ajax.html?svc=exchange/export_json&params={"type":"avl_unit","version":"b4","mu":0,"hwConfig":{"hw":742164,"fullData":1,"params":{[{"default": "0","description": "ASC-6 registration card reader","label": "ASC-6 registration card reader","maxval": 0,"minval": 0,"name": "reg_card_reader","readonly": 0,"type": "bool","value": "0"},{"default": "","description": "Attention!!! Parameters cause loss of messages","label": "Parameters to filter messages","maxval": 0,"minval": 0,"name": "time_filter","readonly": 0,"type": "text","value": ""}]}}}&sid=

уже выводит ошибку

{
    "error": 4,
    "reason": "WRONG_PARAMS"
}
4

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

увидел, что при запросе exchange/export_json не указал {"fileName":<text>,"json":{}}, так же валидатор ругался на {} в параметре json, в итоге получился работающий запрос:

https://hst-api.wialon.com/wialon/ajax.html?svc=exchange/export_json&params={"fileName":"exp.wlp","json":{"type":"avl_unit","version":"b4","mu":0,"hwConfig":{"hw":742164,"fullData":1,"params":[{"default":"0","description":"ASC-6 registration card reader","label":"ASC-6 registration card reader","maxval":0,"minval":0,"name":"reg_card_reader","readonly":0,"type":"bool","value":"0"},{"default":"","description":"Attention!!! Parameters cause loss of messages","label":"Parameters to filter messages","maxval":0,"minval":0,"name":"time_filter","readonly":0,"type":"text","value":""}]}}}&sid=

но он возвращает почти то же самое

{
    "hwConfig": {
        "fullData": 1,
        "hw": 742164,
        "params": [
            {
                "default": "0",
                "description": "ASC-6 registration card reader",
                "label": "ASC-6 registration card reader",
                "maxval": 0,
                "minval": 0,
                "name": "reg_card_reader",
                "readonly": 0,
                "type": "bool",
                "value": "0"
            },
            {
                "default": "",
                "description": "Attention!!! Parameters cause loss of messages",
                "label": "Parameters to filter messages",
                "maxval": 0,
                "minval": 0,
                "name": "time_filter",
                "readonly": 0,
                "type": "text",
                "value": ""
            }
        ]
    },
    "mu": 0,
    "type": "avl_unit",
    "version": "b4"
}

вероятно некорректные параметры, получаемые в запросе unit/update_hw_params. Что с ним не так?

5

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

Выполнил данный GET запрос, вставив в адресную строку браузера, в ответ выдает WLP файл. Вам необходимо выполнять сохранение полученного ответа в файл, если вы делаете этот запрос в своем приложении.

6

Выгрузка конфигурации оборудования в файл через API

(02/06/2020 12:31:24 отредактировано ynovokreschenov)

Re: Выгрузка конфигурации оборудования в файл через API

Сохраняет в файл, все верно. А разве это и есть конфигурация оборудования?

{
    "hwConfig": {
        "fullData": 1,
        "hw": 742164,
        "params": [
            {
                "default": "0",
                "description": "ASC-6 registration card reader",
                "label": "ASC-6 registration card reader",
                "maxval": 0,
                "minval": 0,
                "name": "reg_card_reader",
                "readonly": 0,
                "type": "bool",
                "value": "0"
            },
            {
                "default": "",
                "description": "Attention!!! Parameters cause loss of messages",
                "label": "Parameters to filter messages",
                "maxval": 0,
                "minval": 0,
                "name": "time_filter",
                "readonly": 0,
                "type": "text",
                "value": ""
            }
        ]
    },
    "mu": 0,
    "type": "avl_unit",
    "version": "b4"
}

если выгружать для этого объекта конфигурацию в интерфейсе wialon, то там другой файл с гораздо большим количеством данных

7

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

Уточните, пожалуйста, какие чекбоксы вы устанавливаете в интерфейсе Wialon при экспорте в WLP файл. При установке только чекбокса "Конфигурация устройства" в файл сохраняются именно такие данные.

Также у вас в сохраняемом JSON в поле "hw" должно быть строка с именем типа оборудования вместо его ID.

8

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

при выгрузке через интерфейс проставляются все чекбоксы
как этим управлять через апи?

9

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

ynovokreschenov пишет:

при выгрузке через интерфейс проставляются все чекбоксы
как этим управлять через апи?

Данными чекбоксами невозможно управлять через API, они лишь указывают, какая информация будет экспортирована в  WLP файл.

Информацию по объектам можно получить с помощью запроса поиска core/search_items c нужными выставленными флагами.

10

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

Тоже интересует данная тема. Cтоит задача полного экспорта объектов, и их последующего восстановления. Насколько я понимаю одного core/search_items не достаточно, чтобы сформировать результирующий json для выгрузки в wlp.  Смотрю запросы через cms, там есть еще пакетный вызов с несколькими unit/... внутри. Можно где-то получить описание/алгоритм полной выгрузки объекта в wlp файл?

11

Выгрузка конфигурации оборудования в файл через API

(20/08/2020 16:06:23 отредактировано ynovokreschenov)

Re: Выгрузка конфигурации оборудования в файл через API

Если я правильно понял ответ muev, то как такового метода в апи "экспортировать все настройки объекта в файл" как в интерфейсе нет. Нужно сначала собрать все параметры через core/search_items и сформировать самому этот json. Собственно тогда пропадает и смысл в этом экспорте в файл. Потому что нельзя одним запросом к апи сформровать файл с полной конфигурацией оборудования и потом одним запросом его восстановить.
Нужно пилить несколько запросов, которые соберут все настройки, и потом еще столько же, которые потом эти настройки восстановят.

Понял, что в моем случае тогда нужно просто повторить в каком-то виде структуру в своей системе, создав модель данных и сохранив данные в атрибуты. И запилить скрипты сохранения и экспорта конфигурации. И физически это будет несколько запросов для сохранения данных и несколько для восстановления объекта.

Выглядит громоздко и сложно

12

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

То что нет одного запроса для экспорта - это уже понятно. Для импорта вроде есть - exchange/import_json.  Но насколько я понимаю раз в cms есть возможность, то подозреваю, что из через api можно сделать. Просто нигде последовательность формирования json не описана. Надеюсь, что представители gurtam, прокомментируют...

13

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

Добрый день

В Wialon есть механизм ежедневного бэкапа свойств объектов. Похоже он подойдёт и для ваших нужд.

1) Для объекта можно получить список файлов бэкапа https://sdk.wialon.com/wiki/ru/sidebar/ … st_backups
2) Выбрав нужный fileId из предыдущего запроса можно получить файл бэкапа https://sdk.wialon.com/wiki/ru/sidebar/ … get_backup

14

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

Похоже на то, что нужно! Подскажите, как можно восстановить удаленный объект из такого бекапа через api?

15

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

Там в ответе на запрос бэкапа - содержимое wlp файла.

Чтобы создать объект из wlp можно
- либо воспользоваться диалогом в интерфейсе wialon
- либо самостоятельно повторить последовательный вызов N запросов (создать объект, обновить настройки оборудования, обновить иконку, создать датчики и т.д)

Имея wlp, создать объект со всеми заполненными свойствами одним запросом не получится.

16

Выгрузка конфигурации оборудования в файл через API

Re: Выгрузка конфигурации оборудования в файл через API

pavel-galant пишет:

Но насколько я понимаю раз в cms есть возможность, то подозреваю, что из через api можно сделать. Просто нигде последовательность формирования json не описана. Надеюсь, что представители gurtam, прокомментируют...

Наличие свойств в json зависит от их заполенности у объекта. Поэтому описать железнобетонную логику сложновато. Вот есть старенькое сообщение (на англ) с перечислением всех методов, которые могут потребоваться, если захотите провернуть импорт через API https://forum.gurtam.com/viewtopic.php? … 41#p113041