为您的 IBM Bluemix 应用程序构建一个可以远程控制 Raspberry Pi 2 监视器
使用 Node.js 通过 IBM IoT Foundation 连接物联网项目中的设备和应用程序
许多围绕物联网 (IoT) 的宣传和炒作已成为潮流话题,关于云计算的 FUD(恐惧、不确定和怀疑)也形成了一些混乱的简单概念。不必气馁。作为一个 JavaScript 开发人员,您已经拥有了探索物联网发展的奇妙世界所需的所有技能。本教程将通过一个实践项目帮助您开始了解物联网。
在简单介绍物联网模式和 IBM 物联网基础 (IoT Foundation) 的一些基础知识之后,您将实现两种物联网模式。您需要设计一个能够远程控制的设备(一个 Raspberry Pi 2 设备),用于监视位于 IBM Bluemix 之上的某个应用程序。您可以编写一个应用程序,该应用程序能够从您的电脑命令行运行,打开和关闭对 Raspberry Pi 2 的远程监视。您的设备和应用程序将通过 IoT Foundation 进行连接和通信。您还需要在 Bluemix 上部署一个图形应用程序,该应用程序可以从您的监视器(或一些显示器,您可以部署任意数量的监视器)收集统计数据。您将使用 Node.js 来完成您的所有编码。
要继续学习后面的内容,您需要:
- 实例代码。下载 该代码并将它解压到您的电脑上。
- 一个 Raspberry Pi 2 设备。
- 一个链接到您的 IBM ID 的 Bluemix 帐户。
- Cloud Foundry 命令行接口 (CLI)。
- 基本熟悉 Linux® 命令行操作。
- 已经安装了 Git 并正在您的 Linux PC 上运行它。
三种 IoT 模式
您能使用智能通信设备网络做什么?在这个领域中,存在无限可能,有三种用例模式需要牢记:监视、远程控制,以及物与物之间的沟通(thing-to-thing communication)。
监视
图 1 说明了物联网设备收集的监控数据。
图 1. 通过 IoT 进行监视

在图 1 中,设备将会通过内置传感器收集数据或其他输入,并通过互联网发送它们,以便监测、收集、存储和分析应用程序。
监视示例包括:
- 运动传感器可以计算某个人所走的步数。
- 心率监视器可以报告某个人的心率,其他更复杂的生物传感器可以不断监测生命体征。可以在医学研究或其他离线分析中使用这些积累的数据。
- 车辆或无人机可以报告其地理位置、燃料消耗、加速和其他指标。
- 智能烤箱可以报告当前温度,正在烹制的肉的内部温度(通过肉类温度计)以及目前距离完成烹制的剩余时间。
- 房子四周的智能接近传感器可以发送房子的状态来触发某个相机、灯光或其他警告。
本教程中的示例使用了一个远程放置的 Raspberry Pi 2 设备来监视 Bluemix 托管应用程序的操作。
远程控制
第二种模式是远程控制设备,如图 2 所示。
图 2. 通过物联网实现远程控制

在图 2 中,一个遥控应用程序通过互联网向一个目标设备发送了一些命令。目标设备通过互联网监听命令,并在收到命令后执行它们,这些命令也许是控制发动机、开关、灯光,等等。
考虑:
- 从您办公室的电脑或智能手机打开您家的供暖系统
- 在数千英里之外驱动一台 LEGO 机器人通过比赛迷宫
- 一个调度程序,指挥运货车从仓库到达客户那里
本教程中的示例展示了如何快速编写一个应用程序,用它来开启和关闭远程放置的 Raspberry Pi 2。
物与物之间的沟通
物联网中的一种不太明显的操作模式是机器对机器的通信。在这种情况下,一个设备可以监测和控制另一个设备,如图 3 所示。
图 3. 通过物联网实现设备间的通信

在图 3 中,用一个代理程序帮助实现了设备间通信。一个设备可以通过互联网将包含针对另一个设备的收集数据或命令的消息发送到代理应用程序。然后,代理应用程序通过互联网将该消息转发回目标设备,以便执行或处理该消息。
设想:
- 一个智能功率计可以让房屋的光线变得昏暗一些,从而实现用户预设的功耗目标
- 一个土壤湿度传感系统,在适合浇水的适当时候发出信号
- 一个自动化的电视台程序编制器,可以根据实时监测评级来广播不同长度的电视节目版本
- 一个变色龙伪装面板,从智能环境传感器和摄像机组成的网络中获取数据,用不同的观点动态伪装自己
- 一个全球应用程序供应系统,根据从全球安装的设备中收集的测量响应时间来激活更多或更少的计算资源
实现设备间通信已超出了本教程的讨论范围。
IoT Foundation 概述
IoT Foundation 是您的设备(不管有多少或有多么简单)随时可以连接和沟通的云。图 4 显示了 IOT Foundation 在您连接的物联网中所扮演的角色。
图 4. IoT Foundation 的简化图

