英特尔® 物联网网关 - Python 入门指南

本文内容面向 Python*。 如欲获取 JavaScript* 入门指南,请查阅英特尔® 物联网网关 - JavaScript* 入门指南

简介

物联网 (IoT) 市场正在迅猛发展。 Gartner 预测 到 2016 年,世界范围内相连接的设备将达到 64 亿台,总服务支出将达到 2350 亿美元。 到 2020 年,预计相连接的设备将达到 208 亿台。 国际数据公司 (IDC) 预计到 2020 年 物联网市场规模将达到 1.7 万亿美元。 现在是将新旧系统连接到互联网的最佳时机。

物联网 (IoT) 解决方案包含许多移动部件。 这些解决方案的核心是物联网网关,以便获得连接性、可扩展性、安全性和可管理性。 该入门指南将使您了解:

  • 什么是物联网网关。
  • 它如何成为商业和家庭物联网解决方案的中枢。
  • 如何选择适合自己的物联网网关。
  • 可以获取哪些软件开发工具。
  • 如何编写 “Hello World” 应用,并在网关上运行。

让我们开始吧!

什么是物联网网关?

网关是做什么的?

物联网网关是物联网解决方案的核心,它能够把不同的部件连接在一起。 物联网网关的一端是所有的设备,包括传感器、智能设备、汽车、工业设备等任何产生数据的智能设备。 另一端是网络和数据基础设施,负责存储、处理设备产生的所有数据。 网关将设备和网络、数据基础设施连接在一起,是一座连接两端的桥梁。

图 1: 物联网解决方案的高度概括

然而,网关不仅仅是桥梁,它还可以解决所有开发者都面临的连接问题。 连接问题有两个主要需求:

  1. 互联网或广域网 (WAN) 访问的稳定性、安全性。
  2. 支持访问多种设备的能力,许多设备不具备处理能力。

将单个传感器连接到互联网,不仅复杂而且成本高昂。 如果您有不同类型的传感器,每个传感器有不同的接口,您想要将数据整合到一个界面,会发生什么情况呢?

网关通过以下特性帮您解决难题:

  1. 通信和连接性
  2. 可扩展性
  3. 安全性
  4. 可管理性

通信和连接性

有线连接和无线连接成为许多设备的标准。 现行的协议包含蜂窝 2G、3G 和 4G、蓝牙*、串行接口、USB、虚拟专用网络 (VPN)、Wi-Fi 接入点、MQ 遥测传输 (MQTT) 消息传送协议和 ZigBee*。 可以使用各种方法连接到传感器和系统。 有了如此多的协议,几乎可以连接任何传感器或设备。

可扩展性

和网络路由器相似,物联网网关可以相互连接,形成更大型的解决方案。 不管是通过单个网关创建家庭自动化系统,还是连接数英亩的工厂(新旧系统并存),您可以全部连接到一个系统上。

安全性

数据加密和软件锁定是物联网网关提供的众多安全特性中的两项。 此外,许多设备提供白名单、更改控制、安全存储和安全启动,还提供多种不同的协议、服务和恶意软件防护。 通过结合使用上述特性,您的系统和数据每时每刻都可获得可靠的保护(这点很重要,由于物联网呈指数级增长,成为吸引越来越多黑客和窃贼的目标)。

可管理性

可管理性是指解决方案的部署、维护和管理。 由于潜在的复杂性,解决方案的易管理性十分重要。 您需要找到能够安全访问的基于 web 的界面,以维护网关,管理连接的传感器,控制数据流的传输。 由于许多网关使用某种形式的嵌入式 linux*,为您提供您熟悉、喜爱的管理工具(如 ssh 和 scp)。

使用场景

商用

在商业环境中,网关可以连接到一系列传感器(如光传感器、环境传感器、烟雾传感器、能源传感器和 RFID)和系统(如 HVAC、售货系统、安全系统和交通系统),以控制、监控设备(如数据存储、服务器),这些设备可以通过笔记本电脑、平板电脑和智能手表检索。

图 2: 端到端的商业物联网部署 - 以英特尔为例

具体示例如下:

  • 商业货车运输公司收集车队的 GPS 和装载信息。 每一辆车都配有联网的网关,可以过滤、传送车辆系统的数据。
  • 建筑公司在建筑工地监控噪音级别,使噪音符合当地的噪音规定。 每个工地都安装了噪音和振动传感器,连接到一个或多个网关,将数据发送给现场主管。

家庭

家居自动化是最常见的物联网家庭应用。 在此场景下,网关可以智能地连接到安全系统、恒温器、照明控制、烟雾探测器等等,支持单点控制功能。 在家庭内部访问 web 接口,或者通过互联网安全地访问 web 接口,通常可以产生有关所有系统的统一视图。

