我正在尝试从 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,文档有:
一个或多个设备不支持请求的操作
有人看到我错过了什么吗? 从物联网平台UI到相同的设备类型/设备ID,它都可以正常工作。
编辑:如果我使用像邮递员这样的 Rest 客户端,则相同的 403。
招摇的 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
您的设备在宣布自己为受管设备时是否发布了它支持的命令集?
设备连接到 Watson IoT 平台,并使用受管设备操作成为受管设备。
看起来像这样
主题: 物联网设备-1/管理/管理
{... "支持":{ "设备操作":真, "固件操作":布尔值 },... },...}
https://console.ng.bluemix.net/docs/services/IoT/devices/device_mgmt/index.html