物联网或 IoT 指的是越来越多连接网络的设备,它们每天捕获或生成海量信息。对于用户,这些设备包括移动电话、可穿戴运动设备、家用取暖和空调系统等。在工业环境中,这些设备和传感器可在制造设备、供应链和车内零部件中找到。IoT 可让我们所有人的生活变得更轻松。为了轻松地开发和部署所有规模的 IoT 解决方案,IBM 创建了 IBM Watson IoT Platform。
在本教程中,您将学习如何使用 Watson IoT Platform 构建一个简单的 IoT 解决方案,不仅将智能电话转换为传感器(读取和发送数据),还转换为执行器(读取和处理数据)。
您将在智能电话上使用一个 IoT Starter Mobile 应用程序。为了将智能电话转换为传感器,我们将构建一个 IoT 应用程序来读取从智能电话发送的 加速计 值,并在这些值达到某个阈值时以一个具体的操作作为反应。为了将智能电话转换为执行器,我们将构建一个 IoT 应用程序来向智能电话发送特定的命令,然后智能电话能对它收到的命令做出反应。
您需要以下设备或帐户:
开始之前,检查以下信息:
我们的 IoT 解决方案的架构的总体视图如下图所示:
在本教程中,您将在 Bluemix 中创建一个 IoT 应用程序,该应用程序将管理其他两个 IoT 应用程序:
1
我们在 Bluemix 中的主要 IoT 应用程序将是 IoT 解决方案中的后端应用程序。我们的后端应用程序将读取、接收和解释传入的包含传感器数据的有效负载消息。此外,它将基于满足的某些条件,定义和发送 IoT 命令到执行器。
Internet of Things Platform Starter 样板自动将 Internet of Things Platform 服务和 Cloudant NoSQL Database 服务添加到您的应用程序。它还包含一个针对您的应用程序的 Node-RED 运行时环境。
2
您需要在 Watson IoT Platform 中注册您的智能电话,然后才能将它连接到 IoT。Bluemix 上的 IoT Platform 服务自动将一个 IoT 组织分配给您。IoT 组织是一个空间,拥有将设备连接到 IBM Watson IoT Platform 并进行管理,以便您的应用程序可访问它们的实时和历史数据。
Android
或 iPhone
。IoT Starter Mobile 应用程序要求使用这些单词之一作为智能电话类型。 就这么简单!您的智能电话已向 Watson IoT Platform 注册。您仍需要将它连接到 Watson IoT Platform,但在这么做之前,需要在智能电话上安装和配置 IoT Starter Mobile 应用程序。
3
您将使用 IoT Starter Mobile 应用程序读取和发送来自智能电话的传感器数据,以及将智能电话转换为可接收和运行命令的执行器。此应用程序是使用 iOS 和 Android 平台上的原生语言开发的。借助这个移动应用程序,您可以发布以下事件:
3a
如果您是一位经验丰富的 iOS 开发人员,可以从 ibm-watson-iot GitHub 项目下载 IoT Starter Mobile app for iOS 演示应用程序,将它导入 Xcode 开发环境,然后自行构建 .ipa
包文件。这里的步骤演示了如何使用 iTunes 手动安装 .ipa
包文件。
.ipa
文件。iTunes 会自动打开(如果它已安装在您系统上)。 根据智能电话上的 iOS 版本,您可能被提示信任国际商业机器公司开发人员。在 iOS 智能电话的 General Settings 中,向下滚动并选择 Device Management 。选择 International Business Machines ,然后单击 Trust "International Business Machines" 链接。您会在应用程序列表中看到 IoT Starter,它将列为已验证。
3b
如果您是一位经验丰富的 Android 开发人员,可以从 ibm-watson-iot GitHub 项目下载 IoT Starter Mobile app for Android 演示应用程序,将它导入 Android 开发环境,然后自行构建 .apk
文件。这里的步骤演示了如何手动安装 .apk
文件。
.apk
文件。 无需键入 URL,即可在本文中使用 QRcode。
iot-starter-for-android.apk
文件下载到 Android 智能电话上。 Downloads
文件夹中找到该文件,选择 .apk
文件来安装它。 4
将 IoT Starter Mobile 应用程序安装到智能电话上后,您需要为它配置您的 IoT 凭证,并将该应用程序连接到 Watson IoT Platform。
myProfile
。单击 Save ,返回到登录窗口。您的凭证现已保存,可供您下次连接时使用。 5
现在您的智能电话已注册,您已确认它将加速计数据发送到 Watson IoT Platform,我们需要使用 IoT 服务将 IoT 应用程序连接到 Watson IoT 平台。然后就可以开始在我们的 IoT 解决方案中使用智能电话数据。
收到的传感器数据为 JSON 格式。IoT Starter Mobile 应用程序使用 MQTT 协议发送数据。
6
现在,我们将更新 Node-RED 流来使用传感器数据。
我们将执行以下步骤:
转到您的 Node Red 流编辑器。您将通过拖动合适的节点并连接它们来创建下面这个流,如下图所示:
acceleration_y
,我们将添加并配置一个功能节点。在面板的功能部分,将一个函数节点拖到工作区。双击功能节点,为它配置以下值:
getAcceleration_y
作为此节点的名称。 return {payload:Math.abs(msg.payload.d.acceleration_y)};
acceleration_y
值上创建一个触发器,我们将添加并配置一个开关节点。在面板的功能部分,将一个开关节点拖到工作区。将功能节点连接到开关节点。双击开关节点,为它配置以下值:
testAcceleration_y
作为此节点的名称。 msg.payload
作为属性。 0.5
,为 Android 指定 7
。 stopping after first match
。 Acceleration_y_exceed_message
作为此节点的名称。 msg.payload
作为属性。 Wow!Is your phone falling? Its acceleration y = {{payload}}!
Limit Rate
作为此节点的名称。 Limit rate to
。然后将速率设置为 1
并选择 Minute
。 acceleration_y
值和通知消息。 6a
如果您有一个 Twitter 帐户,可通过推文形式发送通知。
6b
如果您有一个 SMTP 电子邮件帐户,可以让应用程序发送一封包含智能电话正在跌落的通知的电子邮件。您可能需要配置电子邮件的安全设置,以便允许您的应用程序发送电子邮件。例如,如果您使用的是 Gmail 帐户,则必须在 Sign-in & security 设置中启用 Allow less secure apps 选项。
7
目前为止,您的智能电话充当着传感器。但是,您可以使用 IoT Starter Mobile 应用程序将智能电话转换为执行器,只需让智能电话接收并执行命令即可。
IoT Starter Mobile 应用程序可管理 3 种事件:
该应用程序可接收和执行 4 种命令:
7a
7b
accel
事件。 touchmove
事件。 text
事件。 alert
,然后单击 Submit 按钮。一个弹出框显示了一条警报。您的智能电话正在接收 alert
事件。 light
,然后单击 Submit 按钮。智能电话上的灯光将打开;该命令可能并不适用于所有 Android 智能电话,但适用于所有 iOS 智能电话。您的智能电话正在接收 light
事件。可以再次单击 Send Text ,键入 light
,灯光将会关闭。 在下一步中,我们将创建一个 IoT 应用程序,将智能电话用作传感器和执行器的概念结合起来。
8
一些 Android 智能电话能很好地解释 light
命令,但不是所有 Android 智能电话都可以做到这一点。一个替代解决方案是使用 color
命令。两个解决方案的代码均已提供。
现在您已看到如何将智能电话转换为传感器或执行器,让我们创建一个 IoT 应用程序来将智能电话同时转变为二者!在此场景中,我们在每次水平翻转智能电话时打开或关闭它的灯光。
我们将测试来自智能电话的加速度 Z,检查此值是正值还是负值并保存状态。
light
命令到电话来打开灯光。 light
命令到电话来关闭灯光。 Detect Flip
。 var accelerationZ = msg.payload.d.acceleration_z; var isAlreadySwitchedOn = context.get('isAlreadySwitchedOn')|| false; // For Android reverse this test !!! if (accelerationZ > 0) { if (!isAlreadySwitchedOn) { isAlreadySwitchedOn = true; msg.eventOrCommandType = "light"; msg.payload = JSON.stringify({"d":{"text":"Received light on message"}}); } } else { if (isAlreadySwitchedOn) { isAlreadySwitchedOn = false; msg.eventOrCommandType = "light"; msg.payload = JSON.stringify({"d":{"text":"Received light off message"}}); } } context.set('isAlreadySwitchedOn', isAlreadySwitchedOn); return msg;
switch
节点指定一个名称。例如,将它命名为 Flip Detected
。 msg.eventOrCommandType
。 is not null
。 stopping after first match
。 light
命令。在字段中填入以下值:
IBM IoT Out
。 Bluemix Service
。 Smartphone Command
。 text
。 json
。 {"d":{"value":"text"}}
如果您的 Android 智能电话没有正确解释 light
命令,可以将功能节点中的代码替换为以下代码。它提供了一个替代解决方案,该解决方案使用的 color
命令会在每次水平翻转电话时更改 IoT Starter Mobile 应用程序的背景颜色,而不是打开或关闭智能电话的灯光。
var accelerationZ = msg.payload.d.acceleration_z; var r = 0.0; var b = 0.0; var g = 0.0; a = 1.0; if (accelerationZ < 0) { // green r = 102.0; g = 255.0; b = 102.0; } else { // purple r = 178.0; g = 102.0; b = 255.0; } msg.eventOrCommandType = "color"; msg.payload = JSON.stringify({"d":{"r":r,"b":b,"g":g,"alpha":a}}); return msg;
在本教程中,学习了如何创建和部署 IoT 应用程序,如何轻松地将智能电话转换为传感器和执行器设备,如何轻松地将它连接到 IBM Watson IoT Platform,以及如何从智能电话发送和接收数据。
通过使用 IBM Bluemix Platform 和 Watson IoT Platform,可以加快开发速度,减少上市准备时间。企业可以快速连接其设备(他们自己的一组传感器和/或执行器),构建 IoT 应用程序,解决特定的业务问题,以及变革其公司和行业。