如何使用 REST 在 Cumulocity 中创建设备组

How can I create a device group in Cumulocity with REST

我正在编写一项服务,用于将我们的传感器数据转发到 Cumulocity 平台。我设计了结构,以便所有数据首先发送到我们的主要租户,然后每个客户的设备数据通过 Data Broker 转发到相应的租户。

我可以手动对设备进行分组并按组转发,但我不想每次新设备都处理它 added.Sensor 数据包含客户名称。也许我可以将客户名称添加到设备属性(如 device_type)并将其用作过滤器,但我想尽可能避免这种情况。所以我想,当传感器数据到达我的端点时,我会做这样的事情:

我尝试使用 REST 将设备添加到组并且它有效。问题是我无法使用 REST 创建设备组。

我查看了 Cumulocity API 示例请求并尝试稍微调整它们。

我尝试将 POST 请求发送到 {{url}}/inventory/managedObjects 作为:

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

它 returns 201 创建了,但我看不到该组。当我尝试获取组集合时,我将其视为具有新 ID 的托管对象。

我尝试将新设备添加到此对象作为子资产。

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

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

已创建returns201,但设备组未更新。

如果我使用 UI 创建的组及其 Id 重新创建此场景,一切正常,并且设备已添加到组中。

据我所知,我创建的不是合法的设备组,这是主要问题。所以我的问题是如何使用 REST 创建设备组?

要创建您已经在正确轨道上的组,您只是缺少正确的类型。像这样创建您的群组:

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

要将您的设备分配给特定组,您可以像这样将现有设备分配给现有组(将 <> 中的占位符替换为您的 ID):

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": {}
}