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

Azure物联网中心与nanoFramework

[复制链接]
木木&点点 发布时间:2019-3-10 11:26
本帖最后由 点点&木木 于 2019-4-13 10:34 编辑 * a1 x6 }& q8 |" d% R, ^# U4 S

% Z/ V. r( Y; W- m

9 v1 r$ P6 R, T5 L0 G

1 h8 Y, W5 F* t1 a6 p
硬件组件
STMicroelectronics STM32F769IDISCOVERY  ×  1      

  }$ J6 m, F' ^7 `: P. K$ U
概观
该项目旨在说明使用nanoFramework C#构建连接设备是多么容易。该设备将使用AMQP连接到Azure IoT Hub。
Azure IoT中心
     如果您不熟悉Azure IoT Hub,可以在产品页面中找到所有相关信息。您需要Azure帐户才能使此项目正常运行。如果您没有,可以在上面的产品页面上打开一个免费帐户。
9 _3 G" M0 ?9 m6 h1 z% c6 V
AMQP
     这是在应用程序或组织之间传递业务消息的开放标准。代表一个先进适用的中号essage Q ueuing P rotocol。它是国际标准(ISO / IEC 19464),也是物联网广泛接受的协议标准之一。
& C- g2 h+ P2 o+ f- b9 _% A
我们将使用AMQP.Net LiteC#库,它是.NET Framework的轻量级AMQP 1.0库。
2 S, }6 G0 U$ x- C- j# I5 v% @$ B

1 o: V/ t) ?: _/ n- s9 Y; f2 e
设置Azure IoT中心
如果您已经安装了Azure IoT Hub,则可以跳过此步骤。
登录Azure门户,创建IoT Hub实例。你会看到类似的东西:
1.jpg

( m# H3 R# y0 p( e- ]/ {; _
  a* m0 r5 |* ?0 p6 ~
在Azure门户中创建Azure IoTHub资源
成功创建其中一个后,您将需要访问密钥。在IoT Hub页面上,导航到Sharedaccess policies 页面并获取iothubowner 策略的连接字符串。
2.jpg
' p" j% ^* z7 w, p
Azue IoT Hub资源的连接字符串

6 K; g+ u. r% T6 q/ m
0 K0 T* d7 z3 g/ e; {! u: d; N5 }
管理物联网中心
   对于IoT Hub的基本管理操作,监控甚至向设备发送数据,您应该安装DeviceExplorer应用程序,该应用程序是AzureIoT C#SDK的一部分。按照自述文件中的说明下载预构建设置,或者您可以选择克隆存储库并自行构建。
   启动Device Explorer应用程序后,在相应字段中输入您从Azure门户获得的连接字符串,然后单击“ 更新” 按钮。
, {' P  j3 F0 M0 H6 @3 z/ W
3.jpg
' \2 G- G0 R, ^- w* P& z

& f; L+ C6 u. H7 h/ Y4 [
在Device Explorer中输入连接字符串
下一步将是创建一个设备。转到“ 管理” 选项卡,然后单击“ 创建” 按钮。
4.jpg

4 V$ K# L6 o+ @' D2 l' M

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

0 F+ e6 p; M' `- Z! j! D" t

7 R, Y1 Y, {+ ?3 C4 Z4 `
为设备生成SaS令牌
立即复制生成的SaS令牌以在C#应用程序中使用。
这里值得一提的几个方面:令牌是专门为此设备生成的,属于此IoT Hub实例,并且在TTL字段中设置的持续时间内有效。
, y/ M+ m% g  A; h' }- F2 z* D
IoT Hub客户端硬件
   我用这个项目的STM32F769IDISCOVERY板用nanoFramework 图像闪烁。对于运行最新nanoFramework 映像并具有网络功能的任何其他电路板,这将完全相同。
" s0 F1 @9 G' G$ F# L* ~* H
6.jpg
" S$ Q+ O! z) J' W
SMT32F769IDISCOVERY连接到USB和以太网电缆
C#IoT客户端
我假设你已经安装了nanoFramework扩展,正确设置了VisualStudio 。
      从nanoFramework 示例repo中获取代码并在Visual Studio中打开解决方案。解决方案加载后,设置Azure.IoTHub 具有启动项目。
      接下来编辑Program.cs 并替换与IoT Hub相关的文件顶部的常量。

. A% h9 W+ D( z2 f! z
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";
5 p" y2 `) ^2 a% B0 c1 U0 }
确保你:
       -您输入的是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处理程序的代码。
( ~, Y! a! z/ d% k/ r- G
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}");
}
& P+ I3 k1 X( i$ V8 a3 t
      最后需要注意的是,nanoFramework 设备应该通过使用Network Configuration窗口或调整NetworkHelpers类中的相关代码来正确配置网络接口。
* t- V$ ]' B  Q' l# J# X# C+ l
连接到物联网中心
     要看到这实际上只是在Visual Studio上启动调试会话。C#应用程序将部署到设备并开始运行。
     由于AMQP跟踪级别设置为“帧和信息”,因此您可以检查Visual Studio调试输出窗口以了解AMQP连接发生的情况。
突出显示的是:验证步骤以及接收和发送端点的附件。
7.jpg

' {6 l- X5 @0 U9 M) t  b- S
单击用户按钮时,会向IoT中心发送AMQP消息

- k3 g! W9 O4 g! \$ F- g( l. N
* M6 r6 I' @8 v  W$ l7 z1 J
IoT Hub设备资源管理器具有监控功能,可用于监控从设备流向云的数据。转到“ 数据” 选项卡,然后单击“ 监视” 按钮。
8.jpg

7 U: X3 }. _& q# h3 n# X1 O& n; i
要测试云到设备的通信,请转到“ 消息到设备” 选项卡,在下拉列表中选择设备,添加值为70 的属性settemp ,然后单击“ 发送” 按钮。
9.jpg
5 I5 t# R4 e! Q, e4 b( [, O
消息在IoT Hub上排队,输出显示消息ID。由于设备已连接,因此会立即收到消息。
这是我们在Visual Studio调试输出窗口上得到的:
10.jpg
# O' ~9 B( D3 M
把它包起来
       这是一个关于IoT Hub连接设备非常简单的演示。这里介绍了身份验证,发送和接收消息等基本部分。
      
        可以轻松扩展此代码以添加改进,例如:
- 添加错误处理和重试。
4 d6 J% O2 ?$ ^3 o+ w; m- 使用消息属性进行更复杂的处理。( A7 a; G5 g, w7 y/ p2 z
- 实施IoT Hub云到设备命令的处理。
+ [: w$ d) F: e5 B1 R/ \7 t
赞 收藏 评论1 发布时间:2019-3-10 11:26

举报

1个回答
damiaa 回答时间:2019-3-11 08:55:07
谢谢
2 a9 ~  k' J0 _; o5 U1 L

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版