2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Zusammenfassung: In diesem Artikel werden Kernkonzepte wie das Internet der Dinge, Cloud-Plattform, MQTT, HTTP und Datenvisualisierung auf einfache und leicht verständliche Weise vorgestellt. Außerdem werden gängige Tools wie EMQX, Flask, InfluxDB und Grafana zum Unterrichten kombiniert Sie erfahren Schritt für Schritt, wie Sie eine Cloud-Plattform für das Internet der Dinge aufbauen, die mehrere Protokolle unterstützt. Der Artikel hat eine klare Struktur, Bilder und Texte, und der Code ist informativ und leicht verständlich. Er soll den Lesern helfen, die Kerntechnologie zum Aufbau einer IoT-Cloud-Plattform schnell zu beherrschen.
Schlüsselwörter:IoT, Cloud-Plattform, MQTT, HTTP, Datenvisualisierung, EMQX, Flask, InfluxDB, Grafana
Das Internet der Dinge (IoT, Internet der Dinge) bezieht sich auf die Echtzeiterfassung aller Objekte oder Prozesse, die über verschiedene Informationssensoren, Radiofrequenz-Identifikationstechnologie, globale Positionierungssysteme usw. überwacht, verbunden und interagiert werden müssen. die allgegenwärtige Kommunikation zwischen Dingen und Dingen sowie zwischen Dingen und Menschen zu realisieren. In Verbindung können wir eine intelligente Wahrnehmung, Identifizierung und Verwaltung von Gegenständen und Prozessen erreichen.
Die IoT-Systemarchitektur ist üblicherweise in drei Schichten unterteilt:
Unter Cloud-Plattform versteht man das Hinzufügungs-, Nutzungs- und Bereitstellungsmodell internetbasierter Dienste, das in der Regel die Bereitstellung dynamisch skalierbarer und häufig virtualisierter Ressourcen über das Internet umfasst. Cloud-Plattformen können leistungsstarke Rechen-, Speicher- und Netzwerkressourcen für IoT-Anwendungen bereitstellen und so die Kosten für die Entwicklung und Bereitstellung von IoT-Anwendungen senken.
Unter Datenvisualisierung versteht man die Darstellung von Daten in visuellen Formen wie Grafiken und Diagrammen, um Benutzern ein intuitiveres Verständnis der Daten zu ermöglichen und Einblicke in die Muster und Trends hinter den Daten zu gewinnen.
MQTT (Message Queuing Telemetry Transport) ist ein leichtes Nachrichten-Publish/Subscribe-Protokoll, das für Geräte und Netzwerke mit geringer Bandbreite und geringem Stromverbrauch entwickelt wurde. MQTT ist im Bereich des Internets der Dinge weit verbreitet und eignet sich besonders für Geräte mit eingeschränkten Ressourcen und unzuverlässige Netzwerkumgebungen.
HTTP (Hypertext Transfer Protocol) ist ein Protokoll der Anwendungsschicht, das zur Übertragung von Informationen zwischen Webbrowsern und Webservern verwendet wird. Das HTTP-Protokoll ist einfach und benutzerfreundlich und wird häufig in verschiedenen Netzwerkanwendungen verwendet, einschließlich des Internets der Dinge.
EMQX ist ein Open-Source-, leistungsstarker und skalierbarer MQTT-Nachrichtenserver, der Millionen gleichzeitiger Verbindungen und Nachrichtendurchsatz unterstützt.
Flask ist ein leichtes, in Python geschriebenes Webanwendungs-Framework, das einfach zu erlernen und zu verwenden ist und sich für die schnelle Erstellung von Webanwendungen und API-Schnittstellen eignet.
InfluxDB ist eine Open-Source-Zeitreihendatenbank zum Speichern und Abfragen von Zeitreihendaten. Sie eignet sich zum Speichern von IoT-Sensordaten, Überwachungsdaten usw.
Grafana ist ein Open-Source-Datenvisualisierungstool, das mehrere Datenquellen verbinden kann, um schöne und leistungsstarke Dashboards zu erstellen und Daten in Echtzeit anzuzeigen.
Dieses Projekt wird eine IoT-Cloud-Plattform aufbauen, die MQTT- und HTTP-Protokolle unterstützt, um die folgenden Funktionen zu erreichen:
1. HTTP-Serveraufbau (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)
Codebeschreibung:
Flask
Das Framework erstellt einen HTTP-Server und definiert/data
Die Schnittstelle empfängt POST-Anfragen.request.get_json()
Rufen Sie die JSON-Daten in der HTTP-Anfrage ab.InfluxDBClient
Stellen Sie eine Verbindung zur InfluxDB-Datenbank her und schreiben Sie Daten in die Datenbank.2. MQTT-Nachrichtenverarbeitung (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
Codebeschreibung:
paho.mqtt.client
Stellen Sie eine Verbindung zum MQTT-Broker her und abonnieren Sie das angegebene Thema.json.loads()
Analysieren Sie den Nachrichteninhalt.influxdb_client.write_points()
Schreiben Sie Daten in die InfluxDB-Datenbank.3. Datenvisualisierung (Grafana)
Beispiel einer Grafana-Abfrageanweisung:
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
Die Abfrage beginnt mitsensor_data
Fragen Sie die Temperatur- und Luftfeuchtigkeitsdaten der letzten Messstunde ab.
Dieses Projekt kombiniert Tools wie Flask, EMQX, InfluxDB und Grafana, um eine IoT-Cloud-Plattform zu erstellen, die MQTT- und HTTP-Protokolle unterstützt und die Datenerfassung, -speicherung und -visualisierung realisiert. Die Plattform kann flexibel erweitert werden, um mehr Gerätetypen und Protokollzugriffe zu unterstützen, und ihre Funktionen können an die tatsächlichen Bedürfnisse angepasst werden.
Beachten:
paho-mqtt
,influxdb
,flask
Warten.Wenn Sie konkreten Code und Ideen wünschen, können Sie mir eine private Nachricht senden! ! !