Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Resumen: Este artículo presenta conceptos básicos como Internet de las cosas, plataforma en la nube, MQTT, HTTP y visualización de datos de una manera simple y fácil de entender. También combina herramientas convencionales como EMQX, Flask, InfluxDB y Grafana para enseñar. Le explicamos paso a paso cómo construir una plataforma en la nube de Internet de las cosas que admita múltiples protocolos. El artículo tiene una estructura, imágenes y textos claros, y el código es informativo y fácil de entender. Está diseñado para ayudar a los lectores a dominar rápidamente la tecnología central de la construcción de una plataforma en la nube de IoT.
Palabras clave:IoT, plataforma en la nube, MQTT, HTTP, visualización de datos, EMQX, Flask, InfluxDB, Grafana
Internet de las cosas (IoT, Internet de las cosas) se refiere a la recopilación en tiempo real de cualquier objeto o proceso que deba ser monitoreado, conectado e interactuado a través de diversos sensores de información, tecnología de identificación por radiofrecuencia, sistemas de posicionamiento global, etc. para realizar la comunicación ubicua entre cosas y cosas, y entre cosas y personas. En conexión, podemos lograr una percepción, identificación y gestión inteligentes de elementos y procesos.
La arquitectura del sistema IoT suele dividirse en tres capas:
Plataforma en la nube se refiere al modelo de adición, uso y entrega de servicios relacionados basados en Internet, que generalmente implica el suministro de recursos dinámicamente escalables y a menudo virtualizados a través de Internet. Las plataformas en la nube pueden proporcionar potentes recursos informáticos, de almacenamiento y de red para aplicaciones de IoT, reduciendo el costo de desarrollo e implementación de aplicaciones de IoT.
La visualización de datos se refiere a mostrar datos en formas visuales, como gráficos y tablas, para ayudar a los usuarios a comprender los datos de manera más intuitiva y obtener información sobre los patrones y tendencias detrás de los datos.
MQTT (Message Queuing Telemetry Transport) es un protocolo liviano de publicación/suscripción de mensajes diseñado para redes y dispositivos de bajo ancho de banda y bajo consumo de energía. MQTT se utiliza ampliamente en el campo de Internet de las cosas y es especialmente adecuado para dispositivos con recursos limitados y entornos de red poco confiables.
HTTP (Protocolo de transferencia de hipertexto) es un protocolo de capa de aplicación que se utiliza para transferir información entre navegadores web y servidores web. El protocolo HTTP es simple y fácil de usar y se usa ampliamente en diversas aplicaciones de red, incluida la Internet de las cosas.
EMQX es un servidor de mensajes MQTT escalable, de alto rendimiento y de código abierto que admite millones de conexiones simultáneas y rendimiento de mensajes.
Flask es un marco de aplicación web liviano escrito en Python, fácil de aprender y usar, y adecuado para crear rápidamente aplicaciones web e interfaces API.
InfluxDB es una base de datos de series temporales de código abierto diseñada para almacenar y consultar datos de series temporales. Es adecuada para almacenar datos de sensores de IoT, datos de monitoreo, etc.
Grafana es una herramienta de visualización de datos de código abierto que puede conectar múltiples fuentes de datos para crear paneles hermosos y potentes y mostrar datos en tiempo real.
Este proyecto construirá una plataforma en la nube de IoT que admita los protocolos MQTT y HTTP para lograr las siguientes funciones:
1. Construcción del servidor HTTP (Flask)
- # 导入 Flask 库
- from flask import Flask, request, jsonify
-
- # 创建 Flask 应用
- app = Flask(__name__)
-
- # 定义 HTTP 接口,接收 POST 请求
- @app.route('/data', methods=['POST'])
- def receive_data():
- # 获取请求数据
- data = request.get_json()
-
- # 数据处理逻辑,例如数据校验、格式转换等
- # ...
-
- # 将数据写入 InfluxDB (示例)
- from influxdb import InfluxDBClient
- client = InfluxDBClient('localhost', 8086, 'user', 'password', 'iot_data')
- json_body = [
- {
- "measurement": "sensor_data",
- "tags": {
- "sensor_id": data.get("sensor_id")
- },
- "fields": {
- "temperature": data.get("temperature"),
- "humidity": data.get("humidity")
- }
- }
- ]
- client.write_points(json_body)
-
- # 返回响应
- return jsonify({'message': 'Data received successfully!'}), 200
-
- # 启动 Flask 应用
- if __name__ == '__main__':
- app.run(debug=True)
Descripción del código:
Flask
El marco crea un servidor HTTP y define/data
La interfaz recibe solicitudes POST.request.get_json()
Obtenga los datos JSON en la solicitud HTTP.InfluxDBClient
Conéctese a la base de datos InfluxDB y escriba datos en la base de datos.2. Procesamiento de mensajes MQTT (Python)
- # 导入必要的库
- import paho.mqtt.client as mqtt
- from influxdb import InfluxDBClient
- import json
-
- # MQTT Broker 配置
- MQTT_BROKER = "localhost"
- MQTT_PORT = 1883
- MQTT_TOPIC = "sensor/data"
-
- # InfluxDB 配置
- INFLUXDB_HOST = "localhost"
- INFLUXDB_PORT = 8086
- INFLUXDB_USER = "user"
- INFLUXDB_PASSWORD = "password"
- INFLUXDB_DATABASE = "iot_data"
-
- # 创建 InfluxDB 客户端
- influxdb_client = InfluxDBClient(
- host=INFLUXDB_HOST,
- port=INFLUXDB_PORT,
- username=INFLUXDB_USER,
- password=INFLUXDB_PASSWORD,
- database=INFLUXDB_DATABASE
- )
-
- # 连接到 MQTT Broker
- def on_connect(client, userdata, flags, rc):
- print("Connected to MQTT Broker with result code " + str(rc))
- client.subscribe(MQTT_TOPIC)
-
- # 接收 MQTT 消息
- def on_message(client, userdata, msg):
- # 解析数据
- data = json.loads(msg.payload.decode())
-
- # 构建 InfluxDB 数据点
- influxdb_data = [
- {
- "measurement": "sensor_data",
- "tags": {
- "sensor_id": data.get("sensor_id"),
- },
- "fields": {
- "temperature": data.get("temperature"),
- "humidity": data.get("humidity"),
- }
- }
- ]
-
- # 写入 InfluxDB
- influxdb_client.write_points(influxdb_data)
- print("Data written to InfluxDB: " + str(influxdb_data))
-
- # 创建 MQTT 客户端
- mqtt_client = mqtt.Client()
- mqtt_client.on_connect = on_connect
- mqtt_client.on_message = on_message
- mqtt_client.connect(MQTT_BROKER, MQTT_PORT, 60)
-
- # 启动 MQTT 客户端
- mqtt_client.loop_start()
-
- # 保持程序运行
- while True:
- pass
Descripción del código:
paho.mqtt.client
Conéctese a MQTT Broker y suscríbase al tema especificado.json.loads()
Analiza el contenido del mensaje.influxdb_client.write_points()
Escriba datos en la base de datos InfluxDB.3. Visualización de datos (Grafana)
Ejemplo de declaración de consulta de Grafana:
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
La consulta comenzará desdesensor_data
Consulta los datos de temperatura y humedad de la última hora en medición.
Este proyecto combina herramientas como Flask, EMQX, InfluxDB y Grafana para construir una plataforma en la nube de IoT que admita los protocolos MQTT y HTTP, y realice la recopilación, el almacenamiento y la visualización de datos. La plataforma se puede ampliar de manera flexible para admitir más tipos de dispositivos y acceso a protocolos, y sus funciones se pueden personalizar según las necesidades reales.
Aviso:
paho-mqtt
,influxdb
,flask
esperar.Si quieres códigos e ideas específicos, ¡puedes enviarme un mensaje privado! ! !