IOT Foundation 提供的附加价值包括:
“如果您的设备连接到了互联网上,那么它们就可以与 IOT Foundation 进行沟通。”
- 一个由可通过互联网连接的代理、信息中介和服务器组成的永远可用的网络。如果您的设备连接到了互联网上,那么它们就可以与 IOT Foundation 进行沟通。
- 对于定期发送监控数据的设备,几乎需要无限地存储数据,供您自己的软件和服务以后进行总结和分析。(在默认情况下,一个称为 Historian 的内部服务会处理数据存储。)
- 对每一个已注册设备以及托管在 Bluemix 或其他平台上的应用程序进行安全的身份验证访问。
- 您设备的入口点、积累的数据和 Bluemix 生态系统中的处理资源之间的可扩展的、托管的、可靠的高速互联。
- 一组丰富的工具、模板和技巧,可用于快速建立监控、远程控制或安全的代理物与物项目(proxied thing-to-thing projects)。
您还可以托管和管理自己的代理、信息中介和服务器。但安全性、管理以及确保网络和硬件的可用性可能成为一项令人生畏的全职工作,会导致您忽略了主要重点。
在 图 4 中,您可能注意到,IoT Foundation 由安全的 MQTT 网络和增值服务组成,可以通过
HTTP(类似 REST)API 来访问它们。MQTT(消息队列遥测传输的简写)是一种构建于 TCP 之上的轻量级协议。MQTT 为通过 TCP
交换消息提供了简单的发布-订阅(publish-subscribe )语义。这个成熟的版本协议已经发展了十多年。在 2013 年,已向 OASIS(国际标准组织)提交了该协议的 3.1
版本。随后,版本 3.1.1 被部署在现代全球物联网网络。MQTT 客户端部分可以轻松地在流行的 16 位和 32 位嵌入式处理器上实现(利用
TCP 支持)。具有最低要求的客户端用很少的代码开销就可以实现,这使得它成为依靠物联网的设备的理想选择。该协议本身也对 TCP
上的最小线上开销(on-the-wire overhead)进行了规定。MQTT 因其简单性而变得美丽。对于已经熟悉发布-订阅模式(比如
addListener
接口)的开发人员,MQTT 非常容易学习。了解 MQTT
价值的最好方式是使用它,相信您很快就会这样做。
一个将要监视的 Web 应用程序
您将要监视的应用程序(一个基本应用程序,代表了所有正在运行的 Bluemix 应用程序)的代码在示例代码的 bluemixwebapp 目录中,您可以将它部署到您的 Bluemix 环境。该应用程序显示了只有两个字段的一个简单表单,如图 5 所示。
图 5. 您将要监视的 Web 应用程序上的添加项表单

您的 Raspberry Pi 2 监视器将访问这个表单,填写 item 和 quantity 字段,然后提交它们。随后,该 Web 应用程序会显示一条确认消息(显示物品的名称和数量),类似于图 6。
图 6. 被监视 Web 应用程序上的结果页面

