IOTCS+Ekuiper搭建物联网边缘计算平台

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOTCS+Ekuiper搭建物联网边缘计算平台相关的知识,希望对你有一定的参考价值。

背景介绍

IOTCS 是专为物联网平台而设计的工业智能网关。自从 2020 年 10 月以来,我们从需求调研,设计,定型,研发,测试经过漫长的沉淀与孵化,最终顺利实现工业智能网关最初的设想。我们凭借创新设计理念、快捷的安装以及部署、易用的扩展编程接口和强大的产品性能博得了相关用户的青睐。

本文介绍如何使用IOTCS快速搭建边缘计算平台,通过简单修改几行配置文件,就可以快速搭建一个基于 IOTCS + MQTT SERVER + Ekuiper + TDengine 边缘计算平台。架构如下图:

边缘计算方案整体测试技术选型:

  • Prosys OPCUA 模拟器

  • IOTCS 自研物联网网关

  • MQTT SERVER =》 mosquitto

  • ekuiper => LF Ekuiper 边缘计算平台

  • 数据存储 =》 TDengine

  • 操作系统=> ubuntu 【共两台虚拟机:1.ubuntu destop 2. ubuntu server】

搭建流程及详细说明:

一、安装Prosys OPCUA 模拟器

【注:我们以用OPC UA驱动作为案例讲解】

  • 下载Prosys 模拟器,地址如下:

https://www.prosysopc.com/products/opc-ua-simulation-server/
  • 提供版本型号

  • 下载完成后,在ubuntu desktop 操作系统上安装

sudo chmod u+x ./prosys-opc-ua-simulation-server-linux-x64-5.2.2-9.sh
sudo ./prosys-opc-ua-simulation-server-linux-x64-5.2.2-9.sh

最终界面如下图:

  • Prosys OPC UA Simulation Server设置【确保模拟服务器处在running状态】

上图红框说明有两个模式

第一个是基本模式 【指界面tab界比较少,比较简洁】

第二个是专家模式 【指界面tab界比较多,比较复杂】

  • 添加模拟变量信息

  • 查看OPC UA 模拟器Endpoints 信息,方便客户端连接测试

endpoint:opc.tcp://<ip>:53530/OPCUA/SimulationServer
#修改opcua地址,如下图
opc.tcp://192.168.233.153:53530/iotcs
  • Prosys OPC UA 设置完成后,验证配置是否正确

二、安装IOTCS

IOTCS软网关相关功能如下,例如:

1、采集配置

    a、驱动管理

    b、设备管理

    c、设备变量管理

2、规则引擎

    a、规则列表

    b、资产管理

3、设备日志

4、用户管理

【以在ubuntu server 上安装为例】

  • 使用docker方式安装IOTCS

docker run --restart always --name iigateway -dit -p 8001:8001 -p 9001:9001iotcs/igateway:0.6.1
  • 使用tar.gz方式安装IOTCS

 1、下载Linux运行环境:安装.net core3.1

 2、官方下载地址:

https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-aspnetcore-3.1.24-linux-x64-binaries

3、安装运行环境

tar -zxvf aspnetcore-runtime-3.1.24-linux-x64.tar.gz -C /opt/netcoresdk/
ln -s /opt/netcoresdk/ /usr/local/bin
验证是否安装成功:dotnet --info

 4、下载release 版本,将压缩包解压到指定的位置

进入到App目录后,执行如下命令:dotent IOTCS.EdgeGateway.Server.dll
  • 安装IOTCS WebUI

sudo apt install git
#将web ui 界面文件下载到指定的目录
git clone https://github.com/IOT-CS/WEB.git
#安装nginx 
docker run -dit -p 80:80 --restart=always  --name iotcs-nginx -v/opt/iotcs_web/WEB:/usr/share/nginx/html:rw  nginx:1.20.1-alpine

修改web ui 配置文件【修改api IP 地址和websocket ip 地址】

vim /opt/iotcs_web/WEB/static/api_config.js

 修改完成后,重启web ui nginx docker

  • 登录WEB UI

  登录地址:http://<ip>/#login

