使用REST将数据发送到Azure IoT中心

问题描述 投票:0回答:2

我正在尝试学习Azure IoT中心,但是无法使用Postman将数据发送到IoT中心。我做了以下事情:

  • 创建Azure IoT中心
  • 使用Azure Portal CLI创建设备
  • 复制了设备页面上说“主键”的文本

我的请求如下:

POST https://myhub.azure-devices.net/devices/MyDevice/messages/events?api-version=2020-03-13

我添加了授权标头,其值是:SharedAccessSignature = SharedAccessSignature sr = myhub.azure-devices.net%2Fdevices%2FMyDevice&sig = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

键是设备页面“主键”字段中复制的文本。

内容类型设置为application / json。但是身体目前是空的。

我收到以下答复:

“消息”:“ ErrorCode:ServerError; InternalServerError”,

注意:集线器和设备名称与此处所述的名称不同。

azure rest azure-iot-hub
2个回答
0
投票

您需要基于主键来计算auth标头,而不仅仅是将其放入标头中。有关如何执行此操作的示例,请参见here,例如,使用CLI az iot hub generate-sas-token


0
投票

[为此,我们有3个阶段,1)从Visual Studio Code生成SAS密钥,请参见下图(或者从CLI请参见由silent发布的答案)2)使用Postman 3)通过VS代码进行监视

步骤: VS代码

1)安装用于Azure IoT的VS Code扩展工具并按照屏幕上的说明连接IoT中心

enter image description hereenter image description here

2)您可以在VS Code Explorer中查看设备列表。现在,右键单击设备(在门户中创建),然后选择``为设备生成SAS令牌'',以24小时为单位给出时间,然后按Enter键。从输出窗口完整复制整个SAS密钥。示例如下所示。

SharedAccessSignaturesr = deviothub.azure-devices.net%2Fdevices%2FNewDevice&sig = H3II%2FCa5Km5V2pieP5Ti1SI%3D&se = 1590867649

enter image description here

enter image description here

步骤邮递员

1)我希望您已经在Azure IoT Hub REST API上访问了此文档。将所需的部分替换为IoT中心值。

POSThttps:// fully-qualified-iothubname.azure-devices.net / devices / {id} / messages / events?api-version = 2020-03-13

2)确保包括完全复制的SAS令牌,并在POST调用的标题部分中使用它

enter image description here

3)正文内容:这取决于您的用例。示例'raw'-JSON-> {“温度”:54}

**您会看到IoT中心接受的响应为'204 No Content']

Step监视遥测的简便方法

1)打开VS Code编辑器,右键单击特定设备并选择“开始监视内置事件”

enter image description here

2)从Postman发送另一个遥测,您可以看到消息到达IoT中心,并且在VS代码监视屏幕上可见。

enter image description here

快乐的Azure IoT学习

© www.soinside.com 2019 - 2024. All rights reserved.