Raspberry Pi 2 监视器将抓取结果页面,在报告应用程序状态和 IoT Foundation 的访问时间之前验证确认消息。(我使用了访问时间,该时间意味着准备一个请求、发送请求、等待响应和抓取页面的总时间。响应时间(最大的变数)主要取决于访问时间中的变化。)
在 Cloud Foundry CLI 中,连接到 Bluemix,进行登录,然后将应用程序部署到您的 Bluemix 环境:
cf api https://api.ng.bluemix.net cf login -u user_name -o org_name -s space_name cf push your web app name -m 128M
通过在浏览器中访问 Bluemix Web 应用程序的 URL,验证 Web 应用程序已启动并正在运行。Raspberry Pi 监测代码必须知道这个用来访问 Web 应用程序的 URL,所以要更改示例代码的 raspi/monitortask.js 文件的第一行来反映这个名称:
var MonitoredBluemixURL = 'http://your web app name.mybluemix.net/';
第二代 Raspberry Pi
Raspberry Pi 2 是举世闻名的 35 美元 Linux 计算机的第二代。当 Eben Upton 及其朋友 第一次着手组建一些人们负担得起的电脑 来帮助孩子进行编程时,他们从未梦想过该电脑会在三年内 销售 500万台,成为计算机历史的一部分。
Raspberry Pi 2 是一个强大的计算平台,能够运行大多数现代操作系统,比如 Ubuntu 和 Windows® 10。与第一代 Raspberry Pi 不同,Raspberry Pi 2 有一个 900 mhz 的四核 ARM Cortex-A7 CPU(原来只有单核 ARMv6 CPU)和1GB 的 RAM(原来只有 512MB 和 256MB)。Raspberry Pi 2 比原来的平台强 6 - 20 倍。它还有四个用于鼠标、键盘及配件的 USB 接口;一个用于引导操作系统镜像的 MicroSD 卡插槽;一个用于直接连接到监视器或电视机的 HDMI 端口;和一个用于网络连接的以太网端口。图 7 在右边显示了 Raspberry Pi 2,它的旁边是第一代 Raspberry Pi。
图 7. 高性能的 Raspberry Pi 2 与经典版的对比

构建一个 Raspberry Pi 2 Bluemix 应用程序监视器
我们准备开始为 Raspberry Pi 2 上的一个 Bluemix 托管 Web 应用程序构建一个功能性监控器。在默认情况下,监视器试图每隔 60 秒访问被监控的 Bluemix Web 应用程序并测量访问时间。您可以通过 IOT Foundation 向您的物联网添加任意数量的监视器(在一个称为组织 的分组下面)。
将 Raspberry Pi 2 转换为一个远程监视器
您可以选择将在 Raspberry Pi 2 上运行的一个 操作系统镜像,包括 Debian、Ubuntu 和(即将发布的)Windows 10。Raspbian 是 Pi 的默认操作系统,是 Debian Wheezy for Pi 的一个自定义分支。在支持新的 Pi 硬件方面,Raspbian 版本通常领先于其他操作系统。本教程的代码是在 Raspbian 上开发的,开发日期为 2015 年 2 月16 日。
在 Raspbian 镜像启动并正常运行后,确保您在 Pi 和您的命令中心(您的 Linux PC 控制台)上安装了最新的可用 Node.js 版本。示例代码基于 Node.js v0.12.0。
从您的命令中心连接到 Raspberry Pi 2(例如,通过 ssh
或
telnet
),并将示例代码的 raspi 文件夹的内容(通过 scp
或
wget
命令)传输到您的 Raspberry Pi 2。运行在 Raspberry Pi 2 上的代码将:
- 进行身份验证,连接到 IoT Foundation MQTT 网络并保持连接。
- 使用
iot-2/cmd/+/fmt/+
主题来订阅命令,让远程监控可以暂停或重新开始。 - 每隔 60 秒,启动一个受控制的浏览器会话,通过填写和提交表单来访问 Bluemix 托管的 Web 应用程序,然后分析结果,验证 Web 应用程序是否正常工作。
- 将步骤 3 中的访问时间和状态作为一个
accesstime
事件发布到 IoT Foundation,通过iot-2/evt/itemsvc/fmt/json
MQTT 主题实现此发布。 - 如果收到暂停命令,则在当前周期停止监控 Web 应用程序。
- 如果收到重新开始的命令,则在下一个周期重新开始监测。
将 Raspberry Pi 监视器添加到您的 IoT organization
让 IoT Foundation working 为您工作的最快方式是通过 Bluemix 仪表板:
- 在您的浏览器中,登录到 Bluemix 并使用 SDK for Node.js 运行时创建一个新的 Cloud Foundry Web 应用程序(该应用程序以后会被图形可视化应用程序所替代)。您的应用程序必须在 Bluemix 上有一个惟一名称。
- 验证新建的应用程序已启动并正常运行。
- 返回到 Bluemix 仪表板。添加一个物联网服务,并将它绑定到新的应用程序。在必要的时候重新创建应用程序。
- 在应用程序的概述页面,单击物联网服务磁贴。
- 单击 Launch dashboard 来启动 IoT Foundation 仪表板。(您可能想要贴上标签供以后访问。)
- 在 IoT 仪表板上,您可以在顶部看到您组织的名称。请注意该名称,您以后需要对所有代码使用它。您的组织是您的 IoT 设备和应用程序的分组。
- 单击 People 选项卡。然后单击 Add Person 并添加您的 IBM ID,以便可以直接通过此 IOT Foundation 仪表板随时访问您的组织(而不必通过 Bluemix 仪表板)。
- 单击 Devices 选项卡。添加一个类型为
rasp2monitor
、设备 ID 为euro001
的设备,以便将 Raspberry Pi 2 监视器添加到您的组织。单击 Continue。 - 在最后的设备添加页面中,您可以看到您的凭证,包括一个
auth-token
,您的 Raspberry Pi 2 将使用它对 IoT Foundation 进行身份验证。复制这个auth-token
值。稍后需要使用它,该值不能重新生成。单击 Done。 - 单击 API Keys 选项卡并添加一个新的 API 密钥。您的密钥和身份验证令牌将会显示,如图 8 所示。注意这些凭证,这些凭证无法重新生成。远程控制应用程序会使用这些凭证来跨设备暂停或重新开始监控。
图 8. 在 IoT Foundation 仪表板中生成新的 API 凭证

