使用 Intel® IoT 网关入门 - Python
本文使用 Python 编写。如需开始使用 JavaScript,请参阅 Intel® 物联网网关入门 - Python。
获取新的 Intel® 物联网开发者套件,这是一个完整的软硬件解决方案,使开发者能够利用 Intel® Galileo 和 Intel® Edison 板卡创建令人兴奋的新解决方案。请访问 Intel® 物联网开发者专区。
引言
物联网 (IoT) 市场正在蓬勃发展。Gartner 预测 2016 年全球将有 64 亿台互联设备投入使用,支持总计 2350 亿美元的服务支出。他们还预测,到 2020 年,互联设备的数量将达到 208 亿台。国际数据公司 (IDC) 估计 物联网市场到 2020 年将达到 1.7 万亿美元。现在是连接新旧系统到互联网的最佳时机。
物联网 (IoT) 解决方案涉及许多组成部分。所有这些解决方案的核心是物联网网关,它提供连接、可扩展性、安全性和管理功能。本入门指南将帮助您了解:
- 什么是物联网网关。
- 它如何用作商业和住宅物联网解决方案的中心。
- 如何选择适合您的网关。
- 有哪些可用的软件开发工具。
- 如何编写一个将在您的网关上运行的“Hello World”应用程序。
让我们开始吧!
什么是物联网网关?
网关的用途是什么?
物联网网关是物联网解决方案的核心,将所有组件连接在一起。一方面是我们所有的“事物”,包括传感器、智能设备、车辆、工业设备,或任何可以被“智能化”并产生数据的物品。另一方面是网络和数据基础设施,它存储和处理事物产生的所有数据。网关是事物与网络和数据基础设施之间的连接;它们是凝聚这一切的粘合剂。
然而,网关不仅仅是粘合剂;它们是解决所有开发者面临的连接挑战的方案。连接挑战主要有两个需求:
- 稳定且安全的互联网或广域网 (WAN) 访问。
- 支持访问大量设备的能力,其中许多设备的处理能力有限甚至没有。
将单个传感器连接到互联网可能变得复杂且昂贵。当您有不同类型的传感器,每种传感器都有不同的接口,并且想要将数据聚合到单个接口时,该怎么办?
网关通过提供以下功能来帮助克服这些挑战:
- 通信和连接
- 可扩展性
- 安全
- 可管理性
通信和连接
有线和无线连接是许多设备的标准配置。您会发现正在使用的协议包括蜂窝 2G/3G/4G、蓝牙*、串行、USB、虚拟专用网络 (VPN)、Wi-Fi 接入点、MQ 遥测传输 (MQTT) 消息协议和 ZigBee*。这些使您能够通过多种方法连接到传感器和系统。有了如此广泛的可用协议,您将很难找到您无法连接的传感器或设备。
可扩展性
与网络路由器类似,物联网网关可以相互连接以形成更大的解决方案。无论您是创建具有单个网关的家庭自动化系统,还是拥有一个需要连接新旧系统的多英亩工业设施,您都可以将所有内容连接到一个系统中。
安全
数据加密和软件锁定是物联网网关上的一些安全功能。此外,许多设备提供白名单、变更控制、安全存储和安全启动,以及广泛的协议、服务和恶意软件防护。所有这些功能共同确保您的系统和数据始终保持安全(这是关键方面,因为物联网继续呈指数级增长,成为黑客和窃贼更大的目标)。
可管理性
可管理性是指解决方案的部署、维护和管理。鉴于潜在的复杂性,管理简单性至关重要。为了帮助您,您会发现基于 Web 的界面,您可以安全地访问这些界面来维护网关本身,管理连接的传感器,并控制数据流经网关的方式。许多网关使用某种形式的嵌入式 Linux*,因此您熟悉的管理工具如 ssh 和 scp 均可用。
使用场景
商业
在商业环境中,网关可以连接一系列传感器(例如:灯光、温度、烟雾、能源、RFID)和系统(例如:HVAC、自动售货机、安防、交通),以控制和监控数据存储和服务器等设备,供笔记本电脑、平板电脑和智能手表检索。
具体示例包括:
- 商用卡车公司收集其车队的 GPS 和装载信息。每辆卡车都有一个连接互联网的网关,该网关过滤并中继来自卡车系统的数据。
- 建筑公司监控其工地的噪音水平,以符合当地的噪音法规。每个工地都有连接到一个或多个网关的噪音和振动传感器,这些传感器将数据发送给现场主管。
住宅
物联网最常见的住宅应用是家庭自动化。在这种情况下,网关通过智能连接您的安防系统、恒温器、照明控制、烟雾探测器等,提供单一的控制点。通常,从家中或通过互联网安全访问的 Web 界面提供了对所有这些系统的统一视图。
智能电表是如今另一种常见的应用;它们检测能源消耗信息,并每小时甚至更短的间隔将信息发送回电力公司。这些电表还允许电表和电力公司之间进行双向通信。
哪个网关适合我?
市场上有很多选择,哪个适合您?最终这主要取决于两个因素:
- 可用的互联网连接类型(有线、无线、蜂窝)。
- 您将使用的传感器类型及其接口类型(USB、串行、蓝牙*)。
英特尔拥有庞大的制造商合作伙伴生态系统,提供各种选项。在 Intel® Developer Zone 的物联网部分,您会找到两个有用的工具:《解决方案目录》和《网关比较工具》。使用这两个工具,您将找到具有以下功能的解决方案:
处理器
- 单核 Intel® Quark™ SoC X1000 400 MHz 处理器
- 单核、双核和四核 Intel® Atom™ 处理器
- 单核、双核和四核 Intel® Core™ 处理器
网络和通信
- Wi-Fi(单频和多频)
- 双 LAN
- 蓝牙*
- CAN 总线
- ZigBee*
- 6LoWPAN
- GPRS
- 2G/3G/LTE
- 模拟和数字 I/O
- RS-232
操作系统
- Wind River* Linux* 7
- Snappy Ubuntu* Core
- Microsoft Windows® 10 IoT
本指南是使用 Advantech* UTX-3115 网关和 OMEGA* RH USB 传感器(测量温度和相对湿度)编写的。
应用物联网技术的行业垂直领域
我们已经看到了物联网网关技术在商业和住宅领域的众多应用,但这项技术具体可以应用于哪些领域?
以下是行业和应用物联网技术的垂直领域的细分:
行业 | 垂直领域 | 示例用例 |
---|---|---|
公共部门 | Cities | 城市 Wi-Fi、停车、交通 |
公共安全 | 学校、边境、执法 | |
制造业 | 工厂 | 能源管理、安全、自动化 |
能源与矿产 | 实用程序 | 移动工作者、变电站和配电自动化 |
石油和天然气 | 管道监控、炼油厂系统、安全运营 | |
采矿 | 资产可见性和监控、预测性维护 | |
交通运输 | 交通运输 | 公路、火车、车站 |
企业对消费者 (B2C) | 零售业 | 远程专家/移动顾问、数字媒体商店体验 |
体育与娱乐 | 体育场、体育场 Wi-Fi、体育场视野 | |
SP 和机器对机器 (M2M) | 远程基站管理、车队/资产管理 | |
医疗保健 | 虚拟病人观察、病人导航 | |
金融服务业 | 分行客户体验、能源管理 |
软件概述
Wind River* Linux* 与 Python* 的结合
Intel® 物联网网关的操作系统是 Wind River* Linux*,这是一个商业嵌入式 Linux 发行版。因为它是 Linux,所以您几乎可以在其上运行任何东西,包括 Python*。事实上,最新版本的 Intel® 物联网网关预装了 Python 2.7.3。此外,您还可以从 Intel 开源技术中心下载更新的 Python 版本包和其他应用程序,或使用网关上运行的内置物联网网关开发者中心。
MRAA / UPM
MRAA(发音为 em-rah)是一个用 C 编写的低级库。MRAA 的目的是将访问和操作平台基本 I/O 功能的详细信息抽象成一个单一、简洁的 API。MRAA 作为 Linux 通用输入/输出 (GPIO) 功能的之上的一层翻译。虽然 Linux 提供了相当丰富的 GPIO 操作基础设施,并且其处理 GPIO 的通用指令相当标准,但使用起来可能很困难。话虽如此,您可以使用 MRAA 与模拟和数字设备进行通信。请务必查看 MRAA API 文档。
要在您的网关上安装 MRAA,请使用 curl 从 Intel 开源技术中心下载最新版本,然后使用 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 和文本编辑器。如果您已有喜欢的,请继续使用。否则,以下是三个可供选择的选项。
JetBrains 的 PyCharm*
来自 IntelliJ IDEA 的开发者推出了 PyCharm*,这是一款功能齐全的 IDE,用于开发 Python 应用程序。PyCharm 包含大量功能,包括:
- 智能 Python 辅助(代码补全)
- 对 Web 开发框架的支持,包括 Django*、Flask 和 Google App Engine* 平台
- 与 Jupyter Notebook 的集成
- 能够在远程主机或虚拟机上运行、调试、测试和部署应用程序
- 丰富的内置开发工具
- 更多!
PyCharm 有两种版本:免费的社区版和通过订阅模式提供的功能更全的专业版。
Eclipse* 和 PyDev
Eclipse* IDE 是一个开源平台,提供一系列便捷强大的代码编辑和调试工具。PyDev 是 Eclipse 的 Python IDE,可用于 Python、Jython 和 IronPython 开发。与 PyCharm 类似,PyDev 也是一个功能齐全的 IDE,包括:
- Django 集成
- 代码补全
- 类型提示
- 重构
- 带有远程调试功能的调试器
- 使用 PyVmMonitor 进行应用程序性能分析
- 更多!
根据 PyDev 网站的说法,获取 PyDev 的最佳方式是下载并安装 liClipse。
Sublime Text
如果您喜欢更轻量级但功能强大的工具,那么文本编辑器是不错的选择。Sublime Text 就是其中一个编辑器。它支持大多数编程语言,在 Sublime Text 中您会看到的一些主要功能包括:
- 分屏编辑 – 并排编辑文件,或在同一个文件中编辑两个位置。
- 无干扰模式 – 全屏、无边框编辑,屏幕中央只有您的文本。
- 即时项目切换 – 在项目之间即时切换。
- 命令面板 – 搜索所需内容,无需导航菜单或记住晦涩的按键绑定。
- 插件 API – 强大的、基于 Python 的插件 API,带有内置 Python 控制台,可实时交互式实验。
尽管 Sublime Text 不是免费的,但 70 美元的费用可能物有所值。
开发环境
Intel® 物联网网关围绕着非常丰富的开发环境构建。这些环境包括桌面和 Web 工具。在本指南的这一部分,您将学习如何刷写网关的操作系统,然后使用 PyCharm IDE 编程和调试“Hello World”应用程序。
这些说明适用于 Windows、Mac 和 Linux。
准备开始所需的物品
为了开始在您的网关上进行开发,您需要:
- 一个物联网网关(在本指南中,我们使用了 Advantech UTX-3115)。
- 一个测量温度和相对湿度的 USB 传感器(在本指南中,我们使用了 OMEGA 温度和湿度 USB 传感器)。
- 幂
- 一根以太网线,连接到您的路由器(网关将通过它访问互联网)。
- 一个 IDE 或文本编辑器(在本示例中,我们将使用 PyCharm IDE)。
要连接到网关本身,您需要网络连接。本指南假设网关与您的开发计算机位于同一网络上。如果由于某种原因无法进行网络连接,您可以通过串行终端连接到网关。
图 6 展示了本指南编写所使用的设置。
入门 / Hello World
刷写操作系统
要升级到最新的系统版本,您需要刷写操作系统。为此,请按照以下步骤操作:
- 准备一个至少 4 GB 的 USB 驱动器。
- 下载最新的网关操作系统映像。
- 在 Linux 主机系统上,将映像解压到您选择的位置。
- 打开终端窗口。
- 使用 df 命令验证 USB 驱动器挂载的设备。df 命令显示文件系统使用的可用磁盘空间量。
- 使用以下命令将操作系统映像复制到 USB 驱动器:
sudo dd if= <recovery image file path> of=/dev/sdb bs=4M; sync
- 从主机设备上拔下 USB 驱动器,然后从 USB 驱动器启动网关。
- 登录到网关(root/root),然后执行以下命令:
# /sbin/deploytool –d /dev/sda --reset-media -F
- 关闭网关电源,然后重新开启。
网关重新启动后,登录并检查您是否正在运行最新版本的操作系统,方法是登录到网关并查看仪表板上的系统版本号。
首次设置
现在您可以登录到网关了,请按照以下步骤进行设置:
XXXX 是网关无线网络适配器 (br-lan) MAC 地址的最后四位数字。您可以通过启动网关来查找此 MAC 地址,一旦启动,以 root 身份登录并输入“ifconfig”。从 br-lan 适配器中获取最后 4 位数字。
- 解压网关。
- 将路由器上的以太网线插入相应的以太网端口。对于 Advantech,请使用右侧(eth0)以太网端口。
- 连接 VGA 或 HDMI 显示器。
- 可选 – 连接鼠标和键盘。(本指南中的示例使用 USB 集线器将两者都连接到 Advantech。鼠标是完全可选的,但建议使用键盘)。
- 将 USB 传感器连接到网关。
- 将网关连接到电源并按下电源按钮。
- 网关启动后,使用开发计算机的无线网络适配器连接到网关内置的 Wi-Fi,使用 SSID 和密码。
- SSID:IDPDK-XXXX
- 密码:windriveridp
- 在您的 PC 上打开浏览器 – 推荐使用 Google Chrome – 并访问 http://192.168.1.1。这将打开 Intel® 物联网网关开发者中心的登录页面,这是一个基于 Web 的界面,用于管理传感器和进行可视化编程。
- 使用以下凭据登录:
- 用户名:gwuser
- 密码: gwuser
好了!您已准备好开始开发。
使用 PyCharm 编程 Hello World
在本节中,我们将使用 PyCharm 创建一个基本的“Hello World”应用程序。
- 安装 PyCharm 后,运行它。在启动屏幕上,选择“创建新项目”。图 7:PyCharm 主菜单
- 接下来,选择项目文件的位置和您将使用的 Python 解释器,然后单击“创建”按钮。
注意:强烈建议使用与网关上安装的 Python 版本相同的版本进行开发。默认情况下,网关上安装了 Python 2.7.3 和 3.3.3。图 8:PyCharm 新项目 - 创建项目后,会出现项目窗口。在此窗口中,右键单击项目名称并选择“新建文件”以创建一个新的空白文件。将文件命名为“hello_world.py”。图 9:PyCharm 新项目 > 新建文件
- 创建“hello_world.py”文件后,添加以下代码并保存文件:
#!/usr/bin/env python
# encoding: utf-8
"""标准的 hello world 脚本。"""
print "Hello World!" - 为确保您的 Python 脚本能够运行,请右键单击文件并选择“运行 ‘hello_world’” 。图 10:运行“hello_world”
- 脚本运行后,您可以在 IDE 底部出现的控制台中查看输出。图 11:hello_world 输出
接下来,我们将脚本在网关上运行。为此,我们将首先使用开发计算机上的安全复制 (SCP) 客户端应用程序将文件从开发计算机复制到网关。
- 首先,下载并安装最新版本的 WinSCP。安装时,我建议选择命令用户界面样式,因为它允许拖放文件传输。图 12:WinSCP 设置
- 安装结束时,选择打开 WinSCP。
- 通过在 WinSCP 中配置登录来登录到网关。确保您使用的文件协议是“SCP”。您的设置将类似于:图 13:使用 WinSCP 配置登录
- 创建连接后,接下来我们需要一个用于存放脚本的文件夹。单击“登录”按钮登录到网关。这将使您连接到网关上的根文件夹,并在右侧窗格中打开该文件夹。
- 接下来,右键单击右侧窗格并选择新建 > 目录。
- 将目录命名为“apps”。
- 双击 apps 目录以打开它,然后使用相同的步骤创建名为“helloworld”的另一个目录。双击 helloworld 目录以打开它(如果尚未打开)。
- 在 WinSCP 应用程序的左侧窗格中,导航到您创建 hello_world.py 文件的文件夹。将文件拖放到右侧窗格以复制文件。您应该会看到类似以下内容:图 14:WinSCP hello_world.py 文件文件夹
- 文件已传输到您的网关后,在您的开发计算机上,打开命令提示符并使用ssh 命令安全连接到网关:
ssh root@192.168.1.4
- 接下来,切换到您创建的 helloworld 目录,并使用python 命令运行文件:
cd apps\helloworld
python hello_world.py - 您应该会看到脚本的输出:图 15:脚本输出
编码基础
Intel 在 Intel® Developer Zone 的物联网部分提供了许多关于使用物联网网关的教程文章和视频。以下视频和文章将帮助您入门:
- Intel® 物联网网关开发者中心:保存和部署操作系统映像 – 完成物联网网关软件开发后,了解如何保存网关的操作系统和软件副本并将其部署到其他网关。
- Intel® 物联网网关:使用 Python 脚本从温度传感器拉取数据 – 创建并安装自定义的 Wind River® Linux 7 操作系统映像,其中包含必要的软件和库,以便使用 Python 将 Phidgets 温度传感器与您的 Intel® 物联网网关进行接口。
- Intel® 物联网网关:使用 Python 将数据发布到 MQTT 代理 – 使用 Python 脚本从 Intel® 物联网网关将数据发布到 MQTT 代理(服务器)。
此外,以下指南包含有用的信息和说明:
- Intel® 物联网网关技术:安全最佳实践 – 了解如何访问和管理网关上的安全功能。
- Intel® 物联网网关技术:网关安装指南 – 了解如何连接网关硬件,将其连接到网络,更新评估操作系统,以及访问 Intel® 物联网网关开发者中心。
使用 PyCharm 调试 Hello World
要调试您的 Hello World 应用程序,请首先在 PyCharm 中打开您之前创建的 Hello World 项目。像以前一样运行它,以确保一切正常,请按照以下步骤操作:
- 要调试应用程序,请在您希望调试开始的代码行左侧单击,以创建断点。创建断点后,您将在行旁边看到一个实心红点。图 16:hello_world.py 断点
- 创建断点后,单击右上角的调试按钮(看起来像一个虫子)。图 17:调试 hello_world.py
- PyCharm 将运行您的 Python 应用程序直到断点,此时调试面板将可用。图 18:运行 hello_world.py 到断点
- 调试面板包含有关程序停止时的状态的许多有用信息,包括到目前为止创建的所有对象。
- 完成调试面板的使用后,单击调试面板左侧的继续程序执行按钮(第二个按钮,看起来像一个指向右方的绿色箭头)。图 19:继续执行 hello_world.py 程序
下一步
至此,您已经完成了相当多的工作!在本指南中,您已:
- 学会了如何选择适合您应用程序的网关。
- 了解了多种 IDE 和文本编辑器选项。
- 学会了如何刷写网关并将其升级到最新的系统版本。
- 设置了用于开发的网关。
- 使用 Python 编写了一个简单的 hello world 应用程序,将其复制到网关,运行并调试了它。
作为下一步,请阅读并实施编码基础部分中列出的文章和视频中的课程。这些将向您展示如何从传感器拉取数据,以及如何发布您捕获的数据。一旦您获得了数据,就有大量的选项可以进行数据分析和可视化。