将Edgex网关接入Thingsboard物联网平台

2021-12-24 11:42:05 浏览数 (2)

将Edgex网关接入Thingsboard物联网平台

系统环境准备Thingsboard物联网平台平台概述安装概述Edgex foundry开源边缘计算物联网软件框架将Edgex网关接入Thingsboard物联网平台的关键组件eKuiper安装确认推荐安装eKuiper 管理控制台将 Edgex 设备数据上报关键步骤主要步骤Thingsboard平台建立网关创建 EdgeX 流并建立规则登录eKuiper 管理控制台添加docker内的 eKuiper 规则引擎建立规则,发送物联网平台物联网遥测上传API参考说明

系统环境准备

Thingsboard物联网平台

平台概述

在众多的开源物联网平台项目中,Thingsboard在体系架构先进性、功能完整性、文档完备性方面,应是首屈一指。

物联网平台ThingsBoard,作为大屏开发工具,只要拖拉一些内置控件或直接定制开发控件的方式,可快速提供较好的可视化效果。

更多详细参考官网

安装概述

1.参见官方文档

https://thingsboard.io/docs/user-guide/install/cluster/docker-compose-setup/

2.推荐参考

语雀文档 基于docker-compose部署步骤 https://www.yuque.com/qingchuntian/tfod6d/ktkxg2

Edgex foundry开源边缘计算物联网软件框架

Edgex foundry是一个Linux 基金会运营的开源边缘计算物联网软件框架项目,该项目的核心是基于与硬件和操作系统完全无关的参考软件平台建立的互操作框架,使能即插即用的组件生态系统,统一市场,加速物联网方案的部署。EdgeX Foundry 使有意参与的各方在开放与互操作的物联网方案中自由协作,无论他们是使用公开标准或私有方案。

安装文档参考官网,推荐docker方式。 https://cn.edgexfoundry.org/ 建议安装版本不带token ,方便后面调试开发,如:yml文件带'no-secty.'关键字 curl https://raw.githubusercontent.com/edgexfoundry/edgex-compose/ireland/docker-compose-no-secty.yml -o docker-compose.yml; docker-compose up -d

将Edgex网关接入Thingsboard物联网平台的关键组件

LF Edge eKuiper - 超轻量物联网边缘数据分析软件

eKuiper安装确认

LF Edge eKuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。eKuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 Apache Spark (opens new window)Apache Storm (opens new window)Apache Flink (opens new window)等)迁移到边缘端。eKuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于源 (Source)SQL (业务逻辑处理), 目标 (Sink) 的规则引擎来实现边缘端的流式数据处理。

该软件在安装Edgex foundry时候已经默认安装到docker里面

推荐看中文文档 https://docs.emqx.cn/kuiper/latest/

推荐安装eKuiper 管理控制台

从 eKuiper 0.9.1 版本开始,每发布一个 eKuiper 新版本,会随之发布对应版本的管理控制台。本文以一个实际例子来说明如何使用管理控制台对 eKuiper 节点进行操作与管理。有这个工具方便写eKuiper 处理规则,具备交互界面

1.使用docker安装需指定软件版本号,安装文档里面可能不是最新的版本,没有规则编辑界面的 2.安装说明 https://docs.emqx.cn/kuiper/latest/manager-ui/overview.html#架构设计

代码语言:javascript复制
docker run --name kuiperManager --network=home_edgex-network -d -p 9082:9082 emqx/kuiper-manager:1.2.1
  • UI 端:可视化的界面,便于用户操作
  • Kuiper-manager:管理控制台,本质是一个反向 HTTP 代理服务,提供用户管理,权限验证等服务。既可以部署在云端,也可以部署在边缘端
  • eKuiper 实例,被管理的 eKuiper 节点实例,Kuiper-manager 可以同时管理多个 eKuiper 节点

登录 kuiper-manager

登录时需要提供 kuiper-manager 的地址,用户名、密码。如下图所示:

  • 地址:http://$yourhost:9082
  • 用户名:admin
  • 密码:public

使用该工具,直接管理现有docker内部的eKuiper 节点,端口是 59720 ;非官网教程那个端口

