实现物联网时,物联网服务大体上发挥着两个作用。 第一是把从设备收到的数据保存到数据库,并对采集的数据进行分析。 第二是向设备发送指令和信息。 本章将会为大家介绍如何构建物联网服务,以及用于实现物联网的重要要素。 整体结构 物联网大体上有 3 个构成要素,如图 2.1 所示。一个是设备,另一个是网关,再来就是服务器。关于设备的基本结构和使用的技术,我们会在第 3 章详细说明。因此本章并不涉及设备。我们来详细看一下用怎样的机制才能实现网关和服务器。
网关 如图 2.1 左下所示,物联网使用的设备中,有 3 台设备不能直接连接到互联网。网关就负责把这些设备转发到互联网。 网关指的是能连接多台设备,并具备直接连接到互联网的功能的机器和软件图 2.2)。如今,市面上有很多种网关。在多数情况下,网关凭借 Linux 操作系统来运行。
选择网关时有几项重要的标准,我们来一起看一下。 接口 第一重要的是用于连接网关和设备的接口。网关的接口决定了能连接的设备,因此重点在于选择一个适配设备的接口。 有线连接方式包括串行通信和 USB 连接。串行通信中经常用的是一种叫作 D-SUB 9 针( pin)的连接器,而 USB 连接中用到的 USB 连接器则种类繁多。 无线连接中用的接口是蓝牙和 Wi-Fi( IEEE 802.11)。此外,还有采用 920 MHz 频段的 Zigbee 标准,以及各制造商们的专属协议。第 3 章会详细讲解这些规格各自的特征,重点在于根据设备对应的标准来选择接口。 网络接口 我们用以太网或是 Wi-Fi、 3G/LTE 来连接外部网络。网络接口会影响到网关的设置场所。以太网采用有线连接,通信环境稳定。然而正因为采用的是有线连接,所以必须把 LAN 电缆布线到网关的设置场所。 因此,在设置场所方面就会在某种程度上受到限制。对 3G/LTE 连接而言,设置场所就比较自由了,但通信的质量会受信号强弱影响,所以通信不如有线连接稳定。因此,有时很难在信号不良的大楼和工厂等封闭环境中设置。不过, 3G/LTE 连接有个好处,即只使用网关就能完成和外部的通信,因此操作起来很简单。此外,想使用 3G/LTE 时,需要和电信运营商签订协议并获取 SIM 卡,这点就跟使用手机一样.
硬件 相对于一般计算机而言,网关在 CPU 和内存这些硬件的性能方面比较受限。我们需要确定让网关做哪些事情,也需要考虑到它的硬件性能。 软件 人们主要使用 Linux 操作系统来运行网关。虽然有很多种用于服务器的 Linux,不过,网关上搭载的 Linux 是面向嵌入式的。 此外,还有一个叫作 BusyBox 的软件,它运行起来占用内存少,集成了标准的 Linux 命令工具。它用于在硬件资源匮乏的时候运行网关。除此之外,还要考虑是否有用于控制网关功能的程序库,以及与这种程序库对应的语言等。 电源 说起来,电源很容易被人们遗忘。网关基本上都是使用 AC 适配器当电源的,因此需要事先在设置网关的场所准备好电源。如果网关本身搭载有电池,那么就不需要准备电源了,不过需要进行充电等维护工作。 服务器的结构 在功能方面,物联网服务大体上可分为 3 个部分,本书分别称它们为前端部分、处理部分,以及数据库部分(图 2.3)。
首先,前端部分包括数据接收服务器和数据发送服务器。数据接收服务器接收设备和网关发来的数据,转交给后续的处理部分。数据发送服务器则刚好相反,它负责把从处理服务器接收到的内容发送给设备。 通常情况下, Web 服务的前端部分只接受 HTTP 协议。而物联网服务的前端部分则需要根据连接设备的不同来匹配 HTTP 以外的协议。使用者需要考虑到协议的实时性和通信的轻量化,以及能否以服务器为起点发送数据。我们会在 2.2 节重新讲解这些协议。 处理部分负责处理从前端部分接收到的数据。这里的“处理”指的是分解数据、存储数据、分析数据、生成发给设备的通知内容,等等。 数据处理包括批处理和流处理等,批处理即把数据存入数据库之后一并进行处理,而流处理是逐次处理从前端部分收到的数据。使用者需要根据处理内容和数据特性来灵活使用这些“处理”。 最后是数据库。这里的数据库不只会用到关系数据库,还会用到oSQL 数据库。当然,使用者需要根据想存储的数据和想使用的方法来选择数据库。 网关的作用 就如我们前面说的那样,网关是一台用于把不能直接连接到互联网的设备转发连接到互联网的设备。再往细了说,网关是由 3 种功能构成的(图 2.4)。
这 3 种功能分别是连接设备功能、数据处理功能和向服务器发送数据的功能。此外,实际使用网关执行应用时,还需要其他的管理应用功能。管理应用功能会在第 5 章单独介绍。 接下来就来详细看看网关的 3 种功能。 连接设备 设备和网关是通过各种各样的接口连接的。当通过传感器终端连接时,多数情况下是传感器单方面持续向服务器发送数据。根据设备不同,也存在设备申请从外部获取数据时,服务器向设备发送数据的情况,这时就需要通过网关申请数据。 生成要发送的数据 接下来把从设备接收到的数据转化成能发送给服务器的格式。在表示从设备发送到网关的数据时,也有把 4 位二进制数(如二进制数据和CD 码)替换成一位十进制数数据来表示的(图 2.5)。这样的数据不会被直接发给服务器,而是在网关处被转化成数值数据和字符串的格式。
还存在下面这种情况:不把每台设备发来的数据直接发送给服务器,而是将大量数据整合在一起再发送给服务器。这么做有以下两个原因。第一,通过整合数据能减少数据的附加信息,减少数据量。第二,通过一并发送数据能减轻访问物联网服务时对服务器造成的负担。 发送数据给服务器 向物联网服务发送数据。此时,需要根据服务器来决定发送数据的时间间隔和发送数据的协议。另外,为了能从物联网的服务器接收消息,还得事先准备好这种功能。