OpenEuler学习笔记(二十五):搭建工厂物联网平台EMQX

在这里插入图片描述

在 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.0
    container_name: emqx
    restart: always
    ports:
      - "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.0
    container_name: influxdb
    restart: always
    ports:
      - "8086:8086"
    volumes:
      - ./influxdb:/var/lib/influxdb2
    environment:
      - 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:latest
    container_name: grafana
    restart: always
    ports:
      - "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 上搭建一个简单的工厂物联网平台的基本步骤,你可以根据实际需求对平台进行扩展和优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值