Azure IoT Edge on Windows 10 IoT Core

简介:

  在今年的Build大会上,微软推出了Azure IoT Edge的第一个版本(https://github.com/Azure/iot-edge )。该版本的主要特点就是将计算能力由Azure端推送至边缘设备Azure IoT Edge,减少了数据在云端传输耗费的时间,加快响应时间。举例来说,Azure IoT Edge设备可以作为网关设备,进行数据的预处理和分析,以减少IoTHub数据传输的延迟时间。同时,该版本支持多种现场总线的设备将数据接入Azure IoT Edge设备,再由Azure IoT Edge设备统一与Azure IoTHub进行数据交互。

        在今年11月份的Connect大会上,微软宣布对Azure IoT Edge公开预览版(文档链接为:https://docs.microsoft.com/en-us/azure/iot-edge ),已在美国中西部、北欧和东亚地区上线,其他区域也将分批开通。Azure IoT Edge支持Windows、Linux、x64与ARM等平台与架构,可使用基于Docker的Linux或Windows容器。支持C#、C与Python等开发语言。微软同时也发布了适用于Azure IoT Edge的AI套件,以协助开发人员进行边缘AI的应用开发(https://github.com/Azure/ai-toolkit-iot-edge)。

        本文将以运行Windows 10 IoT Core的MinnowBoard MAX为例,详细讲述Windows 10 IoT Core(Build 16299)的安装、Docker的部署、Python和Iotedgectl工具的安装、IoT Edge Device的创建、Module的部署与运行。

1. 在MinnowBoard MAX上安装Windows 10 IoT Core(Build 16299)

        MinnowBoard MAX是相对而言比较老的板子了,其处理器是Intel Atom的E8325,双核1.3G的主频,可以运行64位的系统。要在MinnowBoard MAX运行Windows 10 IoT Core Build 16299(因为运行Azure IoT Edge运行时的最低系统版本是16299),需要进行固件更新、系统镜像烧写和Bios设置这三个步骤。

1.1 固件更新

        固件更新需要到Intel的官网下载下载最新文件,链接地址为:https://firmware.intel.com/projects/minnowboard-max,笔者写文章时,其最新的版本为0.97,如下图所示,

clip_image002

        然后,请参考《Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建》一文的第3部分文档,更新固件。需要注意的是,目前微软发布的针对Minnow Board MAX的Windows 10 IoT Core就是64位的,所以,更新的固件也要选择64位版本的。也就是说,需要用的文件是两个64位固件相关的文件,如下图所示。

clip_image004

1.2 系统镜像烧写

        系统镜像烧写,最简单的方法就是下载官方的Windows 10 IoT Core Dashboard 软件,点击设置新设备,选择设备类型、OS版本、设备名称,设置要密码,点击下载并安装。

clip_image006

        注意,这里一定要下载16299版本以上的OS。

1.3 BIOS设置

        系统镜像烧写完成以后,需要设置Minnow Board MAX的BIOS,主要修改的是Boot的顺序。具体方法可以参考参考《Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建》一文的第5部分文档,依次完成对“Manager -> System Setup -> South Cluster Configuration -> LPSS & SCC Configuration”和“Boot Mainenance Manager-> Boot Options > Change Boot Order”的设置。

2. Docker的部署

        系统安装完成之后,给Minnow Board MAX连接网线,上电。第一次运行的时候,会经历一些设置,所以速度相对较慢。系统运行以后,实用PowerShell工具连接局域网内的Minnow Board MAX设备,具体可以参考这个文档《login remotely with PowerShell》。注意,这里实用的用户名和密码就是之前烧写系统镜像时候设置的。

        之后,逐步运行以下指令:

        Invoke-WebRequest https://master.dockerproject.org/windows/x86_64/docker-17.06.0-dev.zip -o temp.zip

        Expand-Archive .\temp.zip $env:ProgramFiles -f

        Remove-Item .\temp.zip

        $env:Path += ";$env:programfiles\docker"

        SETX /M PATH "$env:Path"

        dockerd --register-service

        start-service docker

        以上脚本运行之后,会在Minnow Board MAX设备上安装Docker,设置环境变量,并启动Docker服务。

3. IoT Edge运行时的安装

        在PowerShell中,运行以下脚本:

        Invoke-Expression (Invoke-WebRequest -useb https://aka.ms/iotedgewin)

        注意,该指令会按照脚本文件执行,如果不做更改的话,会提示以下错误。

clip_image008

        即下载安装的Docker版本是17.06,但是,打开下载的PowerShell脚本会发现,里面的要求是17.09,所以,需要下载该脚本文件,并对其中的第38行的DockerVersion进行修改,将17.09改为17.06,如下图所示。

clip_image010

        修改之后,通过文件共享、FTP等方式,将该文件传输到Minnow Board MAX设备上,如C盘根目录,之后,通过PowerShell执行以下指令:

        C:\Install-IotEdgeRequirements.ps1

        这样,就通过PowerShell来执行本地的脚本文件了,这个过程中,会下载Python和IoTedgectl工具,根据网络连接的情况,可能会占用较长的时间。如果下载和安装正确的话,会通过PowerShell返回提示,如下图所示。

clip_image012

        另外,可以通过iotedgectl help命令查看其能够接受的命令。

        现在,我们需要通过Docker将IoTedge Agent 和 IoTedge Hub这两个模块 Pull到本地,即在PowerShell中分别运行:

        docker pull microsoft/azureiotedge-agent:1.0-preview

        docker pull microsoft/azureiotedge-hub:1.0-preview

        如果一切安装正常的话,到这一步就完成安装了。

4. IoT Edge Device的创建

        目前,IoT Edge Device是通过Azure IoTHub来通信的,所以,需要在Azure订阅上创建一个IoTHub,具体可以参考《Create an IoT hub using the Azure portal》。注意,免费的F1级别已经足够。

创建IoTHub之后,可以选择IoT Edge (preview) -Add IoT Edge Device,如下图所示:

clip_image014

        输入名称,以“MinnowBoard”为例,点击OK。

        等待创建完成之后,进入设备信息页面,拷贝其连接的Connection String,如下图所示。

clip_image016

5. IoT Edge Runtime的部署与配置

        IoT Edge runtime由两个模块组成,即IoT Edge agent和IoT Edge hub。IoT Edge agent负责部署并监控部署到IoT Edge设备上的Modules。IoT Edge hub负责部署的Modules之间的通信、以及设备和IoTHub总线的通信。

        其配置同样通过PowerShell执行:

        iotedgectl setup --connection-string "{device connection string}" --auto-cert-gen-force-no-passwords

        其中的"{device connection string}"由上面第4步中保存的Connection String来代替。

        之后,就可以通过以下指令开始运行:

        iotedgectl start

        同时,可以通过以下指令来检查IoT Edge agent是否已经运行:

        docker ps

clip_image018

6. 部署一个Module

        Azure IoT Edge其中一个重要的特性就是支持云端动态部署Module到IoT Edge Device端。每个Module都是在容器中运行的程序包。Module支持Azure Service,如Azure Functions, Azure Stream Analytics和 Azure Machine Learning;也支持用户自定义的Module,可以用Java, .NET Core 2.0, Node.js, C, and Python等多种语言实现。

        这里,我们利用微软已写好的Module进行部署,该Module会每隔5秒钟产生温湿度、大气压的数据,并上传到IoTHub。具体步骤如下:

        首先,在Azure Portal中,导航到刚刚创建的IoTHub,依次点击“IoT Edge (preview)”-“Set Modules”-“Add IoT Edge Module”,在弹出的设置页面中,点击Add IoT Edge Module,如下图所示。

clip_image020

        输入名称和“Image URI”,其中“Image URI”设置为:

        microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview

        其他的设置为默认,如下图所示。

clip_image022

        后续的设置为默认,最后点击Submit提交。回到设备页面之后,发现下面的Deployed Module中,mytemp已经开始运行。

clip_image024

7. 监控数据

        监控IoT Edge Device设备与IoTHub交互的数据,可以实用Azure Device Explorer工具,该工具在Github上有下载:https://github.com/Azure/azure-iot-sdk-csharp/releases

        目前最新的版本是1.4.1。下载安装之后,在Configuration页面输入IoTHub的连接字符串,点击Update:

clip_image026

        之后,就可以在Data页面中,选择设备,进行数据监控了,如下图所示。

clip_image028

        至此,我们已经在MinnowBoard上完成了Windows 10 IoT Core(Build 16299)的安装,进行了Docker的部署和Python、Iotedgectl工具的安装,同时,在Azure Portal上完成了IoT Edge Device的创建、Module的部署与运行。同时,通过Azure Device Explorer工具监控Edge Device和Azure IoTHub数据的交互。

 

参考链接:

1. Azure IoT Edge V1:https://github.com/Azure/iot-edge

2. Azure IoT Edge V2:https://docs.microsoft.com/en-us/azure/iot-edge

3. Azure IoT Edge AI Kits:https://github.com/Azure/ai-toolkit-iot-edge

4. Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建

5. MinnowBoard固件更新:https://firmware.intel.com/projects/minnowboard-max

6. Windows IoT Core镜像烧写工具: Windows 10 IoT Core Dashboard

7. Azure IoTHub创建:Create an IoT hub using the Azure portal

8. Azure Device Explorer工具下载:https://github.com/Azure/azure-iot-sdk-csharp/releases



      本文转自灵动生活博客园博客,原文链接:http://www.cnblogs.com/dearsj001/p/AzureIoTEdge4WindowsIoTCore.html,如需转载请自行联系原作者

相关文章
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
453 0
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
570 32
|
C# Windows
【Azure App Service】在App Service for Windows上验证能占用的内存最大值
根据以上测验,当使用App Service内存没有达到预期的值,且应用异常日志出现OutOfMemory时,就需要检查Platform的设置是否位64bit。
399 11
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
853 4
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
405 1
|
PHP 开发工具 git
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
375 1
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
316 0
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
347 0
|
Web App开发 编解码 监控
【Azure 媒体服务】Azure Media Player 在Edge浏览器中不能播放视频问题的分析与解决
【Azure 媒体服务】Azure Media Player 在Edge浏览器中不能播放视频问题的分析与解决
1413 0
|
应用服务中间件 nginx Windows
【Azure 应用服务】在App Service for Windows中实现反向代理
【Azure 应用服务】在App Service for Windows中实现反向代理
346 0