#httprequest #thingsboard
Вопрос:
Я хочу повторно использовать несколько атрибутов устройства из одного вызова HTTP API. TB позволяет мне выполнить запрос get для повторного получения данных устройства с соответствующим маркером доступа, указанным в запросе. Есть ли какие-либо варианты получения всех данных устройств из группы устройств?
Ответ №1:
Когда вы говорите о нескольких атрибутах устройства, вы просите:
- Получить ВСЕ атрибуты с ОДНОГО устройства? Если это так, вы можете использовать:
curl -v -X GET "https://thingsboard.cloud/api/v1/$ACCESS_TOKEN/attributes
- Получите ВСЕ атрибуты для ВСЕХ устройств в определенной группе устройств. Это сложнее, вам нужно будет использовать полный rest api, найденный по адресу https://cloud.thingsboard.io/swagger-ui.html
Если вам нужен вариант 2, вам понадобится пользовательский сценарий, чтобы получить токен JWT для ваших учетных данных пользователя (или учетной записи пользователя api с низким уровнем доступа) и использовать его для аутентификации вызовов REST по указанной выше ссылке.
Псевдопроцесс:
- Создайте токен JWT, используя учетные данные пользователя.
- Используйте вызовы REST для
entity-group-controller > getEntityGroupsByType
сgroupType = 'DEVICE'
- Просмотрите это для группы, которую вы хотите
- Используйте соответствующий
entity-group-controller > getEntities
идентификатор группы в вызове - Выполните цикл по возвращенным сущностям и либо выполните метод 1 (выше) для них, либо выполните
telemetry-controller > getAttributes
вызов.
Однако это гораздо больше, чем 1 HTTP-вызов…
Вы могли бы обернуть его в функцию, чтобы упростить его использование, но я не думаю, что вы сможете еще больше сократить количество вызовов.
Комментарии:
1. Большое спасибо за ответ. На самом деле мне нужно получить атрибуты устройств для более чем 1000 устройств. Я думал о том, чтобы получить все атрибуты, вызвав API одной группы устройств. Но я думаю, что я должен следовать вашему пути и должен вызывать несколько http-запросов. Кажется, это отнимает очень много времени. Надеюсь, есть какая-нибудь альтернатива.
2. @PallabChowdhury, Честно говоря, может быть лучший способ сделать это, но в настоящее время это лучший метод, о котором я знаю (я также использую его в своем приложении). Если вы найдете альтернативу, я бы хотел услышать об этом. Овации
3. Конечно. Теперь я экспортирую все данные устройств на другой сервер и получаю данные оттуда. Я думаю, что будет лучше использовать TB в качестве промежуточного брокера и использовать отдельный сервер для производства. Надеюсь, это поможет.