连接到 IoT Foundation MQTT 网络
MQTT 构建于 TCP 之上。MQTT 连接可以使用 TCP 或TLS 连接。监视器代码使用了 TLS:
tls://myorg.messaging.internetofthings.ibmcloud.com:8883
TLS 向您的连接添加了端到端加密。设备与 IoT Foundation 平台之间的数据传输也是加密的,采用的加密方式与常见的浏览器 HTTPS 流量的加密相同。TLS 还会确认您确实连接到了指定的服务器。TLS 1.2 和 MQTT 3.1.1 目前在 IoT Foundation 中都受到支持。
此外,您可以通过 TCP URL 使用未加密的连接:
tcp://myorg.messaging.internetofthings.ibmcloud.com:1883
Raspberry Pi 2 还有计算空间的能力。但在最低配置设备上,额外的 TLS 加密计算加载可能是重量级的,这使得未加密的 TCP 成为惟一可行的选择。
对于 MQTT over TLS,您还可以使用以下代码,而不是使用端口号指定一个 TCP 或 TLS URI:
mqtts://myorg.messaging.internetofthings.ibmcloud.com
对于 MQTT over TCP 连接:
mqtt://myorg.messaging.internetofthings.ibmcloud.com
IoT Foundation 主题空间
在通用的 MQTT 客户端(可以是一台设备或一个应用程序)中,可以没有限制地发布和订阅任何主题。主题只是任何格式的文本字符串。发布到某个主题的任何消息(也是任何格式的文本字符串,通常称为有效负载)都被发送给所有用户。
IoT Foundation 规定了受限制的主题空间(不同应用程序和设备的规定有所不同),以确保设备不会出现数据泄漏(防止间谍或流氓设备窃取别人的数据)。当某个设备发布和订阅 MQTT 主题时,它可以访问应用程序无法访问的不同主题空间。
图 9 显示了在访问 IoT Foundation 时一个设备与和一个应用程序的不对称功能。
图 9. IoT Foundation 上的应用程序与设备的功能