智能电表是另一种常用的网关。它们检测能耗信息,将信息返回电力公司,1 小时返回 1 次,有时甚至间隔更短时间。 这些电表还支持与电力公司之间的双向通信。

哪款网关适合我?

现在市场上的网关种类繁多,哪一款最适合您呢?最终的决定因素主要有两点:

  1. 现有的互联网连接类型(有线、无线及蜂窝)
  2. 您使用的传感器类型和传感器接口类型(USB、串行接口及蓝牙*)。

英特尔拥有庞大的制造业合作伙伴生态系统,能提供多种选择。 在英特尔® 开发人员专区的物联网区,您将获得两个实用工具:解决方案目录网关比较工具。 使用这两种工具,您将发现拥有如下特性的解决方案:

处理器

  • 单核英特尔® Quark™ SoC X1000 400 MHz 处理器
  • 单核、双核和四核英特尔® 凌动™ 处理器
  • 单核、双核和四核英特尔® 酷睿™ 处理器

网络与通信

  • Wi-Fi(单个无线和多个无线)
  • 双 LAN
  • 蓝牙*
  • CAN 总线
  • ZigBee*
  • 6LoWPAN
  • GPRS
  • 2G/3G/LTE
  • 模拟和数字 I/O
  • RS-232

操作系统

  • Wind River* linux* 7
  • Snappy Ubuntu* Core
  • Microsoft Windows® 10 物联网

本指南采用的是配备有 OMEGA* RH USB 传感器的研华科技* UTX-3115 网关,该设备可以测量温度和相对湿度。

物联网技术在垂直行业的应用

在商业和家庭领域中,利用物联网网关技术开发了许多应用,但是,这项技术具体应用在什么地方?

应用物联网技术的行业和垂直领域的部分分类如下所示:

行业垂直领域使用案例
公共部门城市城市 Wi-Fi、停车与交通
公共安全学校、边境与执法部门 
制造业工厂能源管理、安全与自动化
能源与矿产公用事业移动工作人员、变电站与配电自动化
石油与天然气管道监控、精炼厂系统与安全操作 
采矿资产可视性与监控、预见性维护 
交通运输交通运输道路、火车与车站
B2C零售远程专家 / 移动顾问、数字媒体存储体验
体育与娱乐体育馆、体育馆 Wi-Fi 与体育馆视野 
SP 与机器对机器 (M2M)远程塔管理、设备与资产管理 
医疗行业虚拟患者观察、患者路线查找 
金融服务业分支客户体验、能源管理 

软件概述

Python*环境中的 Wind River* linux*

英特尔® 物联网网关的操作系统是 Wind River* linux*,一种商业嵌入式 linux 发行版。 因为是 linux 系统,您可以在上面运行任何程序,包括 Python*。 事实上,英特尔® 物联网网关的最新版预装了 Python 2.7.3。 此外,您可以从 英特尔开源技术中心下载 Python 软件包的更新版和其它应用,或者使用内置的物联网网关开发中心(在网关运行)。

MRAA / UPM

MRAA (读音为 em-rah)是用 C 语言编写的低级别库。MRAA 旨在提取有关平台基本 I/O 功能的访问与控制的详细信息,并将其转化为单个、简洁的 API。 MRAA 可作为 linux 通用输入/输出 (GPIO) 设备顶端的转换层。 尽管 linux 提供丰富的基础设施来控制 GPIO,其用于处理 GPIO 的通用指令也非常标准,但使用难度相对较大。 话虽如此,您可以利用 MRAA 与模拟和数字设备进行通信。 请务必查看 MRAA API 文档

如欲在您的网关安装 MPAA,请使用 curl 从 英特尔开源技术中心下载最新版,然后运用 rpm 命令进行安装。 例如,您当前运行的系统是 7.0.0.13 版本,命令如下所示:

>> curl -O https://download.01.org/iotgateway/rcpl13/x86_64/libmraa0-0.8.0-r0.0.corei7_64.rpm
>> rpm -ivh libmraa0-0.8.0-r0.0.corei7_64.rpm

IDE 与文本编辑器

如今,市场上有许多 IDE 与文本编辑器。 如果您有特别喜欢的 IDE 或文本编辑器,请继续使用。 如果没有,为您推荐以下 3 个选择。

JetBrains 的 PyCharm*

图 3: JetBrains 的 PyCharm*

PyCharm* 由 IntelliJ IDEA 的开发人员创建,是一种功能全面的 IDE,用于开发 Python 应用。 PyCharm 具有许多特性,例如:

  • 智能 Python 辅助(代码完成)
  • 支持 web 开发框架,包括 Django*、Flask 和 Google App Engine* 平台
  • 与 Jupyter 笔记本电脑相集成
  • 在远程主机或虚拟机上运行、调试、测试及部署应用的能力
  • 大量的内置开发人员工具
  • 还有更多特性!

