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

Azure物联网中心与nanoFramework

[复制链接]
木木&点点 发布时间:2019-3-10 11:26
本帖最后由 点点&木木 于 2019-4-13 10:34 编辑 ; J# y/ ^1 l% I6 [) B+ X# N

6 Q  H* j6 [) k: ?, r1 ]
! B) D( d: G3 S3 ^4 J/ L
5 I: j) O  ]( X. X
硬件组件
STMicroelectronics STM32F769IDISCOVERY  ×  1      

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

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

2 y! ~& ^- r* L+ h* F4 o7 _
我们将使用AMQP.Net LiteC#库,它是.NET Framework的轻量级AMQP 1.0库。

. k& X8 j4 M; x' n# S

! y) h& D. @" g- I( R
设置Azure IoT中心
如果您已经安装了Azure IoT Hub,则可以跳过此步骤。
登录Azure门户,创建IoT Hub实例。你会看到类似的东西:
1.jpg
" ?8 k$ j% D4 Y& N# b
9 r+ ^0 k/ Y) n' ?$ T
在Azure门户中创建Azure IoTHub资源
成功创建其中一个后,您将需要访问密钥。在IoT Hub页面上,导航到Sharedaccess policies 页面并获取iothubowner 策略的连接字符串。
2.jpg

: b! {, F! l' w
Azue IoT Hub资源的连接字符串

% Q& K# S$ z- ]( S0 w$ C0 g% s

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

! k7 m1 H, p  D/ U, W3 ]" [
% J" N; [* l! b/ |# W1 |4 h
在Device Explorer中输入连接字符串
下一步将是创建一个设备。转到“ 管理” 选项卡,然后单击“ 创建” 按钮。
4.jpg

' w4 }- K5 y1 Z) D1 [5 m

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

. Y& T# m+ G- \5 t8 o3 R

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

( v9 Z- q; N4 D
IoT Hub客户端硬件
   我用这个项目的STM32F769IDISCOVERY板用nanoFramework 图像闪烁。对于运行最新nanoFramework 映像并具有网络功能的任何其他电路板,这将完全相同。
4 r* k/ j4 p  ~7 [- p. D" x/ Q
6.jpg
" f( Z4 \8 }5 S; q* g. z: n
SMT32F769IDISCOVERY连接到USB和以太网电缆
C#IoT客户端
我假设你已经安装了nanoFramework扩展,正确设置了VisualStudio 。
      从nanoFramework 示例repo中获取代码并在Visual Studio中打开解决方案。解决方案加载后,设置Azure.IoTHub 具有启动项目。
      接下来编辑Program.cs 并替换与IoT Hub相关的文件顶部的常量。

3 H$ r- b3 Z1 k& {: T3 d, V
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";
- f* x+ R; n- {- E
确保你:
       -您输入的是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处理程序的代码。
% l, t. K  S7 G7 [& X
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}");
}
( {' q  K8 \+ O: ]
      最后需要注意的是,nanoFramework 设备应该通过使用Network Configuration窗口或调整NetworkHelpers类中的相关代码来正确配置网络接口。

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

: _# H* _/ Y8 p0 {% J, v0 u% n
单击用户按钮时,会向IoT中心发送AMQP消息
+ D9 _( u, B9 H8 u  k3 h) L

$ Z/ {1 W2 F3 |# j% ~; x" \
IoT Hub设备资源管理器具有监控功能,可用于监控从设备流向云的数据。转到“ 数据” 选项卡,然后单击“ 监视” 按钮。
8.jpg

, n: j) _# W! V0 F; \. M2 d0 R
要测试云到设备的通信,请转到“ 消息到设备” 选项卡,在下拉列表中选择设备,添加值为70 的属性settemp ,然后单击“ 发送” 按钮。
9.jpg
9 j2 w1 Q" Q" G
消息在IoT Hub上排队,输出显示消息ID。由于设备已连接,因此会立即收到消息。
这是我们在Visual Studio调试输出窗口上得到的:
10.jpg

  c: E" Z9 x: B0 [. m: n, ^! _0 A- Q( T
把它包起来
       这是一个关于IoT Hub连接设备非常简单的演示。这里介绍了身份验证,发送和接收消息等基本部分。
      
        可以轻松扩展此代码以添加改进,例如:
- 添加错误处理和重试。
" ~5 T, a1 q1 ~9 c8 M- 使用消息属性进行更复杂的处理。! e4 d3 G. m! i- y
- 实施IoT Hub云到设备命令的处理。
  E( A5 ^& E$ I
收藏 评论1 发布时间:2019-3-10 11:26

举报

1个回答
damiaa 回答时间:2019-3-11 08:55:07
谢谢
6 b( X6 U7 p, w3 i" y

所属标签

相似技术帖

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