系统环境准备

Thingsboard物联网平台

平台概述

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

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

更多详细参考官网

安装概述

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 使有意参与的各方在开放与互操作的物联网方案中自由协作,无论他们是使用公开标准或私有方案。
Edgex网关接入Thingsboard物联网平台-初探
image

安装文档参考官网,推荐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)](https://spark.apache.org/),[Apache Storm (opens new window)](https://storm.apache.org/)和 [Apache Flink (opens new window)](https://flink.apache.org/)等)迁移到边缘端。eKuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。

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

Edgex网关接入Thingsboard物联网平台-初探
arch

推荐看中文文档

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#%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1

docker run --name kuiperManager --network=home_edgex-network -d -p 9082:9082 emqx/kuiper-manager:1.2.1
Edgex网关接入Thingsboard物联网平台-初探
construct

登录 kuiper-manager

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

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

主要参考文档

https://docs.edgexfoundry.org/2.2/examples/Ch-CommandingDeviceThroughRulesEngine/

核心思路:使用规则引擎eKuiper,基于Thingsboard物联网平台网关方式,使用规则引擎的数据格式模板生成平台所需格式json数据,采用mqtt接口把数据发送到Thingsboard物联网平台。

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

主要步骤

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

Thingsboard平台建立网关

Edgex网关接入Thingsboard物联网平台-初探
image-20211222132003165

创建 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/

Edgex网关接入Thingsboard物联网平台-初探
image-20211222133115264

添加docker内的 eKuiper 规则引擎

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

Edgex网关接入Thingsboard物联网平台-初探
image-20211222122245265
Edgex网关接入Thingsboard物联网平台-初探
image-20211222133447656

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

Edgex网关接入Thingsboard物联网平台-初探
image-20211222133345189

更多sql参考

https://docs.emqx.cn/kuiper/latest/sqls/streams.html

关键说明:如何使用 meta 函数抽取在 EdgeX 消息总线中发送的其它信息?

Edgex网关接入Thingsboard物联网平台-初探
image-20211222133735782
SELECT Temperature,meta(DeviceName) AS DeviceName,tstamp() as tm FROM demo
Edgex网关接入Thingsboard物联网平台-初探
image-20211222135252901

1、第一个参数:物联网平台mqtt地址及端口

2、第二个参数: 默认物联网平台mqtt主题,不能改。 主题:v1/gateway/telemetry

3、第三个参数:物联网平台前面建立的网关设备的token

4、数据转换模板,需要参考说明 eKuiper 中使用 Golang 模版 (template) 定制分析结果

{"{{.DeviceName}}":[{"ts":{{.tm}}, "values": {"temperature": {{.Temperature}}}}]}


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

物联网MQTT 网关 API 参考

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

Topic: v1/gateway/telemetry 

信息:

{
  "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 时间戳。

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

本文章来源于互联网,如有侵权,请联系删除!原文地址:Edgex网关接入Thingsboard物联网平台-初探