注:如看到上述界面代表安装成功了。详细请参看官网

首先配置南向设备功能

  • 配置驱动管理,如下图:

驱动名称:给当前驱动建立一个名称

驱动类型:选择驱动,本次测试使用的OPCUA

  • 添加设备组,如下图:

首先,需要添加设置组,设备组有两个参数:

设备组名称:给设备组建立一个名称。

采集周期:当前分组下面所有设备都是按照此周期采集。

  • 添加分组设备,如下图

添加设备有四个参数:

父级:指的是当前设备所属的分组,下拉框选择。

Topic: 为当前采集设备设定一个主题名,同MQ里主题有相似用处。

设备名称: 为当前设备设定一个名称。

驱动名称:选择当前设备的驱动,用于采集数据。

  • 设置OPC UA 采集地址,如下图:

注:如果是PLC,可能参数会更多。目前软网关只支持OPC UA。(西门子PLC系列,三菱PLC,MTConnect, Modbus等都在陆续加入,敬请期待)

  • 添加设备点位,如下图:

选择分组,然后选择设备,最后点击添加点位,参数如下:

变量名:指的是字段名称

地址:目前是OPC UA 所以指的是NodeID ,如果是PLC ,那么就是PLC 地址。

注:以上采集配置已经配置完成。

其次,配置北向数据导出功能【规则引擎配置】

  • 配置资源

本次以MQTT为例,配置MQTT 服务器相关参数

  • 配置规则

【开源版规则引擎相对简单,主要支持两种功能,MQTT导出功能,HTTP导出功能】

三、安装 mosquitto 作为mqtt 服务器【在ubuntu server 上面安装】

  • 拉取镜像

docker pull eclipse-mosquitto:latest
  • 查看镜像

docker images
  • 建立配置目录

mkdir -p /opt/mosquitto/config
mkdir -p /opt/mosquitto/data
mkdir -p /opt/mosquitto/log
  • 建立配置文件,大部分教程缺少:listener 1883

vim /opt/mosquitto/config/mosquitto.conf
# 写入以下内容
persistence true
persistence_location /opt/mosquitto/data
log_dest file /opt/mosquitto/log/mosquitto.log
listener 1883
allow_anonymous true 【此参数设置为true后,连接mqtt 可以匿名连接】
  • 为目录授权

chmod -R 644 /opt/mosquitto
  • Docker 启动

docker run -dit --restart=always --name=mosquitto --privileged -p 1883:1883 -p 9002:9001 -v
/opt/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v
/opt/mosquitto/data:/mosquitto/data -v
/opt/mosquitto/log:/mosquitto/log eclipse-mosquitto:latest

  • 生成密码

#进入容器
docker exec -it 6acdb4238f69 sh
#对于passworf_file,可以复制一份模板,或者创建一个空文件
touch /mosquitto/config/pwfile.conf
chmod -R 755 /mosquitto/config/pwfile.conf
# 使用mosquitto_passwd命令创建用户,第一个test是用户名,第二个test2022是密码
mosquitto_passwd -b /mosquitto/config/pwfile.conf test test2019
  • 验证mqtt server 服务【使用MQTT client 测试】

四、安装Ekuiper

  • 下载ekuiper 镜像

docker pull lfedge/ekuiper:1.5-alpine
  • 运行docker

docker run -p 9081:9081 -d --restart=always --name kuiper -e
MQTT_SOURCE__DEFAULT__SERVER="tcp://192.168.233.152:1883" lfedge/ekuiper:1.5-alpine
  • 验证ekuiper 是否真正的从mqtt server 订阅数据

#进入ekuiper docker 容器内部
docker exec -it kuiper /bin/sh
#执行如下SQL
./bin/kuiper create stream demo '(speed bigint) WITH (FORMAT="JSON",
DATASOURCE="test_opcua")'
#查询
./bin/kuiper query
select * from demo;

进入查询命令后,再执行如下图红框里的SQL语句【过滤温度超过30度的数据】

