Как я могу создать группу устройств в Cumulocity с REST - PullRequest
1 голос
/ 19 сентября 2019

Я пишу сервис для пересылки данных наших датчиков на платформу Cumulocity.Я спроектировал структуру так, чтобы все данные сначала отправлялись нашему основному арендатору, а затем данные устройств для каждого клиента пересылались соответствующим арендаторам с помощью Data Broker.

Я могу группировать устройства вручную и пересылать по группам, но я нене хочу иметь дело с этим каждый раз, когда добавляется новое устройство. Данные сенсора содержат имя клиента.Возможно, я могу добавить имя клиента в свойства устройства (например, device_type) и использовать его в качестве фильтра, но я хочу избежать этого, если это возможно.Поэтому я подумал, что когда данные датчика попадают в мою конечную точку, я делаю что-то вроде этого:

  • Посмотрите, существует ли устройство в базе данных. Если оно существует, просто опубликуйте данные измерений.

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

  • Если не добавить запись и создать группу с именем клиента. Затем добавьте устройство в группу.

  • Если оно существует, просто добавьте устройствов группу.

Я попытался добавить устройства в группы с помощью REST, и это работает.Проблема в том, что я не могу создать группу устройств с REST.

Я посмотрел примеры запросов Cumulocity API и попытался немного их настроить.

Я попытался отправить запрос POST на {{url}} / inventory / managedObjects as:

{
    "name": "TestDeviceGroup",
    "c8y_IsDeviceGroup": {}
}

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

Я пытался добавить новое устройство к этому объекту как дочерний ресурс.

{{url}} / inventory / managedObjects / {{GroupId}} / childAssets

{
     "managedObject": "id:{{deviceId}}"
}

Возвращает 201 созданное, но ГРУППА устройства не обновляется.

Если я воссоздаю этот сценарий с созданной группойс пользовательским интерфейсом и его идентификатором все работает нормально, и устройство добавляется в группу.

Как я понимаю, то, что я создаю, не является допустимой группой устройств, и это главная проблема.Поэтому мой вопрос: как я могу создать группу устройств с REST?

1 Ответ

2 голосов
/ 19 сентября 2019

Чтобы создать группу, вы уже на правильном пути, вам просто не хватает правильного типа.Создайте свою группу следующим образом:

POST /inventory/managedObjects
{
    "name": "TestDeviceGroup",
    "type": "c8y_DeviceGroup",
    "c8y_IsDeviceGroup": {}
}

Чтобы назначить свое устройство определенной группе, вы можете ЛИБО назначить существующее устройство существующей группе, подобной этой (замените заполнители в <> вашими идентификаторами):

POST /inventory/managedObjects/<groupId>/childAssets
{
  "managedObject": {"id":"<deviceId>"}
}

Или вы можете напрямую создать новое устройство в существующую группу, например:

POST /inventory/managedObjects/<groupId>/childAssets

Content-Type: application/vnd.com.nsn.cumulocity.managedobject+json

{
    "name": "my device",
    "c8y_IsDevice": {}
}

...