在 OpenEuler 上搭建工厂物联网平台是一个较为复杂的过程,以下为你提供一个大致的搭建步骤,这里以 EMQ X(现在称为 EMQX)作为消息代理,InfluxDB 作为时间序列数据库,Grafana 用于数据可视化来构建一个简单的工厂物联网平台示例。
1. 系统准备
首先,确保你已经安装了 OpenEuler 操作系统,并且系统已经完成了基本的配置,如网络连接、防火墙设置等。
# 更新系统软件包
sudo yum update -y
2. 安装 Docker 和 Docker Compose
Docker 可以帮助我们方便地部署各个组件,而 Docker Compose 可以管理多个 Docker 容器。
# 安装 Docker
sudo yum install -y docker
# 启动 Docker 服务
sudo systemctl start docker
# 设置 Docker 开机自启
sudo systemctl enable docker# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
3. 部署 EMQX 消息代理
EMQX 是一个开源的 MQTT 消息代理,用于物联网设备之间的消息通信。
# 创建一个目录用于存放 EMQX 的 Docker Compose 文件
mkdir emqx && cd emqx
# 创建 docker-compose.yml 文件
cat <<EOF > docker-compose.yml
version: '3'
services:emqx:image: emqx/emqx:5.0container_name: emqxrestart: alwaysports:- "1883:1883"- "8083:8083"- "8084:8084"- "8883:8883"- "18083:18083"environment:- EMQX_NAME=emqx- EMQX_HOST=127.0.0.1
EOF# 启动 EMQX 容器
docker-compose up -d
访问 http://<服务器 IP>:18083
,使用默认用户名 admin
和密码 public
登录 EMQX 控制台。
4. 部署 InfluxDB 时间序列数据库
InfluxDB 用于存储物联网设备产生的时间序列数据。
# 创建一个目录用于存放 InfluxDB 的 Docker Compose 文件
mkdir influxdb && cd influxdb
# 创建 docker-compose.yml 文件
cat <<EOF > docker-compose.yml
version: '3'
services:influxdb:image: influxdb:2.0container_name: influxdbrestart: alwaysports:- "8086:8086"volumes:- ./influxdb:/var/lib/influxdb2environment:- DOCKER_INFLUXDB_INIT_MODE=setup- DOCKER_INFLUXDB_INIT_USERNAME=admin- DOCKER_INFLUXDB_INIT_PASSWORD=admin123- DOCKER_INFLUXDB_INIT_ORG=my-org- DOCKER_INFLUXDB_INIT_BUCKET=my-bucket- DOCKER_INFLUXDB_INIT_RETENTION=1w- DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token
EOF# 启动 InfluxDB 容器
docker-compose up -d
访问 http://<服务器 IP>:8086
,使用上述设置的用户名和密码登录 InfluxDB 控制台。
5. 部署 Grafana 进行数据可视化
Grafana 可以从 InfluxDB 中获取数据并进行可视化展示。
# 创建一个目录用于存放 Grafana 的 Docker Compose 文件
mkdir grafana && cd grafana
# 创建 docker-compose.yml 文件
cat <<EOF > docker-compose.yml
version: '3'
services:grafana:image: grafana/grafana:latestcontainer_name: grafanarestart: alwaysports:- "3000:3000"volumes:- ./grafana-data:/var/lib/grafana
EOF# 启动 Grafana 容器
docker-compose up -d
访问 http://<服务器 IP>:3000
,使用默认用户名 admin
和密码 admin
登录 Grafana 控制台,然后配置 InfluxDB 数据源并创建仪表盘进行数据可视化。
6. 设备接入与数据传输
编写物联网设备端代码,使用 MQTT 协议连接到 EMQX 消息代理,并将设备数据发送到指定的 MQTT 主题。可以使用 Python 的 paho-mqtt
库来实现:
import paho.mqtt.client as mqtt
import random
import time# EMQX 服务器地址和端口
broker_address = "localhost"
broker_port = 1883# 连接成功回调函数
def on_connect(client, userdata, flags, rc):print("Connected with result code " + str(rc))# 创建 MQTT 客户端实例
client = mqtt.Client()
client.on_connect = on_connect# 连接到 EMQX 服务器
client.connect(broker_address, broker_port, 60)# 循环发送模拟数据
try:while True:# 生成模拟数据temperature = random.uniform(20, 30)humidity = random.uniform(40, 60)# 发布数据到 MQTT 主题client.publish("factory/sensors/temperature", temperature)client.publish("factory/sensors/humidity", humidity)print(f"Published: Temperature={temperature}, Humidity={humidity}")time.sleep(5)
except KeyboardInterrupt:print("Interrupted by user. Exiting...")
finally:# 断开连接client.disconnect()
7. 数据处理与存储
在 EMQX 控制台配置规则引擎,将接收到的 MQTT 消息转发到 InfluxDB 进行存储。具体配置步骤可以参考 EMQX 和 InfluxDB 的官方文档。
8. 数据可视化
在 Grafana 控制台中,配置 InfluxDB 作为数据源,然后创建仪表盘和图表,将存储在 InfluxDB 中的数据进行可视化展示。
以上就是在 OpenEuler 上搭建一个简单的工厂物联网平台的基本步骤,你可以根据实际需求对平台进行扩展和优化。