在图 9 中,经过身份验证的应用程序可以将命令发送到组织中的任何设备或应用程序,并接收来自这些设备和应用程序的事件;不过,一个经过身份验证的设备只能订阅它自己的命令和事件。
在 IoT Foundation 中,您可以通过使用主题过滤器来区分命令。例如,某个应用程序用来订阅来自某个监控设备的主题可能是:
iot-2/type/rasp2monitor/id/euro001/evt/itemsvc/fmt/json
设备类型 (rasp2monitor
) 和设备 ID (euro001
) 都是显式声明的。
应用程序可以使用通配符 ('+'
) 来订阅原来多个设备的事件:
iot-2/type/+/id/+/evt/itemsvc/fmt/json
发送到某个设备(或从某个应用程序发送)的命令主题可能如下所示:
iot-2/type/rasp2monitor/id/euro001/cmd/operation/fmt/json
请注意对设备类型 (rasp2monitor
) 和 ID (euro001
) 的显式引用。
对于要发布某个事件的设备,不需要在主题中指定设备类型或 ID,因为 IoT Foundation
已经通知了它们。例如,euro001
设备可以通过主题发布一个事件:
iot-2/evt/itemsvc/fmt/json
或订阅通过一个主题发送到设备的命令:
iot-2/cmd/operations/fmt/json
在 piclient.js 中,监视代码会订阅并检查某个暂停命令。但是,您可以轻松地扩展该代码,添加更多命令来满足自己的需要。
IoT Foundation 消息格式
在 MQTT 中,发送到某个主题的消息(又名有效负载)可以是任何格式的文本字符串。借助 IoT Foundation,您还可以使用由任何格式的文本字符串组成的有效负载。但是,如果您采用的格式符合 IoT Foundation 消息格式,增值服务(比如 Historian 服务)就会变得可供您使用,因为 IoT Foundation 可以解析您的数据。
IoT Foundation 消息格式只需要 d
的顶级节点中的 UTF-8 编码的 JSON
对象。d
节点中的字段可以是数字或字符串。包含一个 ISO8601 时间戳字符串的 ts
顶级节点是可选的。在 piclient.js 中,发送到 IoT Foundation 的消息需要符合 IoT Foundation
格式。下面是一个由 piclient.js 发送的典型的访问时间消息:
{ "d":{ "accesstime":2248, "status":"ok" }, "ts": "2015-03-27T01:39:47.789Z" }
客户端身份验证
您的 Raspberry Pi 2 监视器 MQTT 客户端通过一个 auth-token
对 IoT Foundation
进行身份验证(参见 将 Raspberry Pi Monitors 添加到您的 IoT
organization 的第 9
步)。该令牌只在您第一次注册您的设备时生成一次。它被加盐,并在后一代上进行散列处理,不能恢复(因为 IoT Foundation
不存储实际的令牌值)。如果您的凭证丢失或被破坏,那么您可以撤销该凭证,然后重新注册您的设备来获取新令牌,但是,为了成功连接设备,您还必须为物理设备获得新的令牌(通过物理检索设备,或打开设备进行远程访问,然后按照下一段中的指示来更改代码)。
在 Raspberry Pi 2 上,编辑 piclient.js 文件并修改 connect()
调用,以便使用您自己的
auth-token
和组织名称(您在 将 Raspberry Pi 监视器添加到您的
IoT 组织 的步骤 6 中保存的名称):
var client = mqtt.connect( 'tls://your organization.messaging.internetofthings.ibmcloud.com:8883', { clientId: 'd:your organization:rasp2monitor:euro001', username: 'use-token-auth', password: 'your auth-token' } );
安装一个 webkit 堆栈
piclient.js 使用 monitortask.js 模块来执行监督工作。monitortask.js 模块试图通过 PhantomJS webkit 堆栈访问将被监控的 Web 应用程序。这个工具链(包括 PhantomJS、CasperJS 和 Spooky)允许编写基于 Node.js 的脚本,并自动化无头 webkit(它类似于一个没有 GUI 的浏览器)。PhantomJS 是具有控件 API 的无头 webkit(浏览器引擎)。CasperJS 使得大量使用这些 API 成为可能,同时它还提供了高级编码来实现测试和自动化。Spooky 引导 CasperJS,并充当 Node.js 与 CasperJS 实例之间的一个远程过程调用 (RPC) 桥梁。
在您可以使用 PhantomJS 堆栈之前,必须在 Raspberry Pi 2 上安装它。确保您遵循了以下顺序:
- 安装 PhantomJS。在撰写本文时,ARM Linux 二进制文件不是自动化 PhantomJS 构建的一部分。幸运的是,感谢
Raspberry Pi 社区的 Nils Måsén (piksel),针对 PhantomJS 的二级制文件现已 可用。确保这个二进制文件在您的
PATH
中。 - 使用
npm install -g casperjs
全局安装 CasperJS。(必须为 Spooky 全局安装 CasperJS,让其正常工作。)CasperJS 安装会检测 PhantomJS 是否已安装,而且不会试图下载功能性的 Intel 二进制文件。 - 通过运行
npm install
在 piclient.js 所在的目录中安装 Spooky。
启动监视器
现在,您已经为开始监视正在运行的 Web 应用程序做好了准备:
node piclient.js
为了保持 piclient.js 一直在 Raspberry Pi 2 上运行,甚至在生存系统关机和重启的时候也在运行,您可以使用一个 Node.js 进程管理器,比如 PM2 或 forever。
远程暂停和重新开始监控
暂停(或重新开始)监控的命令行工具代码位于示例代码的 remotecontrol 目录中。您可以从您的命令中心 (PC) 控制台(而不是在一个 Raspberry Pi 2 监控设备上)运行此工具。
在使用此工具之前,您必须使用您的 API 密钥凭证和您组织的名称来更新 remotecontrol/sendcmd.js 中的代码,该凭证来自 将 Raspberry Pi 监视器添加到您的 IoT 组织 的步骤 10:
var client = mqtt.connect( 'mqtts://your organization.messaging.internetofthings.ibmcloud.com', { clientId:'a:your organization:adminapp', username:'your API key', password:'your API auth token' } );
运行远程控制工具的通用语法是:
node sendcmd.js suspend | resume device ID
例如,要暂停设备 I euro001
中某个正在运行的监视器上的监视:
node sendcmd.js suspend euro001
要重新开始相同设备上的监视:
node sendcmd.js resume euro001
sendcmd.js 是作为一个应用程序连接到 IoT Foundation(也就是说,它可以向某个组织中的所有设备发送命令);然后,它向指定的设备发布指定的操作命令。
从 Historian 服务获取访问时间统计数据
图 10 显示了来自某个监控领域的 euro001
监视器的访问时间图。您可以看到,访问在第一个数据点上放缓,并在暂停监测期间(通过 sendcmd.js 远程暂停)出现了一个中断。
图 10. 访问时间统计数据的图形可视化

