软件要求
- IBM Bluemix 帐户
- Java Cloudant Web Starter 样板包
- Business Rules 服务(将此添加到 Java Cloudant Web Starter 样板包中)
- Internet of Things 服务(将此添加到 Java Cloudant Web Starter 样板包中)
- Node.js 运行时应用程序(绑定已添加到 Java Cloudant Web Starter 包的服务 – 即 Business Rules 和 Internet of Things 服务,另外绑定 Cloudant 服务。)
- 能够访问 Maximo 实例的 REST 服务
回页首
硬件要求
- IBM Internet of Things 注册设备
回页首
架构概览
机器条件监视的逻辑组件
该机器条件监视应用程序可分解为以下逻辑组件:
- 机器条件监视运行时环境
- 机器条件监视用户界面(UI)
- 机器条件监视数据库
机器条件监视应用程序与以下外部系统进行交互:
- IBM IoT Foundation
- IBM Maximo Asset Management
机器条件监视的物理组件
该机器条件监视应用程序在 IBM Bluemix 上运行,由以下组件组成,这些组件均可在 IBM Bluemix 上获得:
- Liberty for Java
- Cloudant DB 服务
- Business Rules 服务
- Internet of Things 服务
- Node.js 运行时环境
回页首
安装机器条件监视应用程序的前提条件
Bluemix:
在 IBM Bluemix 中使用 Java Cloudant Web Starter 样板代码创建一个 Web 应用程序。
- 将一个 Business Rules 服务添加到您的应用程序中。
- 将一个 Internet of Things 服务添加到您的应用程序中。
添加这些服务后,您的应用程序看起来应类似于下图:
记下每个绑定的服务的所有 VCAP 凭据。在本示例中,该应用程序绑定了以下服务:
- Cloudant
- Business Rules
- Internet of Things
因此,有 3 组 VCAP 凭据(每组对应一个服务)。
Cloudant:
机器条件监视需要以下 Cloudant 数据库实例才能运行:
- invokedrules
- thingsmaxactionmappings
- thingsmaxassetcentricmappings
- thingsmaxdevicecentricmappings
- thingsmaxrulecentricmappings
这些数据库由机器条件监视应用程序在启动后创建。但是,如果未创建上述数据库,可以手动创建它们。
回页首
Business Rules 服务
Business Rules 是使用 Rules Designer 创建的。然后,可以将 Business Rules 部署在规则服务上,并且可以将它用在 Bluemix 上。
- 单击绑定到您的机器条件监视应用程序的 Business Rules 服务。记下 URL、用户名和密码。您需要使用它们在 Eclipse IDE 中创建 Rule Execution Server。
- 安装带 Designer 插件的 Eclipse。
- 安装后,在 Eclipse 中打开 Rules 透视图。
- 从以下 GitHub 位置的机器条件监视规则导入规则项目:
机器条件监视规则
- 右键单击您的 RuleApp 项目,选择 RuleApp > Deploy。
-
- 单击 Deploy 后,选择 Replace RuleApp version。
-
- 选择“Create a temporary Rule Execution Server configuration”并输入您的 Bluemix Business Rule 服务的 URL、用户名和密码。
-
- 单击 Finish。
- 记下该 REST 服务 URL。(该 URL 可通过从 Bluemix > Services > Business Rules > Decision Services 选项卡中选择该应用程序来获得。这提供了所有公开为 REST URL 的规则的超链接。单击上面部署的适当服务的超链接后,即可获得该 REST URL。)
- 使用您的用户名和密码登录到 Business Rules Server 网页来测试您的部署。
- 示例规则项目包含一个简单规则 - 检查温度是否高于 250 度。
- 要测试您的部署,可以使用下面给定的 JSON 有效负载,向规则服务发出一个 REST POST 请求。
- 下面给出的 POST 请求不会导致发生任何操作,可视为“安全的事件”。
{ “device”:{ “myName”:“bearing01″, “temp”:220 }, “asset”:{ “assetID”:“wheel01″, “assetType”:“wheel wagon” }, “org”:{ “orgID”:“myorg” } }
- 下面给出的 POST 请求要求执行一个操作。该操作可以是生成工作订单。
{ “device”:{ “myName”:“bearing01″, “temp”:280 }, “asset”:{ “assetID”:“wheel01″, “assetType”:“wheel wagon” }, “org”:{ “orgID”:“myorg” } }
- 上述两个请求都返回一个 JSON 响应,但较低温度的请求的“message”字段没有内容,而拥有较高温度的事件拥有类似“The temperature is beyond acceptable range of 250 for device of”的内容。
回页首
安装机器条件监视引擎
要安装机器条件监视 Web 应用程序,需要将 machineconditionmonitoring-web.war 文件推送到您的 Bluemix 帐户。
此应用程序在 IBM Bluemix 上需要的最小磁盘空间量为 1GB。需要的最少内存量为 512MB,但您可能希望设置比此更高的内存量 - 例如 2GB。您为磁盘空间和内存分配的值取决于您的环境。
您可以使用 manifest.yml 文件更改磁盘空间和内存值。
确保您安装了最新版的 cf 工具。如果没有最新版本,可完成以下步骤来安装 cf 工具。
- 可以在 github.com 上的以下位置找到最新版本: https://github.com/cloudfoundry/cli/releases
- 选择适合您平台的安装程序并下载它。
- 解压安装程序并运行可执行代码。
完成以下步骤来安装机器条件监视应用程序:
-
在本地系统的命令提示符上,使用下面这条命令连接到 Bluemix。
cf api https://api.ng.bluemix.net
-
使用下面这条命令登录到 Bluemix。
cf login –u {Bluemix userid} –o {Bluemix organization} –s {Bluemix-space}
- 从下面的 GitHub 位置下载机器条件监视引擎的源代码:
机器条件监视引擎
- 在 Eclipse IDE 中使用源代码构建一个 war 文件,并将它命名为“machineconditionmonitor-web.war”。
-
将该 Web 应用程序推送到您的 IBM Bluemix 帐户,并提供一个唯一的应用程序名称(下面的示例使用“machineconditionmonitor-web”作为应用程序名称)。
cf push machineconditionmonitor-web
- 在 Bluemix 中,单击 Dashboard > 选择该应用程序(此示例使用应用程序名“machineconditionmonitor-web”) > Files and Logs 并导航到“server.xml”位置。此位置位于“app/.liberty/usr/servers/defaultServer/server.xml”下。
- 从 Bluemix 下载“server.xml”。
- 在本地系统中创建一个名为“defaultServer”的文件夹。
-
在此文件夹中添加“server.xml”文件,并将以下条目添加到“server.xml”文件中。
<webContainer deferServletLoad="false"/>
在“server.xml”中将该应用程序的名称更改为您提供的名称。
- 创建一个名为“apps”的文件夹,并将“machineconditionmonitoring-web.war”文件添加到该文件夹中。
-
将该 war 文件推送回 IBM Bluemix,提供您之前使用的唯一应用程序名称(下面的示例使用了“machineconditionmonitor-web”作为应用程序名称)
cf push machineconditionmonitor-web –p defaultServer
创建资产设备映射和创建操作映射的 REST 服务
机器条件监视应用程序公开了以下 API。使用这些 API,您可以:
- 创建资产设备映射。
- 创建操作映射。
资产 API
HTTP 方法 | 描述 | 有效负载 | 返回值 | URL |
GET /assetMappings/assets | 返回一个资产数组 | – | JSON 数组 | http://URL/assetMappings/assets |
GET /assetMappings/assets/{assetId} | 返回单个资产 | – | JSONObject | http://URL/assetMappings/assets/{assetId} |
POST /assetMappings/assets | 将一个资产持久保存在 Cloudant 中。请注意此资产应存在于 Maximo 中 | JSONObject | – | http://URL/assetMappings/assets |
DELETE /assetMappings/assets/{assetId} | 从 Cloudant 删除一个资产 | – | – | http://URL/assetMappings/assets/{assetId} |
操作 API
HTTP 方法 | 描述 | 有效负载 | 返回值 | URL |
GET /actionMappings/action | 返回一个操作数组 | – | JSON 数组 | http://URL/actionMappings/action |
GET /actionMappings/action/{actionId} | 返回单个操作 | – | JSONObject | http://UEL/actionMappings/action/{actionId} |
POST /actionMappings/action | 将一个操作持久保存在 Cloudant 中。请注意,此操作应使用有效的用户名和密码指向一个有效的 URL | JSONObject | – | http://URL/actionMappings/action |
DELETE /actionMappings/action/{assetId} | 从 Cloudant 删除一个资产 | – | – | http://URL/actionMappings/action/{actionId} |
回页首
安装机器条件监视
要安装机器条件监视 UI,您需要将机器条件监视 Node.js 应用程序推送到您的 Bluemix 帐户。
完成以下步骤来安装机器条件监视 UI:
根据“安装机器条件监视应用程序”的 1-3 步中的说明,这一步要求您已经拥有‘cf’工具
- 在 IBM Bluemix 中的 Catalog 部分,在 Runtimes 部分选择 SDK for Node.js。
-
- 输入一个唯一应用程序名称,例如 “ThingsMaxUI” 并单击 Create。
-
创建应用程序后,绑定(而不是添加)您之前创建的服务:
a.Business Rules 服务
b.Cloudant NoSQL DB 服务
c.Internet of Things 服务
- 下图显示了绑定了服务的 Node.js 应用程序。
-
-
为机器条件监视 Web 应用程序创建一个用户定义的环境变量
a. 选择 Environment Variables 选项卡
b. 单击 User-Defined
c. 添加一个名为“runtimeapp”的环境变量,其中包含您的机器条件监视 Web 应用程序的 URL。下面的链接 http://machineconditionmonitor-web.mybluemix.net 是机器条件监视 Web 应用程序的 URL。
-
-
在您本地系统的命令提示符上,使用下面这条命令连接到 Bluemix
cf api https://api.ng.bluemix.net
-
使用下面这条命令登录到 Bluemix
cf login –u {Bluemix userid} –o {Bluemix organization} –s {Bluemix-space}
- 从下面的 GitHub 位置下载机器条件监视:
机器条件监视 UI
- 通过提供唯一的应用程序名称,将您的 Node.js 应用程序推送到您的 Bluemix 帐户(在下面的例子中,我提供了 “machineconditionmonitor-GUI” 作为名称)。
- cf push machineconditionmonitoring-GUI
- 在您的机器条件监视引擎中,调用 REST 服务,执行一次 POST 调用来在 Cloudant 数据库中填入特定于 Maximo 的数据。在此示例中,REST 服务在“machineconditionmonitor-web”上运行,所以要调用的 REST 服务为 http://machineconditionmonitor-web.mybluemix.net/actionMappings/action 。
- 下面给出了要使用的有效负载。
- {
“thingsActionPassword”:“maximopassword”,
“thingsActionUserId”:“maximouser”,
“actionId”:“maximo”,
“thingsActionURL”:“https://maximoURL/maximo_b1dk”
} - 将有效负载内容替换为适合您的实例的内容。
- 在 Cloudant 数据库中,调用绑定到机器条件监视引擎的 REST POST 服务 (https://username-for-cloudant-on-bluemix:password-for-cloudant-on-bluemix@username-for-cloudant-on-bluemix.cloudant.com/invokedrules/_index) 并使用以下有效负载。
- {“index”:{“fields”:[“deviceID”]}}
- 将 REST URL 中的用户名和密码替换为适合您的 Cloudant 数据库的 URL。
回页首
流程测试
- 浏览机器条件监视 UI 的 URL。从下拉列表中选择组织和资产。
- 最初,资产和设备之间不存在映射。单击“Add Device Mapping”创建映射。
- 上面的操作将显示 Bluemix 环境中针对同一个组织,用于 IoT Foundation 的设备列表。选择需要映射到资产的设备。这会显示规则链接。
- 添加规则的 REST URL,我们已在 Business Rules 服务中获得它。
- 从注册的设备发送一个设备事件,该设备的事件参数被设置为比最大允许阈值更高的值,以便生成一个工作订单。
- 工作订单生成后,可在机器条件监视 UI 中看到它。