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

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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版