iotcs+ekuiper搭建物联网边缘计算平台

dotNET跨平台 dotNET跨平台     2023-03-15     270

关键词:

背景介绍

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

openyurt联手ekuiper,解决iot场景下边缘流数据处理难题

简介:云计算的出现促使物联网实现爆炸式增长。在设备规模和业务复杂度不断攀升的趋势之下,边缘计算因其能够将计算能力更靠近网络边缘和设备,从而带来云性能成本的降低,也在这波浪潮之下得到快速发... 查看详情

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

​边缘计算在物联网中应用的领域非常广泛,特别适合具有低时延,高带宽,高可靠,海量连接,异构汇聚和本地安全,隐私保护等特殊业务要求的应用场景。实际工作中,企业如何将边缘计算与物联网相结合呢?答,企业需要... 查看详情

kubeedge边缘计算在顺丰科技工业物联网中的实践

摘要:顺丰物联网平台负责人胡典钢为大家带来了“边缘计算在工业物联网中的应用实践与思考”,阐述了工业物联网的发展背景、整体架构设计以及边缘计算在此过程中承担的重要角色,并梳理了其中的技术演进脉... 查看详情

阿里云物联网边缘计算加载mqtt驱动(代码片段)

...使得边缘端容器可以通过MQTT获得外部数据。系统需求物联网边缘计算平台,又名LinkIoTEdge[1]。在物联网边缘计算帮助文档中的“快速入门”描述了这样一种应用场景,“光照传感器检测室内光照强度是否大于500Lux,若光照强度大... 查看详情

物联网边缘网关_物联边缘网关_边缘计算物联网关

边缘计算物联网关,数据边缘节点处理降低云端符合,响应快,物联网中使用边缘计算,源附近处理大量数据减少互联网带宽占用,满足各物联网大接入量高速响应场景的应用。计讯物联边缘计算网关集5G/4G网... 查看详情

菲尼克斯电气proficloud助力企业打造设备远程运维工业物联网平台

摘要:基于菲尼克斯电气工业物联网产业布局,以工业物联网平台为纽带,通过共创的模式,结合设备制造商等伙伴的行业know-how,打造专属的工业物联网平台应用,助力伙伴进行产业升级、向设备即服务... 查看详情

边缘智能物联网关

计讯物联边缘智能物联网关,广泛应用于对接入量和时效性有要求的物联网场景当中。计讯物联边缘智能物联网关支持边缘计算实现终端数据处理优化,为数据安全提供条件,有效减轻平台服务端压力,全网通4G... 查看详情

5g边缘计算物联网关

5G边缘计算物联网关的出现意义重大,随着物联网不断扩大的用户网络和不断增长的数据量,网络性能不受影响是企业面临的巨大挑战,因此边缘计算正成为物联网的解决方案。5G边缘计算物联网关可以保持较高的连... 查看详情

顺丰科技胡典钢:边缘计算在工业物联网中的应用实践与思考

在云原生边缘计算峰会KubeEdgeSummit2022上,顺丰物联网平台负责人胡典钢为大家带来了题为“ 边缘计算在工业物联网中的应用实践与思考”主题演讲。工业物联网作为智能制造和工业4.0的重要使能技术和关键实现路径,以... 查看详情

2020年物联网及边缘计算发展预测

现在回顾下2019年的物联网或者计算机行业,其实在2019年发展的也有点困难,下面可以一起来看看2020年物联网及边缘计算的发展预测。 预测一,边缘计算安全将成为主要重点。这一点的预测完全是在情理之中。因为边缘计算... 查看详情

区块链和边缘计算——物联网的新形态?

...哪些产业有影响?纯理论不免干涩难懂,我们不妨结合物联网,在下文中探讨区块链和边缘计算的结合。物联网的不足计算成本传统物联网系统基于服务器/客户端的中心化架构,即所有物联设备都通过云实现验证、连接和智能... 查看详情

高效边缘流处理方案教程:使用openyurt部署和管理ekuiper(代码片段)

LFEdgeeKuiper是轻量级物联网数据分析和流处理软件,通常在边缘端运行。它提供了一个管理仪表板(https://github.com/lf-edge/ekuiper/blob/master/docs/zh_CN/manager-ui/overview.md)来管理一个或多个eKuiper实例。通常,仪表板部署在... 查看详情

边缘计算网关物联网时代又一通信神器

物联网盛行的时代,许多通信终端产品层出不穷,为顺应时代发展步伐,更好在物联网领域驰骋天下,通信技术不断更新升级,边缘计算的概念就是鲜明的例子。随着边缘计算逐渐火热,边缘计算网关也开... 查看详情

边缘计算智能网关如何发挥物联网优势

...计算智能网关,经过软硬件优化开发设计,在物联网系统中发挥显著的低延时优势、省带宽优势、通信安全优势和多网兼备优势。边缘计算对物联网有什么好处?1、低延时计算速度快。边缘计算讲数据分析计算工作... 查看详情

存储资源盘活系统,“盘活”物联网架构难题

物联网Internetofthings(IoT),是一种与物有关的互联网,通过射频识别、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议把任何物品与互联网相连接,进行信息交换和通信,以实... 查看详情

中国移动基于kubernetes的物联网边缘计算应用实践

作者:何毓川,中移物联网,云计算开发高级工程师本文是作者根据在CIC大会KubeSphereMeetup上的分享内容整理而成。EdgeBox简介中移物联网是中国移动集团在物联网方向的专业研发子公司,在各个垂直行业都有非常... 查看详情

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

目录前言1,fly-iot飞凡物联2,mqtt-broker服务3,管理后台产品/设备设计4,数据存储目前使用mysql,消息存储到influxdb中5,规则引擎使用ekuiper6,总结和其他的想法前言本文的原文连接是:https://blog.csdn.net/freewebsys/article/details/129... 查看详情

面向物联网和边缘计算的云网演进

...并补齐内容。全文分为四部分:●第一部分:物联网不仅仅是网,边缘计 查看详情