2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Résumé: Cet article présente des concepts de base tels que l'Internet des objets, la plate-forme cloud, MQTT, HTTP et la visualisation des données d'une manière simple et facile à comprendre. Il combine également des outils traditionnels tels que EMQX, Flask, InfluxDB et Grafana pour enseigner. vous explique étape par étape comment créer une plate-forme cloud Internet des objets prenant en charge plusieurs protocoles. L'article a une structure, des images et des textes clairs, et le code est informatif et facile à comprendre. Il est conçu pour aider les lecteurs à maîtriser rapidement la technologie de base de la création d'une plate-forme cloud IoT.
Mots clés:IoT, plateforme cloud, MQTT, HTTP, visualisation de données, EMQX, Flask, InfluxDB, Grafana
L'Internet des objets (IoT, Internet of Things) fait référence à la collecte en temps réel de tout objet ou processus qui doit être surveillé, connecté et interagi via divers capteurs d'informations, la technologie d'identification par radiofréquence, les systèmes de positionnement global, etc. pour réaliser la communication omniprésente entre les choses et les choses, et entre les choses et les personnes, nous pouvons parvenir à une perception, une identification et une gestion intelligentes des éléments et des processus.
L'architecture du système IoT est généralement divisée en trois couches :
La plate-forme cloud fait référence au modèle d'ajout, d'utilisation et de fourniture de services liés à Internet, impliquant généralement la fourniture de ressources dynamiquement évolutives et souvent virtualisées sur Internet. Les plates-formes cloud peuvent fournir de puissantes ressources de calcul, de stockage et de réseau pour les applications IoT, réduisant ainsi le coût de développement et de déploiement des applications IoT.
La visualisation des données fait référence à l'affichage des données sous des formes visuelles telles que des graphiques et des diagrammes pour aider les utilisateurs à comprendre les données de manière plus intuitive et à mieux comprendre les modèles et les tendances qui se cachent derrière les données.
MQTT (Message Queuing Telemetry Transport) est un protocole léger de publication/abonnement de messages conçu pour les appareils et réseaux à faible bande passante et à faible consommation. MQTT est largement utilisé dans le domaine de l'Internet des objets, particulièrement adapté aux appareils aux ressources limitées et aux environnements réseau peu fiables.
HTTP (Hypertext Transfer Protocol) est un protocole de couche application utilisé pour transférer des informations entre les navigateurs Web et les serveurs Web. Le protocole HTTP est simple et facile à utiliser et est largement utilisé dans diverses applications réseau, notamment l'Internet des objets.
EMQX est un serveur de messages MQTT open source, hautes performances et évolutif qui prend en charge des millions de connexions simultanées et un débit de messages.
Flask est un framework d'application Web léger écrit en Python, facile à apprendre et à utiliser, et adapté à la création rapide d'applications Web et d'interfaces API.
InfluxDB est une base de données de séries chronologiques open source conçue pour stocker et interroger des données de séries chronologiques. Elle convient au stockage des données de capteurs IoT, aux données de surveillance, etc.
Grafana est un outil de visualisation de données open source qui peut connecter plusieurs sources de données pour créer des tableaux de bord magnifiques et puissants et afficher les données en temps réel.
Ce projet construira une plate-forme cloud IoT prenant en charge les protocoles MQTT et HTTP pour réaliser les fonctions suivantes :
1. Construction du serveur 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)
Description des codes :
Flask
Le framework crée un serveur HTTP et définit/data
L'interface reçoit les requêtes POST.request.get_json()
Obtenez les données JSON dans la requête HTTP.InfluxDBClient
Connectez-vous à la base de données InfluxDB et écrivez les données dans la base de données.2. Traitement des messages 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
Description des codes :
paho.mqtt.client
Connectez-vous à MQTT Broker et abonnez-vous à la rubrique spécifiée.json.loads()
Analysez le contenu du message.influxdb_client.write_points()
Écrivez des données dans la base de données InfluxDB.3. Visualisation des données (Grafana)
Exemple d'instruction de requête Grafana :
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
La requête commencera à partir desensor_data
Interrogez les données de température et d’humidité de la dernière heure de mesure.
Ce projet combine des outils tels que Flask, EMQX, InfluxDB et Grafana pour créer une plate-forme cloud IoT prenant en charge les protocoles MQTT et HTTP, et réalise la collecte, le stockage et l'affichage visuel de données. La plate-forme peut être étendue de manière flexible pour prendre en charge davantage de types d'appareils et d'accès aux protocoles, et ses fonctions peuvent être personnalisées en fonction des besoins réels.
Avis:
paho-mqtt
,influxdb
,flask
attendez.Si vous souhaitez du code et des idées spécifiques, vous pouvez m'envoyer un message privé ! ! !