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

server/2025/2/13 21:11:39/

在这里插入图片描述

在 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 上搭建一个简单的工厂物联网平台的基本步骤,你可以根据实际需求对平台进行扩展和优化。


http://www.ppmy.cn/server/167422.html

相关文章

百度高德地图坐标转换

百度地图和高德地图的侧重点不太一样。同样一个地名&#xff0c;在百度地图网站上搜索到的地点可能是商业网点&#xff0c;在高德地图网站上搜索到的地点可能是自然行政地点。 高德地图api 在高德地图中&#xff0c;搜索地名&#xff0c;如“乱石头川”&#xff0c;该地名会出…

飞算 JavaAI:加速 AI + 行业趋势的智能化进程

在数字化浪潮奔涌的当下&#xff0c;“AI 行业” 已然成为不可逆的发展趋势&#xff0c;各行业都在积极探索 AI 技术与自身业务的融合&#xff0c;期望借此实现创新突破与转型升级。在这一进程中&#xff0c;飞算 JavaAI凭借其卓越的技术实力和独特的功能优势&#xff0c;为加…

Kafka 的消费offset原来是使用ZK管理,现在新版本是怎么管理的?

目录 基于 ZooKeeper 管理消费 offset 原理 缺点 新版本基于内部主题管理消费 offset 原理 优点 示例代码(Java) 在 Kafka 早期版本中,消费者的消费偏移量(offset)是存储在 ZooKeeper 中的,但由于 ZooKeeper 并不适合高频读写操作,从 Kafka 0.9 版本开始,消费偏…

w~自动驾驶~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/13269720 #FastOcc 推理更快、部署友好Occ算法来啦&#xff01; 在自动驾驶系统当中&#xff0c;感知任务是整个自驾系统中至关重要的组成部分。感知任务的主要目标是使自动驾驶车辆能够理解和感知周围的环境元素&#…

C++STL(六)——list模拟

目录 本次所需实现的三个类一、结点类的模拟实现构造函数 二、迭代器类的模拟实现为什么有迭代器类迭代器类的模板参数说明构造函数运算符的重载- -运算符的重载和!运算符的重载*运算符的重载->运算符的重载引入模板第二个和第三个参数 三、list的模拟实现3.1 默认成员函数构…

【Elasticsearch】match查询

Elasticsearch 的match查询是全文搜索中最常用和最强大的查询类型之一。它允许用户在指定字段中搜索文本、数字、日期或布尔值&#xff0c;并提供了丰富的功能来控制搜索行为和结果。以下是match查询的详细解析&#xff0c;包括其工作原理、参数配置和使用场景。 1.match查询的…

Golang GORM系列:GORM 高级查询教程

有效的数据检索是任何程序功能的基础。健壮的Go对象关系映射包&#xff08;称为GORM&#xff09;除了标准的CRUD操作之外&#xff0c;还提供了复杂的查询功能。这是学习如何使用GORM进行高级查询的综合资源。我们将涵盖WHERE条件、连接、关联、预加载相关数据&#xff0c;甚至涉…

跟着李沐老师学习深度学习(八)

数值稳定性 模型初始化和激活函数 数值稳定性 神经网络的梯度 考虑如下d层的神经网络&#xff08;t代表层&#xff09; 计算损失 l 关于参数 Wt 的梯度&#xff1a; 这样的矩阵乘法带来的问题&#xff1a; &#xff08;1&#xff09;梯度爆炸 &#xff08;2&#xff09;梯度…