暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

物联网开源平台——Kapua

程序媛的梦想 2018-03-23
1509

第一部分:Eclipse Kapua的介绍

Eclipse Kapua是Eclipse IoT开源总项目下的一个子项目,是面向物联网设备和智能传感器的模块化集成平台,侧重给IoT网关及智能边缘设备提供服务。简单地说就是一个可互操作的物联网云平台,用来管理和集成设备及其数据。

第二部分:简单的部署

通过五个容器就可以实现(要按顺序启动):

$ docker run -td --name kapua-sql -p 8181:8181 -p 3306:3306 kapua/kapua-sql:0.3.2
$ docker run -td --name kapua-elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:5.4.0 -Ecluster.name=kapua-datastore -Ediscovery.type=single-node -Etransport.host=_site_ -Etransport.ping_schedule=-1 -Etransport.tcp.connect_timeout=30s
$ docker run -td --name kapua-broker --link kapua-sql:db --link kapua-elasticsearch:es --env commons.db.schema.update=true -p 1883:1883 -p 61614:61614 kapua/kapua-broker:0.3.2
$ docker run -td --name kapua-console --link kapua-sql:db --link kapua-broker:broker --link kapua-elasticsearch:es --env commons.db.schema.update=true -p 8080:8080 kapua/kapua-console:0.3.2
$ docker run -td --name kapua-api --link kapua-sql:db --link kapua-broker:broker --link kapua-elasticsearch:es --env commons.db.schema.update=true -p 8081:8080 kapua/kapua-api:0.3.2

运行着的五个容器:


先看看效果:

登录页面:

(默认的端口是8080,初始用户名是kapua-sys,初始密码是kapua-password.)


欢迎页:

从页面的左侧菜单栏我们可以看到这个平台包括了欢迎页、设备、连接、数据、登录组、标签、用户、角色、子用户、设置、关于这些部分。

(1)设备页



(2)连接页


(3)数据页

等等。


第三部分:Simulator的使用

一句话介绍:就是用来模拟设备,可以用来对平台进行测试。Simulator的官方文档地址:https://www.eclipse.org/kapua/docs/0.3.0/user-manual/en/simulator.html

方式一、直接使用源码编译

Simulator源码地址:https://github.com/ctron/kura-simulator既然是Eclipse的项目那就用Eclipse编辑器好了(试过Intelli J IDEA,报错,缺少各种依赖)。

运行代码的步骤

1. 用Eclipse打开Simulator的源码

2.设置host(就是kapua所在的机器的IP)



3. 运行

4. 打开网页查看

(1)在设备里可以看到:

(2)在连接里也可以看到:


方式二、将源码生成jar包后使用

  1. 生成jar包

  2. 通过命令行生成设备实例

java -jar ~/Desktop/test.jar -n 
1
-b tcp://kapua-broker:kapua-password@172.16.0.151:1883 -c 1

参数说明:-n 后面的是Client ID的第一个值,-c 后面是第二个数值。

例如:Client ID要显示为sim-2的命令行是:

java -jar ~/Desktop/test.jar -n 
sim-
-b tcp://kapua-broker:kapua-password@172.16.0.151:1883 -c
2
以下是通过命令行运行了多个设备实例:


方式三、通过Docker容器导出jar包,再用jar包启动模拟器实例(使用DockerHub里的镜像,源码和一、二的可能不同)


一、方法

通过官方的simulator镜像启动一个容器,然后从容器里拷出jar包。然后新建一个example.json文件,模拟一些数据。

二、步骤

1. 把镜像下载下来(版本号是latest。这步可以跳过,直接运行下面的docker run 命令)

$ docker pull kapua/kura-simulator 

2. 运行simulator容器

$ docker run -d kapua/kura-simulator:latest

3. 进入容器查看jar包的路径(如果bash不行,用下面的sh替换,因为不一定所有的docker都安装了shell)

$ docker exec -it 容器ID /bin/bash 

可以看到docker里的jar包的路径为:/opt/kapua-simulator-kura/kapua-simulator-kura-0.3.0-SNAPSHOT-app.jar

4. 退出容器:

$ exit

5. 从容器里拷贝jar包

(从容器复制到主机的格式:sudo docker cp containerID:container_path host_path)

$ docker cp 567a279ee41d:/opt/kapua-simulator-kura/kapua-simulator-kura-0.3.0-SNAPSHOT-app.jar .

(末尾的”.”表示拷贝到主机的当前路径)

然后,自己创建一个example.json文件

$ sudo vim example.json

(example的地址:https://raw.githubusercontent.com/eclipse/kapua/develop/simulator-kura/src/test/resources/example1.json或者直接在文档https://www.eclipse.org/kapua/docs/0.3.0/user-manual/en/simulator.html里找)

example.json的内容如下:

{
   "applications": {
       "example1": {
           "scheduler": { "period": 2000 },
           "topics": {
               "t1/data": {
                   "positionGenerator": "spos",
                   "metrics": {
                       "temp1": { "generator": "sine1", "name": "value" },
                       "temp2": { "generator": "sine2", "name": "value" }
                   }
               },
               "t2/data": {
                   "metrics": {
                       "temp1": { "generator": "sine1", "name": "value" },
                       "temp2": { "generator": "sine2", "name": "value" }
                   }
               }
           },
           "generators": {
               "sine1": {
                   "type": "sine", "period": 1000, "offset": 50, "amplitude": 100
               },
               "sine2": {
                   "type": "sine", "period": 2000, "shift": 45.5, "offset": 30, "amplitude": 100
               },
               "spos": {
                   "type": "spos"
               }
           }
       }
   }
}

json文件说明:(1) 每个模型是由一个“applications”,它代表Kura实际应用;(2)每个应用程序由scheduler(调度器)、 topics(主题)和generators(生成器)组成。scheduler定义何时刷新generator的值。然后,topics将生成的数据映射到topics和metrics(度量)。

3. 通过命名行运行jar包启动模拟设备实例(目录要和自己的文件路径对应;若要改client ID, 请改-n和-c后面的参数)

$ java -jar ~/Desktop/kapua-simulator-kura-0.3.0-SNAPSHOT-app.jar -n sim- -b tcp://kapua-broker:kapua-password@172.16.0.151:1883 -c 1 -f ~/Desktop/example.json

方式四、直接通过Docker容器启动模拟设备实例(推荐使用)

这个镜像的官方说明:https://hub.docker.com/r/kapua/kura-simulator/截图如下:

每新运行一个实例,改一下--name后面的名字(不重复就行),改一下“KSIM_NUM_GATEWAYS=“后面的数值。(这里执行以下命令的机器和kapua所在的机器可以是不同的机器)
$ docker run --name kura-simulator-
01
-d -e KSIM_BROKER_URL="tcp://kapua-broker:kapua-password@172.16.0.151:1883" -e KSIM_SIMULATION_URL="/etc/simulator/example.json" -e KSIM_BASE_NAME="
Dev-
"  -e KSIM_NUM_GATEWAYS="
1
"  -v
/Users/lxn/Desktop/
:/etc/simulator/ kapua/kura-simulator



参数说明:(1) /etc/simulator/example.json(无需改):这个是那个jar文件运行时的环境变量KSIM_SIMULATION_URL的值,这个值是和映射到容器内的example.json文件一致的;(2) /users/lxn/Desktop/: 这个是本机example.json所在目录;(3) /etc/simulator/ :这个是指定的,容器内example.json所在目录,自动生成的。注意/etc/simulator/和kapua/kura-simulator之间有一个空格。
文章转载自程序媛的梦想,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论