首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Informix 物联网应用示例-2

Informix 物联网应用示例-2

生成访问 IoTF 的认证信息此处生成的认证信息是应用程序访问 IoTF 时需要提供的校验信息。
在 Dashboard 界面,点击之前创建的 IoT 服务的图片链接进入到图 4.IoTF 欢迎界面;
点击‘Launch dashboard’进入到图 5.IoTF 概览界面
点击‘Access’进入 IoT 服务的访问方式管理界面
图 9.IoTF 访问管理界面点击‘API Keys’进入到 IoT 服务的 API Key 管理界面,在该界面底部点击‘Generate API Key’来生成 App 访问 IoTF 所需的 API Key 及 Token。由于生成的 API Key 及 Token 仅在生成时显示一次,所以请务必记录。
搭建 Bluemix 端环境1.创建 Time Series Database 服务
(1)在 Dashboard 页面点击‘Use Service or API’链接进入服务的选择列表页面,在 Data & Analytics 分类中找到 Time Series Database 服务,如下图 10 所示。
图 10.Time Series Service 选择界面(2)点击‘Time Series Database’链接进入服务的创建界面,如下图 11 所示。
图 11.Time Series Service 添加界面在该界面中输入服务名称,其他字段使用系统默认选择即可,然后点击‘CREATE’按钮,系统会完成服务的创建。
2.部署 Java Web App
Java Web APP 以 Subscriber 的角色通过 MQTT 协议接收 Gateway 上的 Python App 发布的时间序列数据并将其保存到 Time Series Database 中;该 APP 同时还具有在 Time Series Database 中进行 DDL 和 DML 操作的功能,可以进行时间序列表的 CRUD 操作,因此可以利用其对数据库中保存的数据进行查询和分析。
附件中‘Java Web App.zip’解压缩后可以看到该 Java Web App 的 Eclipse 项目文件夹,用户可以将其导入 Eclipse 来查看和修改源代码。
(1)修改源代码
找到 MqttApp.java 文件,做如下修改:
将变量 DEFAULT_DEVICE_TYPE 修改为‘注册设备(Gateway)’步骤注册设备的设备类型,如‘t1’。
将变量 AUTH_METHOD 和 AUTH_TOKEN 的值分别修改为‘生成访问 IoTF 的认证信息’步骤生成的 API Key 及 Token。
(2)利用 Eclipse 导出该 Java Web App 的 war 包
(3)上传 war 包至 Bluemix
此处会用到 CF 上传工具,下载地址为:
本例是在 Windows 操作系统上进行 CF 上传,上传步骤如下:
通过 CMD 命令,打开命令行界面
通过 CD 命令进入到 war 包所在目录
连接到 Bluemix
1
cf api https://api.ng.bluemix.net




登录到 Bluemix
1
cf login -u xxx -o xxx -s dev




该命令中-u 参数为用户在 Bluemix 的账号 ID,-o 参数为账号的 ORG(组织),-s 为账号的 Space(空间)
上传 war 包
cf push TSDemo -p TSDemo.war -b
其中,push 后面 TSDemo 为上传后在 Bluemix 上创建的 APP 的名称,TSDemo.war 为从 Eclipse 导出的 war 包的名称,-b 后面的连接无须修改。
上传完成后,如看到 App 处于‘Running’状态,则表示 App 已上传成功。
(4)绑定 IoTF
1
cf bind-service TSDemo Internet of Things-test




其中,TSDemo 为 Java Web App 的名称,‘Internet of Things-test’为之前创建的 IoTF 的名称。
只有在绑定 IoTF 后,Java Web App 才可以访问 IoTF。
(5)绑定 Time Series Database Service
1
cf bind-service TSDemo Time Series Database-rn




其中,TSDemo 为 Java Web App 的名称,‘Time Series Database-rn’为之前创建的 Time Series Database Service 的名称。
只有在绑定 Time Series Database Service 后,Java Web App 才可以访问 Time Series Database Service。
3.创建时间序列数据表
利用 Java Web APP 在 Time Series Database 创建时间序列数据表来保存 Gateway 端传来的时间序列数据。
在 Dashboard 界面,点击在 Java Web App 的图片链接进入到图 12 所示界面
图 12.Java Web App 管理界面点击 Routes 链接进入到 Java Web App 运行界面
图 13.Java Web App 运行界面