这个可视化应用程序调用了 IoT Foundation HTTP API 来访问您的 IoT 组织和设备信息,并获取 Historian 服务捕获的访问时间数据。这个 Node.js Express 应用程序使用 Rickshaw 绘图来显示图形。
该应用程序来自 IBM Messaging GitHub 存储库。您可以通过以下步骤将其部署到您的 Bluemix 环境:
- 运行
git clone https://github.com/ibm-messaging/iot-visualization.git
。 - 将目录更改为 iot-visualization 并编辑 manifest.yml 文件,以便使用您自己的应用程序名称(来自 将 Raspberry Pi 监视器添加到您的 IoT 组织 的步骤 1 的应用程序名称)。此更改会导致部署覆盖到默认应用程序。该应用程序已经将您的 IoT Foundation 组织绑定到它,API 密匙凭证可从该环境中获得。
- 运行
cf push
命令来部署您的应用程序。
结束语
只需几个小时,您就可以完成一个实际的物联网项目,充分展示您的 JavaScript 和 Node.js 技能。与本教程中构建的监视器类似的监视器可以应用于某些领域(也可能应用于全球),以查找 Bluemix 应用程序的典型用户位于何处。然后,您可以定期监控和分析应用程序的正常运行时间和访问时间,获得有价值的洞察,了解地理位置分散的用户群所体验的服务水平。
能够创建、监控和控制成千上万个位于任何地方的智能设备,新的应用程序还能帮您完成哪些梦想?这是典型的物联网杀手级应用问题。有史以来第一次,我们可以充分利用我们积累的开发和设计方面的智慧,创造一个由连接的物理设备组成的新宇宙——控制它们,与它们交流,并协助它们完成真正的任务。采用这种方式,我们可以改变世界。
下载资源
- 示例代码 (cl-raspberrypi-iot-remote-monitoring-app.zip | 13KB)
相关主题
- Raspberry Pi:在官方网站了解有关 Raspberry Pi 的所有信息。
- MQTT:查看官方 MQTT Version 3.1.1 OASIS 标准或阅读 原始 MQTT V3.1 规范。在 mqtt.org 用户社区网站 上获得最新的 MQTT 消息。
- MQTT 代理器和服务器 以及 客户端库:找出有关在编程语言和环境中可用的 MQTT 代理器、服务器和客户端库的信息。
- IBM Internet of Things Foundation:从开发人员的角度了解 IoT Foundation。查看除了基于 MQTT 的访问之外的可用的 管理和历史数据访问 HTTP API。
- IBM IoT Foundation 文档:深入研究 IoT Foundation 文档。在这里,您将了解一个访问 IoT Foundation 的 应用程序 的功能与可用于连接到 IoT Foundation 的某个 设备 的功能的比较。
- MQTT.js 浏览针对本教程中使用的 Node.js 的 MQTT.js 客户端实现提供的丰富 API。
- PM2 和 forever:了解如何让 Node.js 程序即使在关机和重新启动时仍然运行。
- PhantomJS、CasperJS 和 Spooky:获取受欢迎的 webkit 堆栈。
- phantomjs-raspberrypi:从 piksel 的存储库中获得准备好运行的 PhantomJS 二进制文件。
- Raspberry Pi OS 镜像下载:获得可用于您的 Raspberry Pi 2 的最新可用操作系统镜像,包括 Raspbian 分布。
- IBM Messaging GitHub 存储库:获得 IoT Foundation Visualization Dashboard(用 Node.js 编写) 的最新更新。
- 在 作者的 GitHub 存储库 中获得示例源代码的最新更新。