我正在尝试从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密钥进行基本身份验证。我的基础是Initiate a device management request
我找回了 403 ,文档包含:
一个或多个设备不支持请求的操作
任何人都能看到我所缺少的东西?从IoT Platform UI到相同的devicetype / deviceid,它可以正常工作。
编辑:如果我使用像Postman这样的Rest客户端,则为403。
答案 0 :(得分:1)
当您的设备宣布自己作为托管设备时,您的设备是否已发布支持的命令集?
设备连接到Watson IoT平台,并使用托管设备操作成为受管设备。
看起来像这样
主题:iotdevice-1 / mgmt / manage
{ ... "支持":{ " deviceActions":是的, " firmwareActions&#34 ;: boolean }, ... }, ... }
https://console.ng.bluemix.net/docs/services/IoT/devices/device_mgmt/index.html
答案 1 :(得分: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