现在我们通过MQTT client 连接MQTT server 发送数据,然后验证ekuiper query 是否有数据显示【使用MQTT client 推数据到MQTT 然后再看数据是否能被 ekuiper 过滤】

五、验证IOTCS 从OPCUA 模拟器当中采集数据 ---> MQTT server ---> ekuiper,如下图:测试只采集了一个变量

  • Prosys OPC UA 设置变量

  • IOTCS 配置设备变量

  • 查看ekuiper

  • ekuiper 安装tdengine 插件有两步必须处理

第一步下载tdengine 插件,解压到相应的目录,如图:

第二步将上述两个文件上传到对应的目录

install.sh脚本需要docker cp containerID install.sh kuiper:/kuiper

然后在docker 容器内部执行install.sh

tdengine@1.5.0.so 需要放入到上面建立docker 数据卷目录

第三步验证插件是否安装成功

curl http://127.0.0.1:9081/plugins/sinks/tdengine

六、安装TDengine 【操作系统是ubuntu server】

  • 第一种通过apt-get 安装方式

  • 可以使用 apt-get 工具从官方仓库安装

  • 安装包仓库

wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add -
echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" |
sudo tee /etc/apt/sources.list.d/tdengine-stable.list
  • 执行完上述两条命令后会生产一个包管理文件

  • 使用 apt-get 命令安装

sudo apt-get update
apt-cache policy tdengine
sudo apt-get install tdengine

  • 验证tdengine 数据库是否正常

systemctl status ta
  • 第二种通过安装包方式安装【推荐使用第二种】

  • 下载对应的安装包,我们测试安装的是TDengine 2.2.2.0

  • 对下载的安装包进行安装

dpkg -i TDengine-server-2.2.2.0-Linux-x64.deb

  • 启动数据库服务

systemctl start taosd
#查看是否启动成功
systemctl status taosd
#启动成功后,我们使用TDengine 命令行 (CLI)操作数据库。
taos

注:如果像上图这样,说明已经安装成功并且可以操作数据库。

七、ekuiper 数据导入tdengine

  • 创建数据库、表,参考以下文档:

create database demo;
use demo;
create table t (ts timestamp, speed int);
  • 创建流

curl --location --request POST 'http://192.168.233.152:9081/streams' --header
'Content-Type:application/json' --data '"sql":"create stream demoStream(speed bigint)WITH ( DATASOURCE = \\"test_opcua\\", FORMAT = \\"json\\");"'
  • 创建规则

curl --location --request POST 'http://192.168.233.152:9081/rules' --header 'ContentType:application/json'
--data '"id":"demoRule","sql":"SELECT * FROMdemoStream;","actions":["tdengine":"provideTs":true,"tsFieldName":"ts","port":0,"ip":"127.0.0.1","database":"demo","table":"t","fields":["ts","speed"]]'
  • 删除规则使用API

curl --location --request DELETE http://192.168.233.152:9081/rules/demoRule
  • 确定数据是否写入到tdengine

注:下一篇文章准备 IOTCS+ekuiper + tdengine + grafana 实现端到端的解决方案

项目开源地址:

//IOTCS
https://github.com/IOT-CS
https://gitee.com/wittqueen/IOTCS


//WEB配置
https://github.com/IOT-CS/WEB
https://gitee.com/wittqueen/WEB

项目演示地址:

http://47.108.190.157:8080/index.html

以上是关于IOTCS+Ekuiper搭建物联网边缘计算平台的主要内容,如果未能解决你的问题,请参考以下文章

OpenYurt 联手 eKuiper,解决 IoT 场景下边缘流数据处理难题

eKuiper v1.4.0 正式发布:新增规则流水线功能与 Go 语言扩展插件,运行性能提升...

腾讯云推出物联网边缘计算平台,加速物联网走进“边云协同”时代

高效边缘流处理方案教程:使用 OpenYurt 部署和管理 eKuiper

物联网边缘计算网关有什么好处?

fly-iot飞凡物联:如何从0打造自己的物联网平台,使用开源的技术栈搭建一个高性能的物联网平台,目前在设计阶段。