物联网的局限性以及物联网如何提供帮助
在这篇摘自《 构建物联网》 一书的文章中,我们定义了物联网及其局限性,并描述了物联网如何帮助构建物联网的应用层。
如今,用一句话概括物联网的本质几乎是不可能的。尽管这个术语本身相对较新,但这些概念已经存在了几十年;因此,物联网是什么或不是物联网没有明确的界限。尽管如此,物联网愿景的广义定义只是一个世界,在这个世界中,互联网不仅仅是今天的多媒体页面集合,而是使用无数嵌入式设备扩展到物理的实时世界。简而言之,我们可以为物联网提供的最简单定义如下:
物联网 (IoT) 是一个物理对象系统,可以通过各种网络接口进行通信的电子设备发现、监控、控制或与之交互,并最终可以连接到更广泛的互联网
二十年前,日常物品可以通过传感器 感知 世界,然后分析、存储或交换信息的世界只存在于科幻小说中。如今,由于嵌入式设备的巨大进步为世界带来了一类新对象: 智能事物 ,此类场景越来越成为现实。 Smart Thing(在本书的其余部分,我们将其称为 Thing—— 大写“ T ”)是一种物理对象,它通过以下一项或多项进行数字增强:
-
传感器 (温度、光线、运动等),
-
执行器 (显示器、声音、电机等),
-
计算 (可以运行程序和逻辑),
-
通信接口 (有线或无线)。
事物通过启用一系列全新的应用程序扩展了我们生活的世界。能够在我们周围随处放置一堆功能强大、小巧且便宜的计算机,使得以比以往任何时候都更精细的空间和时间分辨率监控物理世界并与之交互成为可能。
图 1.- 物联网格局。物联网是一个物联网,它是任何可以以某种形式连接到互联网的东西。从一盒带有 RFID 标签的橙子,到智慧城市,再到介于两者之间的所有事物,所有这些数字增强对象构成了物联网。
更具体地说,物联网中的 事物 可以包括非常简单的 标记产品 ,例如贴有自动识别标签(自动识别方法,例如条形码、二维码或 NFC 和 RFID 标签)的联邦快递包裹因此可以从运输中心到您家门口进行跟踪;到更精细、复杂和无线 连接的产品 、设备或机器,例如安全系统、您的汽车或工厂装配线;一直到建筑物甚至城市。 Internet 部分只是意味着 Thing(其服务或关于/来自它的数据)可以通过现有的 Internet 基础设施由其他应用程序访问和处理。这并不意味着该事物必须物理连接到 Internet。所使用的通信网络可以是自动识别技术、短程无线电(例如,蓝牙、ZigBee 等)或建筑物中的本地 Wi-Fi 网络。
不幸的是,今天几乎不可能建立一个单一的全球物联网生态系统,让物联网彼此无缝通信。物联网没有可以跨当今可用的许多网络接口工作的独特且通用的应用程序协议。直截了当地说,今天的物联网本质上是一组孤立的 物联网 ,它们之间无法真正互动。
为了使物联网成为现实,我们需要一个单一的通用应用层协议(想想“语言”),让设备和应用程序能够相互通信,无论它们是如何物理连接的。与其从头开始创建另一个协议(正如许多 IoT 项目一直在做的那样),为什么不简单地重用已经广泛用于构建可扩展和交互式应用程序的东西,例如 Web 本身?这就是 Web of Things 的 全部意义所在:重用和利用现成且广泛流行的 Web 协议、标准和蓝图,使对象提供的数据和服务更容易被更多的(Web)开发人员访问。
进入物联网
一旦人们想要将来自不同制造商的设备集成到一个应用程序或系统中,物联网的局限性就会变得显而易见。为了说明物联网如何处理这些限制,让我们考虑一下 Johnny B. 的生活,Johnny B. 是一家遍布全球多个城市的著名连锁酒店的老板。 Johnny 想以数字方式连接他酒店所有房间的所有电器,这样他就可以在他位于巴哈马群岛的游艇甲板上,使用一个基于网络的“酒店控制中心”的应用程序。同时,该系统还可以为酒店的每位客人提供更加愉快和个性化的体验,如图 2 所示。
Web of Things 场景:联网酒店
构建这个智能酒店系统可能需要 Alpha 公司制造的电子门锁、 Beta 公司制造的安全摄像头,以及 Gamma 公司制造的用于管理所有这些的控制应用程序。要让这些设备和系统相互交流和工作,需要完成大量定制系统集成工作。约翰尼可以与一家专业公司签约,将他赚来的钱花在一个需要几个月才能完成的重大项目上。如此复杂的项目将具有 Jenga 塔的坚固性(触摸错误的部分,一切都会崩溃):它会被错误和黑客淹没,因此将是维护和扩展的噩梦。在这种情况下,毫无疑问,约翰尼在得到他想要的系统之前会花光钱。
图 2 – Johnny 希望以数字方式连接他酒店所有房间的电器。首先,客人可以访问各种服务,从控制他们的房间(灯光、空调、娱乐等)到预订酒店设施,再到订购食物和饮料——所有这些都在他们的手机上。其次,该系统将允许 Johnny 以集中高效的方式协调和优化其酒店的各个方面,而无需使用各种孤立的应用程序和工具。
如果约翰尼热衷于 DIY(“自己动手”),他也可以决定自己构建整个系统。他可以从同一家公司购买所有部件,因此它们的设计可以很好地配合使用。不幸的是,市场上的任何解决方案都不太可能拥有他想要控制的所有传感器和设备。即使他能找到这个完美的系统,用户界面也不太可能与之相提并论,尤其是在自定义访问控制和可配置性方面。如果他还希望系统具有可扩展性、可靠性和安全性,您可以轻松地将构建它所需的时间加倍(如果不是三倍的话)。我们还应该讨论需要为酒店客人构建的移动应用程序吗?你明白了……
约翰尼的生活似乎超现实。可悲的是,这几乎就是今天物联网的样子。我们之所以知道这一点,是因为在过去十年中我们有机会与许多 Johnnies 合作。从希望将他们现有的安全摄像头与 RFID 门相结合以创建更智能的安全系统的商店经理,到希望通过 Web 控制他们的灯的 LED 制造商,我们已经多次体验过这种情况。
图 3 – 在物联网中,如今有数百个不兼容的协议共存。这使得来自各种设备的数据和服务的集成变得极其复杂和昂贵。在 Web of Things 中,可以使用标准 Web 协议访问任何设备。将异构设备连接到 Web 使跨系统和应用程序的集成变得更加简单。
如果任何设备都可以很容易地集成并被任何应用程序使用,而不考虑这些设备使用的网络协议,那不是很好吗?这正是物联网使您能够做到的,如图 3 所示。
对比当前的物联网和 WoT
随着越来越多的日常物品将被数字化增强,下一个合乎逻辑的步骤是使用万维网生态系统和基础设施来构建物联网应用程序,从而有效地打破这种持续存在的“一个设备、一个协议、一个应用程序”模式。将帮助 Facebook 或 Google 等现代网站扩展到数百万并发用户的完全相同的技术推广到这些微型设备中的每一个,而不会影响安全性或性能,这将特别有趣。最大限度地利用 Web 上使用的现有和新兴工具和技术并将其应用于 IoT 场景开发的想法就是我们所说的物联网。
虽然物联网一直忙于解决网络问题,但物联网完全依赖于应用程序级协议和工具。将任何设备映射到 Web 思维模式使得物联网与设备使用的物理层和传输层协议无关。正如您将在本书中学到的那样,由于软件或硬件“桥”(通过代理或网关),几乎任何自定义协议或标准都可以链接到 Web。
图 4 – 物联网仅依赖于处理应用程序、服务和数据的最高 OSI 层 (7)。在如此高的抽象层次上工作使得连接来自许多设备的数据和服务成为可能,而不管实际使用的传输协议如何。相比之下,物联网并不提倡特定的应用层协议,通常侧重于 OSI 堆栈的较低层。
将 Web 简单模型背后的低级协议的复杂性和多样性抽象化提供了许多优势。就像 Web 已成为 Internet 上分布式应用程序的全球集成平台一样,Web of Things 促进了各种设备和与之交互的应用程序的集成。换句话说,通过隐藏物联网中使用的各种传输协议之间的复杂性和差异,物联网允许开发人员专注于他们应用程序的逻辑,而不必担心这个或那个协议或设备的实际工作方式。
回到我们的智能酒店场景,如果所有设备(无论其制造商如何)都可以提供标准的 Web API,那么跨设备和应用程序的数据集成几乎是开箱即用的,因为 所有设备都将使用相同的语言 。在这种情况下,酒店所有者(或系统集成商)只需担心构建“酒店控制中心”应用程序,该应用程序很可能是 Web 混搭——一个结合了来自不同来源的数据和服务的单一 Web 应用程序。他不必费心去了解他想使用的各种设备所使用的每种协议的细节 [1].这不仅可以显着减少构建时间,还可以最大限度地减少每次添加、删除或更新设备或服务时维护系统所需的工作量。
使这一愿景成为现实一直是我们于 2007 年创立的 物联网社区 的目标 [2] 和 EVRYTHNG [3],我们在 2011 年推出的物联网平台。使用 HTTP、WebSockets、JSON 和其他 Web 标准或工具与嵌入式设备交互对我们来说非常有意义。当时,这个想法似乎不切实际,甚至毫无意义,我们也受到了应有的批评。然而,最新的具有高级功能的嵌入式 Web 服务器仅需 8 KB 的内存即可实现。由于高效的跨层 TCP/HTTP 优化,它们可以在微型嵌入式系统甚至智能卡(如信用卡上的芯片)上运行!由于 IoT 中的嵌入式 Web 服务器通常比访问它们的客户端(例如浏览器或手机)拥有更有限的资源,并且由于 JavaScript 社区的巨大发展,将大量工作负载从设备到客户端应用程序甚至云端。
图 5 – 物联网是直接在嵌入式设备上使用现代 Web 标准的能力。通过将所有这些标准用于 IoT 场景,我们既可以构建新型交互式应用程序,也可以确保设备可以轻松地与现代 Web 应用程序和服务集成。
在物联网中,设备及其服务完全集成在网络中,因为它们使用与传统网站相同的标准和技术。这意味着您可以编写与嵌入式设备交互的应用程序,其方式与您与使用 Web API 尤其是使用 RESTful 架构的任何其他 Web 服务交互的方式完全相同。
REST 是一种用于开发分布式应用程序的架构风格,是构建现代 Web 的基础。 REST 的本质是专注于创建可以轻松重用的松耦合服务,它使用 URI、HTTP 和标准化媒体类型来实现。由于统一的接口(HTTP 动词和响应代码),从特定于应用程序的语义中抽象服务使得构建松散耦合的服务变得容易,因为它为客户端提供了一种简单的机制来选择最佳可能的交互表示。这使得 Web 成为构建“通用”架构和应用程序编程接口 (API) 以与事物交互的理想基础。
实际上,这意味着您可以开始通过 Web 浏览器与事物进行交互,并像在网上冲浪一样探索万维网(通过指向其他相关事物的链接)。然后可以使用 HTML、CSS 和 JavaScript 轻松检索、处理并在网页上显示从分布式传感器收集的实时数据。
与 IoT 中现有的许多协议和标准相比,Web 背后的编程模型更容易学习和使用。这是特别有趣的,因为它使任何具有基本 Web 编程技能的人都可以构建网站和应用程序,不仅围绕多媒体内容,而且还使用来自物理世界的实时数据。
图 6 – 物联网允许开发人员和应用程序使用标准 HTTP/WebSockets 请求与任何设备交换数据,而不管设备是如何连接的。
尽管 Web of Things 强调使用 Web 标准在设备之间交换数据,但它并没有暗示设备之间应该如何进行物理连接。换句话说,设备可以(但不是必须)公开连接到网络,并且像网站一样可供任何人公开访问。物联网在本地网络(例如,您公司的内部网或您的家庭网络)中同样可以很好地工作。
在某些情况下,事物具有公共 URL 并可通过 Web 公开访问是有意义的。例如,公共当局运营的城市中的交通或污染传感器。在这种情况下,设备也可以像任何其他网页一样被搜索引擎抓取和索引,并允许用户从字面上搜索物理世界,或将智能对象的 URL 加入书签并与朋友分享。通过发布自己的博客或使用 Twitter 等服务的 API 相互交谈,网络连接的对象也可以变得活跃并与其他用户一起参与网络。
使用 IFTTT [4] 或 Node-RED [5] 等服务,用户可以创建混合现实世界设备的小逻辑规则,例如家中的传感器与云中的虚拟服务,例如 SMS 网关或天气预报服务。此类应用程序称为 物理混搭 。您可以在我的书《构建物联网》中学习允许您在事物之上创建物理混搭的原理和工具。
要真正理解为什么物联网代表了物联网发展的一个有趣的下一阶段,我们首先需要回顾一下这个领域直到今天的历史。为什么首先出现连接设备的想法?如果连接设备的全球网络的愿景如此有前途,为什么它还不存在呢?这些是我们 在本书中 试图回答的问题。
[1] 自动化协议的“简短”列表: https://en.wikipedia.org/wiki/List_of_automation_protocols