项目选型
观察了全网的开源物联网平台项目,最简单,最容易二次开发的就属以下项目,本文将演示从0搭建一套平台,并结合展联科技的ZL400,ZL500系列网关实现数据采集上报。
这是IOT平台项目地址: sagooiot
先分析项目特点:
优点
- 代码清晰,结构简单,完胜各种java开发的平台
- 组件都是各种简单的常用组件,便于二次开发
缺点
- 功能不完善,部分功能实现简单,不过本文只需要实现传感器采集上传入库
- 部分功能性能有待优化,比如数据点入库需要查询的sql次数过多
环境搭建
环境: centos7 虚拟机,开发机 win10 x64
手动安装环境可以参考原项目链接: link
这里我直接采用docker compose安装了,直接上:
version: '3'
services:
redis:
image: redis:7.2.5
container_name: redis
restart: always
privileged: true
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "3"
ports:
- "6379:6379"
command: redis-server --requirepass SuperBird
volumes:
- ./redis/data:/data
environment:
- TZ=Asia/Shanghai
emqx:
image: emqx/emqx:5.6.1
container_name: emqx
restart: always
user: root
networks:
emqx-bridge:
aliases:
- node1.superbird.cloud
# chown -R 1000:1000 ./emqx
# chmod -R 755 ./emqx
privileged: true
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "3"
environment:
- TZ=Asia/Shanghai
- "EMQX_NODE_NAME=emqx@node1.superbird.cloud"
volumes:
# - $PWD/emqx/etc:/opt/emqx/etc
# - $PWD/emqx/data:/opt/emqx/data
- $PWD/emqx/log:/opt/emqx/log
ports:
- 1883:1883
- 1884:1884
- 8083:8083
- 8084:8084
- 8883:8883
- 18083:18083
mysql:
image: mysql:latest
restart: always
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./mysql:/var/lib/mysql
- ./conf:/etc/mysql
- /etc/localtime:/etc/localtime
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
ports:
- "3306:3306"
tde:
image: tdengine/tdengine:3.3.0.3
container_name: tde
restart: always
privileged: true
logging:
driver: "json-file"
options:
max-size: "500m"
max-file: "3"
ports:
- 6030:6030
- 6041:6041
- 6043-6060:6043-6060
- 6043-6060:6043-6060/udp
environment:
TAOS_FQDN: "td-1"
TAOS_FIRST_EP: "td-1"
volumes:
- ./taos/v3/data:/var/lib/taos/
- ./taos/v3/log:/var/log/taos/
volumes:
mysql:
redis:
activemq:
安装依赖:
docker-compose up -d redis
docker-compose up -d mysql
docker-compose up -d emqx
docker-compose up -d tde
安装后 docker ps
查一下镜像状态是否运行, docker logs xx
查看对应服务日志,确保三个服务都起来了
配置依赖
- redis我们在内网运行,一般启用防火墙,可以没有密码
- mysql 看起来设置你的密码,以上是在创建docker镜像的设置了密码,可以按需改
- emqx使用 ip:18083端口登录web后台,修改密码。需要注意,设备认证也是通过emq实现,这一块需要用户自己根据emq文档实现
下载代码
后端 git clone https://gitee.com/sagoo-cloud/sagooiot.git
前端 git clone https://gitee.com/sagoo-cloud/sagooiot-ui.git
启动后端
先用goland打开代码工程
- 设置包管理代理
GOPROXY=https://goproxy.cn
- 同步依赖
go mod tidy
- 修改配置,将mainfest/config下面的配置copy一份为config.yaml
修改config.yaml 里面的数据库配置成你自己的
- 导入mysql数据,直接在goland里面运行,把sql运行到对应的库里面导入数据
- 启动项目,正常输出以下内容,卡主或者报错多半都是数据库设置不对没连上
启动前端
进入前端工程, 安装依赖
yarn
yarn run dev
没有yarn用npm
npm install
npm run dev
启动后的前端:
设备接入
添加产品
添加物模型
添加设备
数据上传
配置ZL400网关
MQTT链接
配置Modbus采集
数据上传
总结
此平台的搭建较为简单,但是平台功能有部分欠缺,需要有心人自己开发,部分逻辑较为简单,比如的设备的在线状态,通过上传数据来实现的,不是实时的。
验证了ZL400系列边缘网关能非常简单的接入此平台,以及各种mqtt json上报的平台,非常适合二次开发。