背景介绍
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