PyCharm 分为两种类型 - 免费的社区版和功能更为全面的专业版(可以通过订阅模式获得)。

Eclipse* 与 PyDev

图 4: Eclipse* 与 PyDev

Eclipse* IDE 是一个开源平台,可以从中获取一系列方便、强大的代码编辑和调试工具。 PyDev 是针对 Eclipse 的 Python IDE,可以用于 Python、Jython 及 IronPython 开发。和 PyCharm 一样,PyDev 也是功能全面的 IDE,它的特性包括:

根据 PyDev 网站,获取 PyDev 的最好方式是下载并安装 liClipse

Sublime Text

图 5: Sublime Text

如果您喜欢操作简单且功能强大的工具,文本编辑器是非常不错的选择。 Sublime Text 作为一种文本编辑器,可以满足您的上述要求。 Sublime Text 支持大多数编程语言,其特性包括:

  • 分离式窗口编辑 – 并排编辑文件,或在一个文件编辑两个位置。
  • 免干扰模式 – 全屏编辑,不支持 chrome,屏幕中心只有您的文本。
  • 即时切换项目 – 在项目之间即时切换。
  • 命令面板 – 不需要浏览菜单或记忆含糊的密钥绑定,让您搜索到想要的结果。
  • 插件 API – 基于 Python 的强大的插件 API,配有内置 Python 控制台,支持实时交互式实验。

尽管 Sublime Text 不是免费的,但 70 美元的花费非常值得。

开发环境

基于英特尔® 物联网网关构建了丰富的开发环境。 包括台式机和基于 web 的工具。 本章节介绍了如何闪存网关的操作系统,利用 PyCharm IDE 编写并调试 “Hello World” 应用。

这些指令可以在 Windows、Mac 和 linux 上运行。

开发所需的组件

开发网关之前,您需要准备:

  • 一个物联网网关(本指南使用的是研华科技 UTX-3115)。
  • 测量温度和相对湿度的 USB 传感器(本指南使用的是 OMEGA 温度和湿度 USB 传感器)。
  • 电源
  • 一根插入路由器的以太网线缆(将网关连接到互联网)。
  • 一个 IDE 或文本编辑器(本示例中使用的是 PyCharm IDE)。

需要网络连接,以连接网关。 本指南假设网关与开发设备共享同一个网络。 如果某些原因导致网络连接不可用,可以通过串行终端连接到网关。

图 6 显示本指南使用的设置:

图 6: 物联网解决方案示意图

开始创建 Hello World

闪存操作系统

闪存操作系统,将系统升级至最新的版本。 请按照以下步骤操作:

  1. 准备一个至少 4 GB 大小的 U 盘。
  2. 下载最新版网关操作系统映像。
  3. 将映像解压至 linux 主机系统中的选定地址。
  4. 打开一个终端窗口
  5. 执行 df 命令,对安装 U 盘的设备进行验证。 df 命令显示用于文件系统的可用磁盘空间。
  6. 执行以下命令,将操作系统映像复制到 U 盘:
    sudo dd if= <path to recovery image file> of=/dev/sdb bs=4M; sync
  7. 将 U 盘从主机拔出,通过 U 盘启动网关。
  8. 登录网关 (root/root),并执行以下命令:
    # /sbin/deploytool –d /dev/sda --reset-media -F
  9. 关闭网关之后重启。

网关重启后,登录网关,查看指示板上的系统版本号,验证操作系统是否为最新版本。

首次安装

成功登录网关之后,通过以下步骤进行安装:

XXXX 是网关无线网络适配器 (br-lan) 的 MAC 地址的后四位数。 您可以启动网关来获取 MAC 地址。启动后,以根身份登录并键入 “ifconfig”。 从 br-lan 适配器获取后四位数。

  1. 取出网关。
  2. 将以太网线缆从路由器插入要求的以太网端口。 Advantech 需要接入右侧 (eth0) 的以太网端口。
  3. 连接 VGA 或 HDMI 显示器。
  4. 可选:连接鼠标和键盘。 (本指南使用 usb 集线器将其插入 Advantech。 鼠标是完全可选的,建议您连接键盘。)
  5. 将 USB 传感器连接至网关。
  6. 将网关连接至电源,并按下开机按钮。
  7. 网关启动后,通过开发设备的无线网络适配器,利用 SSID 和密码连接到网关内置 Wi-Fi。
    • SSID: IDPDK-XXXX
    • 密码:windriveridp
  8. 打开 PC 的浏览器 – 建议使用 Google Chrome – 转到 http://192.168.1.1。 这是一个英特尔® 物联网网关开发中心(基于 web 的界面,利用可视编程工具管理传感器和原型)的登录页面。
  9. 通过以下证书登录:
    • 用户名:gwuser
    • 密码:gwuser

就这么简单! 您可以开始开发了。

