如何使用 REST 在 Cumulocity 中创建设备组
How can I create a device group in Cumulocity with REST
我正在编写一项服务,用于将我们的传感器数据转发到 Cumulocity 平台。我设计了结构,以便所有数据首先发送到我们的主要租户,然后每个客户的设备数据通过 Data Broker 转发到相应的租户。
我可以手动对设备进行分组并按组转发,但我不想每次新设备都处理它 added.Sensor 数据包含客户名称。也许我可以将客户名称添加到设备属性(如 device_type)并将其用作过滤器,但我想尽可能避免这种情况。所以我想,当传感器数据到达我的端点时,我会做这样的事情:
看看设备是否存在database.If它存在就发布测量数据。
如果没有查看组数据库(只是一个键值存储,其中包含客户名称和来自 Cumulocity 的相应组的托管对象 ID)以查看是否有客户条目。
如果没有添加条目并创建一个客户组 name.Then 将设备添加到组中。
如果存在,只需将设备添加到组中即可。
我尝试使用 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": {}
}
我正在编写一项服务,用于将我们的传感器数据转发到 Cumulocity 平台。我设计了结构,以便所有数据首先发送到我们的主要租户,然后每个客户的设备数据通过 Data Broker 转发到相应的租户。
我可以手动对设备进行分组并按组转发,但我不想每次新设备都处理它 added.Sensor 数据包含客户名称。也许我可以将客户名称添加到设备属性(如 device_type)并将其用作过滤器,但我想尽可能避免这种情况。所以我想,当传感器数据到达我的端点时,我会做这样的事情:
看看设备是否存在database.If它存在就发布测量数据。
如果没有查看组数据库(只是一个键值存储,其中包含客户名称和来自 Cumulocity 的相应组的托管对象 ID)以查看是否有客户条目。
如果没有添加条目并创建一个客户组 name.Then 将设备添加到组中。
如果存在,只需将设备添加到组中即可。
我尝试使用 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": {}
}