简单地讲,物联网 (IoT) 是一个由相连设备组成的生态系统:像“智能”的传统未连网(traditionally-unconnected)物体(比如桌面台灯、洗衣机)、简单的传感器(温度传感器、运动传感器)和传统的连网电子设备等。此生态系统提供了新的、令人兴奋的用例:来自日常生活中的物体,比如一氧化碳传感器可在检测到一氧化碳达到危险水平时,通过网络向您发送文本消息,帮助保护您和您家人的安全。关于更正式的定义,请参阅 IBM Internet of Things Foundation 。
有关该主题的资源很少,许多 IoT 服务提供商都没有很好地解决这个问题。这使得开发人员不得不仔细阅读 API 文档,无助地期待他们设置的配置将会起作用。
以下是此博客系列将要解决的难题:将单个设备连接到云,然后自信地将它扩展到数千个用户。在第一期的文章中,我将介绍 Bluemix 上的 Internet of Things (IoT) Foundation 服务的基本知识,以及如何将设备连接到它。
没有 IoT 设备?没关系!我们提供了一个简单的准备好部署的智能手机 Web 应用程序,在本系列的所有文章中,都将使用它演示来如何解决可伸缩性问题,无需纠缠细节。在后面几期文章中,您将了解用来扩展托管在 Bluemix 上的 IoT 应用程序的功能的有用服务,以及如何扩展这些服务来处理数千个同时连接的设备。
让我们开始吧!
回页首
在正式介绍 Internet of Things (IoT) Foundation 服务的操作部分之前,需要了解该服务的一些背景知识,才能理解它的工作原理。
IoT Foundation 是一个中心,它将您的 IoT 设备连接到云。它被用作一个抽象层来简化与设备的通信,并在某个位置集中管理它们。下图形象地描述了它:
有关的更多细节,请参阅 IBM Internet of Things Foundation .
没有这项关键服务,就需要单独地配置和管理设备,这会导致大量维护工作,而且使您几乎无法执行任何类型的扩展。IoT Foundation 还会处理一些关键特性,比如设备注册和身份验证,使用 MQTT 协议 和 TLS 安全而又快速地传输数据,以及使用时序历史 API 记录设备数据,等等。IoT Foundation 服务是将您的 IoT 应用程序扩展到数千台设备的幕后力量。
回页首
在整个文章系列中,我们的 IoT 设备都是一部智能手机,它运行着一个名为 IoT Phone 的 Web 应用程序。这个应用程序将访问智能手机加速、方向和位置信息;可将它视为便携式动作和运动跟踪器。
备注:如果您有自己的 IoT 设备,并希望通过 IoT Foundation 连接到 Bluemix,请查阅快速入门秘诀。
要了解 IoT Foundation 服务,可以单击下面的“Deploy to Bluemix”按钮:
在加载部署页面后,可以登录您的 Bluemix 帐户(或创建一个新帐户)来托管此应用程序。如果想要检查代码,请参阅 GitHub 上的 IOT-HTML5-Phone-Application 。
登录后,命名您的应用程序,选择想要将您的应用程序部署到哪个地区、组织和空间(如果愿意的话,还可以保留所有默认设置)。单击‘Deploy’并观察您的应用程序启动。在幕后,Bluemix 正在将应用程序代码部署到一个 Node.js 运行时中,创建一个新的 Cloudant 数据库和 IoT Foundation 服务组织。
在将应用程序成功部署到 Bluemix 后,您会看到这个确认屏幕:
单击‘View Your App’按钮打开为此应用程序创建的自定义 URL。抓住一部智能手机,在移动 Web 浏览器中打开此 URL(来自桌面浏览器的加速计和动作数据不是很有趣)。但不用担心智能手机应用程序的特殊部分的显示,我们特意保持应用程序简单,以便可以将精力集中在更有趣的问题上 - 扩展 IoT 应用程序。
打开一个移动浏览器后,就会看到一个要求输入设备 ID 的对话框。为您的设备提供一个唯一名称(例如,“My First Device”)并单击‘OK’。这将在 IoT Foundation 中创建一个具有此名称的设备。
在输入设备 ID 后,会看到来自您手机的数据被捕获并快速(10 条消息/秒)发布到 IoT Foundation 上:
干得好 – 您的 IoT 应用程序现在已在正常运行!您的设备正在与 IoT Foundation 服务交互并发布手机的运动所产生的传感器数据。如果您愿意的话,可以向您的 IoT Foundation 组织添加数万个设备,无需执行任何额外的配置;IBM Internet of Things Foundation 服务可开箱即用地进行扩展。
回页首
现在您已经将一个应用程序部署在 Bluemix 中,创建了一个 IoT Foundation 组织,然后向该组织添加了一个设备。要深入分析 Bluemix 中的应用程序和服务的架构,请访问我们的Bluemix 开发人员站点和 Internet of Things 站点 。
现在让我们看看刚创建的应用程序和服务。打开 Bluemix 仪表板 并单击刚创建的应用程序。它看起来应该类似于下面这个磁贴,但它具有您为应用程序提供的唯一名称:
在打开应用程序的主页后,您会看到有关该应用程序的关键信息,以及组成它的以下组件:
回页首
要查看智能手机浏览器创建的数据,可以单击‘Internet of Things’服务磁贴:
这将打开一个过渡页面,其中包含组织仪表板的链接,以及用于扩展和构建 IoT 应用程序的文档。单击‘Launch Dashboard’按钮为该服务打开您的组织仪表板页面:
在加载仪表板后,单击‘Devices’链接,您会看到连接到该服务的设备列表(在本例中,它将是在智能手机上访问应用程序的 URL 时在浏览器窗口提示符中输入的名称)。单击设备行上的加号 (+) 将会显示最后 10 条传入事件:
单击任何事件会显示一个包含该事件的传感器数据有效负载的模态对话框:
数据位于 IoT Foundation 中后,很容易从具有 IoT Foundation 所提供的实时和历史 API 的其他 Bluemix 应用程序和服务访问它,不过,这会留到第 2 部分进行介绍!与此同时,让我们想想从智能手机中收集的数据,以及我们能对它做些什么。门口的动作传感器?活动监视器?位置跟踪器?
回页首
本系列的第一期文章到此就结束了,我们了解了 Bluemix 上的 IoT Foundation 服务,并成功地连接了一个设备。在未来几期文章中,我们将在这个基本应用程序的基础上添加第三方服务(比如分析、DevOps 等),演示如何将它们扩展到数千个用户。届时,您可以进行一些有益的尝试!