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,如下图所示,

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

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

注意,这里一定要下载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)
注意,该指令会按照脚本文件执行,如果不做更改的话,会提示以下错误。

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

修改之后,通过文件共享、FTP等方式,将该文件传输到Minnow Board MAX设备上,如C盘根目录,之后,通过PowerShell执行以下指令:
C:\Install-IotEdgeRequirements.ps1
这样,就通过PowerShell来执行本地的脚本文件了,这个过程中,会下载Python和IoTedgectl工具,根据网络连接的情况,可能会占用较长的时间。如果下载和安装正确的话,会通过PowerShell返回提示,如下图所示。

另外,可以通过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,如下图所示:

输入名称,以“MinnowBoard”为例,点击OK。
等待创建完成之后,进入设备信息页面,拷贝其连接的Connection String,如下图所示。

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

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,如下图所示。

输入名称和“Image URI”,其中“Image URI”设置为:
microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview
其他的设置为默认,如下图所示。

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

7. 监控数据
监控IoT Edge Device设备与IoTHub交互的数据,可以实用Azure Device Explorer工具,该工具在Github上有下载:https://github.com/Azure/azure-iot-sdk-csharp/releases
目前最新的版本是1.4.1。下载安装之后,在Configuration页面输入IoTHub的连接字符串,点击Update:

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

至此,我们已经在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
Azure IoT Edge on Windows 10 IoT Core的更多相关文章
- Windows 10 IoT Serials 3 - Windows 10 IoT Core Ardunio Wiring Mode
Maker社区和智能硬件的朋友一定知道Arduino,很多3D打印机都是用它做的.为了迎合这一大块市场,微软在基于Intel Galileo的Windows 8.1 IoT中就是使用这种基于Ardui ...
- Windows 10 IoT Serials 2 - Windows 10 IoT RTM 升级教程
7月29日,微软推出了Windows 10 for PC的正式版,其版本号是Build 10240.近两天官方说已经有4700万的下载安装量,同时这个数字还在不断攀升.另外,除了Windows 10 ...
- Windows 10 IoT Core环境配置中的那些坑
我使用的设备是Raspberry Pi 3B,想来国内的嵌入式玩具应该还是树莓派最常见吧.这段时间一直在捣鼓Win10 IoT,结果发现,从安装一直到编码调试一路下来全都是坑.写这篇东西一个是为了备忘 ...
- 如何在Raspberry Pi 3B中安装Windows 10 IoT Core
Windows 10 IoT Core简介 Windows 10 IoT是微软专门为物联网生态打造的操作系统,Windows 10 IoT Core则是Windows 10 IoT 操作系统的核心版本 ...
- Windows 10 IoT Core 17101 for Insider 版本更新
除夕夜,微软发布了Windows 10 IoT Core 17101 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性. 已知的问题: F5 driver deploym ...
- Windows 10 IoT Core Samples
Windows 10 IoT Core Samples Welcome to the Windows 10 IoT Core Samples These samples have been valid ...
- 张高兴的 Windows 10 IoT 开发笔记:部署 ASP.NET Core 2 应用
今天是大年初二,都去走亲戚了吧,享受一下这难得的能和亲友相聚的时光.而我就不一样了,今天一回到家就又开始瞎折腾了,哈哈哈. 问题背景 最近花了点时间用 ASP.NET Core 2 写了个个人博客,中 ...
- Windows 10 IoT Core 17133 for Insider 版本更新
今天,微软发布了Windows 10 IoT Core 17133 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性.用户可以登录Windows Device Porta ...
- Windows 10 IoT Core 17127 for Insider 版本更新
昨天,微软发布了Windows 10 IoT Core 17127 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性.相比于17120,修复了一个已知的问题. 一些已知的 ...
随机推荐
- Servlet 笔记-过滤器
Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet.Servlet 过滤 ...
- mysql 外键的几种约束
restrict方式 同no action, 都是立即检查外键约束 --限制,指的是如果字表引用父表的某个字段的值,那么不允许直接删除父表的该值: cascade方式 在父表上update/de ...
- 读书笔记-你不知道的JS上-混入与原型
继承 mixin混合继承 function mixin(obj1, obj2) { for (var key in obj2) { //重复不复制 if (!(key in obj1)) { obj1 ...
- linux GCC 编译多个.c/.h文件
基本认识: #include <xxx>:首先去系统目录中找头文件,如果没有在到当前目录下找.像标准的头文件 stdio.h.stdlib.h等用这个方法. #include " ...
- 【ThinkPHP框架学习 】(1) --- thinkphp 3.2.3 验证码验证使用教程分享
框架版本:ThinkPHP框架 thinkphp 3.2.3 生成验证码 下面是最简单的方式生成验证码: $Verify = new \Think\Verify(); $Verify-> ...
- Another Eight Puzzle
Problem Description Fill the following 8 circles with digits 1~8,with each number exactly once . Con ...
- linux的特殊符号与正则表达式
第1章 linux的特殊符号 1.1 通配符 * {} 1.1.1 含义 方便查找文件 通配符是用来找文件名字的. 1.1.2 * 通过find 命令找以 .sh 结尾的文件,使用*替代文件名字. ...
- Windows解决anaconda下双python版本安装TensorFlow
首先,就是双版本anaconda的安装: 以前安装好的是python2.7版本,而TensorFlow的安装仅支持3.5版本的.但是自己本来的2.7版本又不想遗弃.所以安装双版本的: 在anacond ...
- 利用echarts highcharts 实现自定义地图 关系图效果 侧边3D柱形图饼图散点图
github 地址: https://https://github.com/Gengshaoxuan/medataMap github 地址: https://https://github.com ...
- JAVASE高级2
反射概述 什么是反射? 反射的的概念是有smith1982年首次提出的,zhuy主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. JAVA反射机制是运行状态中,对于任意一个类,都能够知道这 ...