依次输入附件‘CreateTimeseries.sql’的 SQL 语句并点击‘Submit Query’按钮来创建时间序列表。
4.初始化数据处理
通过该步骤将 Java Web APP 注册为 IoTF 的 Mqtt Client,以 Subscriber 的角色订阅 Gateway 端应用程序向 IoTF 发布的事件消息。初始化成功后,Java Web APP 可以实时捕捉到 Gateway 端应用程序向 IoTF 发布的温度和湿度数据并将其保存到上一步骤创建的时间序列表中。
搭建 Gateway 端环境关于 Gateway 的资源要求,请参考‘示例资源要求’部分的说明。
下面各个部分的操作均是在 Gateway 端的操作。
1.部署 Informix
用户如果没有 Informix 的授权版本,可以到 IBM 官网上去下载 Informix 的开发或试用版本,需要注意的是要使用 Informix 11.7 及以上版本。
关于 Informix 的安装可参考 IBM Informix Knowledge Center,链接如下:
2.运行 Informix,且确认其处于正常运行状态。
3.部署 Java App
Java App 包含 Sensor Simulator 的功能,其模拟传感器以一定的时间间隔来不断生成温度和湿度数据,同时该 App 会把生成的温度和湿度数据保存在本地的 Informix 数据库。
附件‘Java App.zip’解压缩后可看到 simulate_device.java 文件,需要用户根据自己 Gateway 端 Informix 的配置信息来修改该文件中的数据库连接字符串以及账号信息,如下面红色部分为需要用户修改的信息。
清单 1. 数据库连接字符串
1
2
private static String URL_STRING=
"jdbc:informix-sqli://127.0.0.1:9088/sensordb:INFORMIXSERVER=vmserver3;"; private static String USER = "informix"; private static String PASSWORD = "informix1";




修改源代码后,用户需要对 simulate_device.java 文件进行重新编译。
该步骤需要设定的环境变量如下:
将 JDK 可执行程序所在路径加入到 PATH 环境变量
PATH=$PATH:/ JDK Dir/bin
将 JAVA Class 文件所在目录以及 Informix 驱动文件路径加入到 CLASSPATH 环境变量
CLASSPATH=’ /JAVA Class Dir:/Informix JDBC Driver File Path’
4.部署 Python App
Python App 对 Informix 数据库中存储的温度和湿度数据按照一定时间单位进行简单地聚集分析,然后以 Publisher 的角色将聚集结果(仍然为时间序列数据)通过 MQTT 协议发布到 Bluemix 的 IoTF。
(1)安装数据库驱动程序
Python App 访问本地的 Informix 数据库需要安装驱动程序,附件中‘InformixDB-2.5.tar.gz’为驱动程序安装包,关于具体安装步骤可参考其中的 Readme 文件。
(2)配置访问 IoTF 所需凭证信息
附件‘Python App.zip’解压缩后可看到 device.cfg 文件,该文件存放的是 Gateway 访问 IoTF 所需的凭证信息,按照‘注册设备(Gateway)’步骤生成的凭证信息对该文件进行相应修改即可。
(3)设定环境变量
Python App 利用 InformixDB 驱动访问本地 Informix 时需要设定的环境变量如下:
清单 2.InformixDB 相关环境变量
1
2
3
4
5
INFORMIXSERVER=xxx
INFORMIXDIR=/opt/informix/
INFORMIXSQLHOSTS/opt/informix/etc/sqlhosts.xxx
LD_LIBRARY_PATH='/opt/informix/lib/esql:/opt/informix/lib'
INFORMIXLIB=/opt/informix/lib/




5.运行 Gateway 端 App
(1).运行 Java App
在 simulate_device.class 所在目录下执行如下命令:
1
Java simulate_device 1




该命令表示每隔 1 秒钟产生一条温度和湿度数据并存到 Informix 数据库中,其中数值 1 可以修改为其它数值。
(2).运行 Python App
在 Python App 所在目录下执行如下命令:
1
python connect_iotf.py




执行后,Python App 将以一分钟为间隔来不断查询出 Informix 数据库中存储的当前时间点前一分钟内最高温度和平均湿度数据并以 Publisher 的角色将查询结果(仍然为时间序列数据)通过 MQTT 协议发布到 Bluemix 的 IoTF。
在 Bluemix 上进行简单数据分析Java Web APP 以 Subscriber 的角色通过 MQTT 协议来不断接收 Gateway 上的 Python App 发布的时间序列数据并将其保存到 Time Series Database 中;该 APP 同时还具有在 Time Series Database 中进行 DML 操作的功能,因此可以利用其对数据库中保存的数据进行查询和分析。
进入到图 13 所示 Java Web App 运行界面后,可以输入相应 SQL 查询语句,然后点击‘Submit Query’按钮来进行简单的数据分析,如:
1
2
3
4
Select Max(tmp) temperature,Min(rh) humidity from v_dht11_rh_tmp  Where
data_date Between datetime( 2015-11-01 00:00:00.00000) year to fraction(5) And

datetime(2015-12-31 00:00:00.00000) year to fraction(5);




结束语本文介绍了 Informix 物联网应用的简单实现,通过该示例用户可以了解物联网应用的流程及其涉及的概念和相关技术,同时也可以直观的理解 Informix 在物联网应用中扮演的角色及其价值。Informix 占用资源少,具有自动内存管理、自动空间配置等自我管理功能,具有专门用来处理时间序列数据的数据库引擎,而且可扩展性好,功能强大,这些特点使其无论在边缘设备还是在云端应用均有独特的优势,从而充分适于物联网应用,而且是物联网解决方案中的重要组成部分。
返回列表