你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Azure物联网中心与nanoFramework

[复制链接]
点点&木木 发布时间:2019-3-10 11:26
本帖最后由 点点&木木 于 2019-4-13 10:34 编辑



硬件组件
STMicroelectronics STM32F769IDISCOVERY  ×  1      

概观
该项目旨在说明使用nanoFramework C#构建连接设备是多么容易。该设备将使用AMQP连接到Azure IoT Hub。
Azure IoT中心
     如果您不熟悉Azure IoT Hub,可以在产品页面中找到所有相关信息。您需要Azure帐户才能使此项目正常运行。如果您没有,可以在上面的产品页面上打开一个免费帐户。

AMQP
     这是在应用程序或组织之间传递业务消息的开放标准。代表一个先进适用的中号essage Q ueuing P rotocol。它是国际标准(ISO / IEC 19464),也是物联网广泛接受的协议标准之一。

我们将使用AMQP.Net LiteC#库,它是.NET Framework的轻量级AMQP 1.0库。


设置Azure IoT中心
如果您已经安装了Azure IoT Hub,则可以跳过此步骤。
登录Azure门户,创建IoT Hub实例。你会看到类似的东西:
1.jpg


在Azure门户中创建Azure IoTHub资源
成功创建其中一个后,您将需要访问密钥。在IoT Hub页面上,导航到Sharedaccess policies 页面并获取iothubowner 策略的连接字符串。
2.jpg

Azue IoT Hub资源的连接字符串


管理物联网中心
   对于IoT Hub的基本管理操作,监控甚至向设备发送数据,您应该安装DeviceExplorer应用程序,该应用程序是AzureIoT C#SDK的一部分。按照自述文件中的说明下载预构建设置,或者您可以选择克隆存储库并自行构建。
   启动Device Explorer应用程序后,在相应字段中输入您从Azure门户获得的连接字符串,然后单击“ 更新” 按钮。

3.jpg


在Device Explorer中输入连接字符串
下一步将是创建一个设备。转到“ 管理” 选项卡,然后单击“ 创建” 按钮。
4.jpg


创建新设备
只需输入设备ID,应用程序就会为设备创建随机验证密钥。你不必担心这些。
返回Management 选项卡视图,单击SASToken 按钮,该按钮将打开为该设备创建共享访问签名令牌的工具。
5.jpg


为设备生成SaS令牌
立即复制生成的SaS令牌以在C#应用程序中使用。
这里值得一提的几个方面:令牌是专门为此设备生成的,属于此IoT Hub实例,并且在TTL字段中设置的持续时间内有效。

IoT Hub客户端硬件
   我用这个项目的STM32F769IDISCOVERY板用nanoFramework 图像闪烁。对于运行最新nanoFramework 映像并具有网络功能的任何其他电路板,这将完全相同。

6.jpg

SMT32F769IDISCOVERY连接到USB和以太网电缆
C#IoT客户端
我假设你已经安装了nanoFramework扩展,正确设置了VisualStudio 。
      从nanoFramework 示例repo中获取代码并在Visual Studio中打开解决方案。解决方案加载后,设置Azure.IoTHub 具有启动项目。
      接下来编辑Program.cs 并替换与IoT Hub相关的文件顶部的常量。

const string iotHubName = "my-hub";
const string device = "COFFEEMACHINE001";
const string sasToken = "SharedAccessSignaturesr=my-hub.azure-devices.net%2Fdevices%2FCOFFEEMACHINE001&sig=%2FjXfhNvUpxtIM0%2F%2Bb8fCc5l0QWfmEGliSkGqQm3cds4%3D&se=1547902598";

确保你:
       -您输入的是IoT Hub名称。只是名称,而不是完整的URL .- SaS令牌字符串正是在初始“SharedAccessSignature=”之后显示的部分。
        当按下板上的蓝色用户按钮时,应用程序将向IoT Hub 发送随机温度,并在从IoT Hub 收到消息时向调试控制台输出消息。这说明了AMQP设备的双向通信功能。
       继续探索代码,下一个有趣的部分是在解析IoT Hub设置的工作线程的开头。
       您可以看到正在计算的IoT Hub主机的完整URL。
       应用程序使用SASL PLAIN  Azure IoT Hub进行身份验证,并使用由设备资源管理器工具生成的Sas令牌。这样做的目的是设备密钥永远不会通过线路发送,从而消除了潜在的安全漏洞。
      AMQP身份验证的用户名将由设备ID和IoT Hub名称组成。像这样:{deviceId}@sas.{iothubname} 。
      密码是如上所述的SaS令牌字符串。确保只输入相关部分,否则验证将失败。
      此代码块的最后一个有趣位:发送和接收端点。它们根据以下模式由设备ID组成。
      发送设备到云消息:devices / {deviceId} / messages / events 接收云到设备消息:devices / {deviceId} / messages / devicebound
      现在让我们设置设备以了解名为settemp 的属性的消息,该属性包含具有新温度设定点的整数值。这是OnMessage和OnAction处理程序的代码。

private static void OnMessage(IReceiverLinkreceiver, Message message)
{
   // commandreceived
   int setTemperature = int.Parse((string)message.ApplicationProperties["settemp"]);
   OnAction(setTemperature);
}
private static void OnAction(int setTemperature)
{
   Console.WriteLine($"received new temperature setting: {setTemperature}");
}

      最后需要注意的是,nanoFramework 设备应该通过使用Network Configuration窗口或调整NetworkHelpers类中的相关代码来正确配置网络接口。

连接到物联网中心
     要看到这实际上只是在Visual Studio上启动调试会话。C#应用程序将部署到设备并开始运行。
     由于AMQP跟踪级别设置为“帧和信息”,因此您可以检查Visual Studio调试输出窗口以了解AMQP连接发生的情况。
突出显示的是:验证步骤以及接收和发送端点的附件。
7.jpg

单击用户按钮时,会向IoT中心发送AMQP消息


IoT Hub设备资源管理器具有监控功能,可用于监控从设备流向云的数据。转到“ 数据” 选项卡,然后单击“ 监视” 按钮。
8.jpg

要测试云到设备的通信,请转到“ 消息到设备” 选项卡,在下拉列表中选择设备,添加值为70 的属性settemp ,然后单击“ 发送” 按钮。
9.jpg

消息在IoT Hub上排队,输出显示消息ID。由于设备已连接,因此会立即收到消息。
这是我们在Visual Studio调试输出窗口上得到的:
10.jpg

把它包起来
       这是一个关于IoT Hub连接设备非常简单的演示。这里介绍了身份验证,发送和接收消息等基本部分。
      
        可以轻松扩展此代码以添加改进,例如:
- 添加错误处理和重试。
- 使用消息属性进行更复杂的处理。
- 实施IoT Hub云到设备命令的处理。

收藏 评论1 发布时间:2019-3-10 11:26

举报

1个回答
damiaa 回答时间:2019-3-11 08:55:07
谢谢

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版