0

我正在尝试从 NodeRed Flow 发送 DM 固件更新命令。

功能节点:

msg.payload = {"MgmtInitiationRequest": {
"action":"firmware/update",
"devices": [{
"typeId": "myType",
"deviceId": "myDevice"
}]

}}
msg.headers={"Content-Type":"application/json"}
return msg;

我将它发送到带有 POST 的 http 请求节点

https://orgid.internetofthings.ibmcloud.com/api/v0002/mgmt/requests

使用 api 密钥进行基本身份验证。我基于发起设备管理请求

我得到一个403,文档有:

一台或多台设备不支持请求的操作

有人看到我错过了什么吗?从 IoT 平台 UI 到相同的设备类型/设备 ID,它都可以正常工作。

编辑:如果我使用像 Postman 这样的 Rest 客户端,则相同的 403。

4

2 回答 2

1

swagger API 文档有点误导,因为“body”参数有一个名称。但是,与其他 POST API 一样,该名称实际上并未作为有效负载的一部分包含在任何地方。

有效载荷应如下所示:

{
    "action": "firmware/update",
    "devices": [
        {
            "typeId": "string",
            "deviceId": "string"
        }
    ]
}

文档中的此页面提供了更多详细信息: https ://console.ng.bluemix.net/docs/services/IoT/devices/device_mgmt/requests.html#firmware-actions-update

于 2017-03-29T12:21:50.550 回答
1

当您的设备宣布自己为受管设备时,您的设备是否发布了它所支持的命令集?

设备连接到 Watson IoT Platform 并使用受管设备操作成为受管设备

看起来像这样

主题:iotdevice-1/mgmt/manage

{ ... "supports": { "deviceActions": true, "firmwareActions": boolean }, ... }, ... }

https://console.ng.bluemix.net/docs/services/IoT/devices/device_mgmt/index.html

于 2017-03-29T09:09:16.610 回答