将 Edgex 设备数据上报关键步骤

主要参考文档 https://docs.edgexfoundry.org/2.2/examples/Ch-CommandingDeviceThroughRulesEngine/ 核心思路:使用规则引擎eKuiper,基于Thingsboard物联网平台网关方式,使用规则引擎的数据格式模板生成平台所需格式json数据,采用mqtt接口把数据发送到Thingsboard物联网平台。

本文档不会涵盖 EdgeX 或 LF Edge eKuiper 的基本操作。读者应具备以下基本知识:

  • 获取并启动 EdgeX。有关如何使用虚拟设备服务获取和启动 EdgeX,请参阅快速入门
  • 运行 eKuiper 规则引擎。请参阅EdgeX eKuiper 规则引擎教程以了解 eKuiper 和 EdgeX 的基础知识。

主要步骤

  1. Thingsboard平台创建网关设备,接收 EdgeX 端发送过来数据,并明确mqtt端口默认1883,同时复制网关token备用。
  2. 启动 eKuiper 并创建 EdgeX 流,在规则引擎中建立mqtt转发规则。
  3. 创建规则,使用模版生成Thingsboard平台所需格式json数据,并发送对应mqtt接口。

Thingsboard平台建立网关

创建 EdgeX 流并建立规则

创建 EdgeX 流并建立规则3种方式 1.通过命令方式,参考https://docs.edgexfoundry.org/2.2/examples/Ch-CommandingDeviceThroughRulesEngine/ 2.通过Edgex foundry UI管理界面,通过交互界面的方式,建立EdgeX 流和规则,可查询规则状态等信息。但目前支撑简单规则,不支持数据模板规则。 3.在笔者实践中,通过eKuiper 管理控制台最新版本,可实现 eKuiper 规则引擎全面管理。

为方便大家阅读,下面以界面操作方式介绍

登录eKuiper 管理控制台

http://localhost:9082/

添加docker内的 eKuiper 规则引擎

链接成功后,建立流demo,选择流类型为edgex

建立规则,发送物联网平台

  • 新建规则,id名称不能重复,sql规则按照业务需求取出监测指标和设备名称

更多sql参考 https://docs.emqx.cn/kuiper/latest/sqls/streams.html 关键说明:如何使用 meta 函数抽取在 EdgeX 消息总线中发送的其它信息?

代码语言:javascript复制
SELECT Temperature,meta(DeviceName) AS DeviceName,tstamp() as tm FROM demo
  • 动作可以有多个及多种类型,下图是动作发送物联网平台参数配置

1、第一个参数:物联网平台mqtt地址及端口 2、第二个参数: 默认物联网平台mqtt主题,不能改。 主题:v1/gateway/telemetry 3、第三个参数:物联网平台前面建立的网关设备的token 4、数据转换模板,需要参考说明 eKuiper 中使用 Golang 模版 (template) 定制分析结果

代码语言:javascript复制
{"{{.DeviceName}}":[{"ts":{{.tm}}, "values": {"temperature": {{.Temperature}}}}]}
​
​

物联网遥测上传API参考说明

物联网MQTT 网关 API 参考

为了将设备遥测发布到 ThingsBoard 服务器节点,请将 PUBLISH 消息发送到以下主题:

代码语言:javascript复制
Topic: v1/gateway/telemetry 

信息:

代码语言:javascript复制
{
  "Device A": [
    {
      "ts": 1483228800000,
      "values": {
        "temperature": 42,
        "humidity": 80
      }
    },
    {
      "ts": 1483228801000,
      "values": {
        "temperature": 43,
        "humidity": 82
      }
    }
  ],
  "Device B": [
    {
      "ts": 1483228800000,
      "values": {
        "temperature": 42,
        "humidity": 80
      }
    }
  ]
}

其中设备 A设备 B是您的设备名称,温度湿度是遥测键,ts是以毫秒为单位的 unix 时间戳。

来源 | 知识星球 | 物联网低代码平台的价值 声明:如转载,请注明本文链接,谢谢合作。

0 人点赞