SuperVessel超能云 (https://ptopenlab.com/cloudlabconsole/#/)是一个基于OpenStack的开放的云平台,基于POWER/OpenPOWER架构, 提供物联网、大数据、FPGA加速以及虚拟资源。本文讨论如何利用超能云的虚拟计算资源, 模拟传感器产生信号, 进行物联网应用开发。解决了目前在物联网应用平台测试/开发中, 必须配套传感器的不便。
一、利用Docker模拟传感器输入
1. 登录SuperVessel超能云, 在主页面点击"申请虚拟机",申请云主机。
2. 进入云主机界面后, 点击“创建云主机”, 申请新的计算资源。
3. 配置云主机系统参数。
新的主机创建成功后, 会在列表中显示。主机所需的用户名和密码, 已发至用户登录时使用的邮箱。 点击“Web控制台”,进入终端界面(Console).
4. 使用系统自动分配的用户名和密码, 登录主机。登录后, 立即修改用户密码。
5. 将示例程序从远程拷入, 命令如下:
scp -r [email protected]:~/cometDockerDemo ./
输入密码: heatonli12345
拷贝开始后, 会看到拷贝进程。待拷贝完成后, 会看到在本机目录下, 会有一个新的文件夹“cometDockerDemo".这说明拷贝已经成功。
6. 配置程序的运行环境, 并获得创建主机的MAC地址。 获取“root”权限。输入命令如下:
su root
输入密码,密码在登录的邮箱中.获得Root权限后,进入"cometDockerDemo"的子目录“python-mosquitto”, 会发现程序"setup.py", 输入如下安装命令:
python setup.py install
安装完成后, 本机就可以支持MQTT的开源版本“Mosquitto”, 来完成数据的传输。
7. 更改随机数产生程序, 设置MAC地址的读取。 利用"ifconfig"命令, 得到创建主机的MAC地址和相关信息。
返回“cometDockerDemo”目录, 编辑mqttClientControl.py, 修改MAC地址的读取序列。在程序中找到“iface”, 将原地址改为MAC地址前的一串字符, 本例程为“ns2f450a2e-dd”, 用户需要根据自己主机创建情况, 输入相应的序列号。
至此, 创建主机并准备传感器数据的工作已完成。下面我们要创建物联网应用。
二、创建物联网应用
1.注册/登录SuperVessel超能云物联网平台
2. 点击“Streams“选项, 创建新的数据流。
注意, 定义的数据流要同在Docker中运行的程序mqttClientControl.py中定义的数据流名称一致, 本示例定义为Random.
待数据流创建好后, 会在列表中显示。
3. 点击Device Type, 添加设备类型。
点击”+“, 添加新的设备类型。设备类型的名称要同在mqttClientControl.py中定义的设备名称一致, 本示例定义的设备类型为DockerDemo。注意, 设备的型号和制造商一栏一定要填入内容, 否则不能激活设备类型。
新的设备类型添加成功后, 会在设备类型列表中显示。关联数据流和设备类型。点击设备类型上的”+Stream", 添加定义好的数据流“Random"到设备类型”DockerDemo"。
4. 点击”Devices“, 添加设备。
点击“+”, 添加DockerDemo类型下的新的设备。设备的“DeviceID"由物联网服务平台自动下发。而设备的序列号需要从所起虚拟计算资源中读取。在前面的步骤中, 我们已经拷贝了虚拟资源的MAC地址, 现在就添加在设备的"Serial Number"中。
设备添加完成后, 会在相应的设备列表中显示出新添加的设备。
5.在创建的虚拟资源web console中运行随机数产生程序, 命令如下:
./mqttClientControl.py
程序执行, 建立MQTT连接, 向物联网服务平台上报数据。
6.此时, 点击新建的设备, 就已经能收到虚拟资源上报的数据。
点击“Details", 获取数据历史信息。
7.点击”Application Editor", 创建新的物联网应用。
8.为应用添加背景图片, 并在图中设置热区。
点击最右边图标,设定热区。物联网服务平台提供相应的工具, 可以让用户自己设定传感器的位置(热区)。
热区和背景图片设计好后, 显示如下。
在物联网应用列表中, 显示新的应用。
9. 将热区和设备向关联。
点击热区, 将定义好的设备拖至设备框内, 建立设备与热区的关联关系。
关联成功后,显示如下。数据已经能够显示在热点区域。
10. 点击“Application View”, 可以看到创建成功的应用以及二维码。扫描二维码, 可以在手机上看到开发好的应用。
至此, 基于Docker模拟传感器的物联网应用就开发好了。