如何使用NodeRed或任何REST客户端

时间:2017-03-28 18:24:23

标签: post ibm-cloud node-red watson-iot

我正在尝试从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。

2 个答案:

答案 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