利用 PyCharm 编写 Hello World

本章节将利用 PyCharm 创建基本的 “Hello World” 应用。

  1. 安装并运行 PyCharm。 在闪屏上选择 “Create New Project”。
    图 7: PyCharm 主菜单
  2. 然后,选择所需项目文件和 Python 解释器的位置,单击 “Create” 按钮。
    : 强烈推荐开发时使用的 Python 版本与安装在网关上的 Python 版本一致。 默认状态下,网关上安装了 Python 2.7.3 和 3.3.3 版本。
    图 8: Pycharm 新项目
  3. 创建新项目后,显示项目窗口。 在此窗口右键单击项目名称,选择 “New File”,新建空白文件。 将文件命名为 “hello_world.py”。
    图 9: Pycharm 新项目 > 新文件
  4. “hello_world.py” 文件创建后,添加以下代码,并保存文件:
    #!/usr/bin/env python
    # encoding: utf-8
    """The standard hello world script."""
    print "Hello World!"
  5. 如欲运行 Python 脚本,您可以右键单击文件,选择 “Run ‘hello_world’”。
    图 10: 运行 “hello_world”
  6. 脚本运行后,您可以在 IDE 底部的控制台上查看输出。
    图 11: hello_world 输出

接下来,我们在网关上运行脚本。 运行脚本之前,需要利用开发设备上的安全复制 (SCP) 客户端应用,将文件从开发设备复制到网关。

  1. 首先, 下载并安装 最新版本的 WinSCP。 安装时,建议选择 Commander 用户界面风格,因为它支持文件的拖放传输操作。
    图 12: WinSCP 设置
  2. 安装结束时,请打开 WinSCP。
  3. 在 WinSCP 中配置登录后,登录网关。 确保您所用的文件协议是 “SCP”。 您的设置应该和下图类似:
    图 13: 用 WinSCP 配置登录
  4. 连接创建后,需要为脚本创建文件夹。 单击登录按钮登录网关。 连接至网关上的根文件夹,在右侧窗格中打开文件夹。
  5. 然后,右击右侧窗格,选择 New > Directory。
  6. 将目录命名为 “apps”。
  7. 双击打开应用目录,按照上述步骤创建另一个目录,将其命名为 “helloworld”。 双击打开 “helloworld” 目录(如果目录并未打开)。
  8. 在 WinSCP 应用的左侧窗格中,导航至创建 hello_world.py 文件的文件夹。 将文件拖放至右侧窗格中,并复制文件。 将出现如下信息:
    图 14: WinSCP hello_world.py 文件所在的文件夹
  9. 文件已复制到开发设备的网关上,打开一个命令提示符,利用 ssh 命令 安全连接至网关:
    ssh root@192.168.1.4
  10. 然后,转至创建的 helloworld 目录,利用 python 命令 运行文件:
    cd apps\helloworld
    python hello_world.py
  11. 将出现如下的脚本输出:
    图 15: 脚本输出

代码要点

英特尔® 开发人员专区 的物联网部分,您可以获取许多关于物联网网关的操作方法文章与视频。 以下文章与视频将帮助您起步:

此外,以下指南包含有用的信息和指令:

利用 PyCharm 调试 Hello World

如欲调试应用,首先打开之前步骤创建的 Hello World 项目。 请按照以下步骤运行项目,确保一切正常运行:

  1. 为了调试应用,选定调试开始的代码行,单击该代码行左侧,创建一个断点。 生成断点后,断点所在代码行的一侧将出现一个实心的红点。
    图 16: hello_world.py 断点
  2. 创建断点后,点击右上角的 Debug 按钮(按钮图标像一只虫子)。
    图 17: 调试 hello_world.py
  3. PyCharm 将运行 Python 应用至断点,在断点上可以使用调试面板。
    图 18: 运行 hello_world.py 至断点
  4. 在调试面板上,程序停止运行,可以看到关于程序状态的许多有用信息,包括之前创建的所有对象。
  5. 使用调试面板后,单击面板左侧顶部第二个按钮 - Resume Program Execution 按钮(一个指向右侧的绿色箭头)。
    图 19: 恢复 hello_world.py 程序执行

我们的未来目标

此时此刻,您已经学会了很多! 通过本指南,您收获了以下内容:

  • 学会了如何选择适合您应用的网关。
  • 发现了许多可用的 IDE 和文本编辑器。
  • 学会了如何闪存网关,将网关升级到最新版的系统。
  • 安装了针对开发的网关。
  • 利用 Python 编写了简单的 Hello World 应用,并在网关上复制、运行和调试应用。

下一步,阅读并运用 代码要点部分 中文章和视频的知识。 这些文章和视频介绍了如何从传感器提取数据,及如何发布获取的数据。 获取数据后,可以采用多种方法对数据进行分析及可视化处理。

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.