Condivisione della tecnologia

Creazione di una piattaforma cloud IoT multiprotocollo basata su EMQX Flask InfluxDB Grafana: accesso ai dispositivi MQTT/HTTP e processo di visualizzazione dei dati (con esempi di codice)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Riepilogo: Questo articolo introduce concetti fondamentali come Internet delle cose, piattaforma cloud, MQTT, HTTP e visualizzazione dei dati in modo semplice e di facile comprensione. Combina inoltre strumenti tradizionali come EMQX, Flask, InfluxDB e Grafana per insegnare spiegherai passo dopo passo come costruire una piattaforma cloud per l'Internet delle cose che supporti più protocolli. L'articolo ha una struttura, immagini e testi chiari e il codice è informativo e di facile comprensione. È progettato per aiutare i lettori a padroneggiare rapidamente la tecnologia di base per la creazione di una piattaforma cloud IoT.

Parole chiave:IoT, piattaforma cloud, MQTT, HTTP, visualizzazione dei dati, EMQX, Flask, InfluxDB, Grafana


1. Conoscenza di base dell'Internet of Things

1.1 Panoramica sull'Internet delle cose

L'Internet delle cose (IoT, Internet of Things) si riferisce alla raccolta in tempo reale di qualsiasi oggetto o processo che deve essere monitorato, connesso e interagito attraverso vari sensori di informazione, tecnologia di identificazione a radiofrequenza, sistemi di posizionamento globale, ecc., realizzare la comunicazione onnipresente tra cose e cose e tra cose e persone. In connessione, possiamo ottenere una percezione, un'identificazione e una gestione intelligenti di elementi e processi.

1.2 Architettura dell'IoT

L’architettura del sistema IoT è solitamente divisa in tre livelli:

  • Strato di percezione:Responsabile della raccolta dei dati, inclusi vari sensori, tag RFID, moduli GPS, ecc.
  • Livello di rete:Responsabile della trasmissione dei dati, inclusi vari protocolli di rete, tecnologie di comunicazione, ecc., come WiFi, Bluetooth, Zigbee, NB-IoT, ecc.
  • Livello di applicazione:Responsabile dell'elaborazione dei dati e della presentazione delle applicazioni, come analisi dei dati, controllo remoto, processo decisionale intelligente, ecc.

2. Piattaforma cloud e visualizzazione dei dati

2.1 Piattaforma cloud

La piattaforma cloud si riferisce al modello di aggiunta, utilizzo e fornitura di servizi correlati basati su Internet, che di solito comporta la fornitura di risorse dinamicamente scalabili e spesso virtualizzate su Internet. Le piattaforme cloud possono fornire potenti risorse di elaborazione, archiviazione e rete per le applicazioni IoT, riducendo i costi di sviluppo e implementazione delle applicazioni IoT.

2.2 Visualizzazione dei dati

La visualizzazione dei dati si riferisce alla visualizzazione dei dati in forme visive come grafici e grafici per aiutare gli utenti a comprendere i dati in modo più intuitivo e ottenere informazioni dettagliate sui modelli e sulle tendenze dietro i dati.

3. Introduzione ai protocolli e agli strumenti comunemente utilizzati

3.1 Protocollo MQTT

MQTT (Message Queuing Telemetry Transport) è un protocollo leggero di pubblicazione/sottoscrizione di messaggi progettato per dispositivi e reti a bassa larghezza di banda e a basso consumo. MQTT è ampiamente utilizzato nel campo dell'Internet delle cose, particolarmente adatto a dispositivi con risorse limitate e ambienti di rete inaffidabili.

3.2 Protocollo HTTP

HTTP (Hypertext Transfer Protocol) è un protocollo a livello di applicazione utilizzato per trasferire informazioni tra browser Web e server Web. Il protocollo HTTP è semplice e facile da usare ed è ampiamente utilizzato in varie applicazioni di rete, incluso l'Internet delle cose.

3.3 EMQX

EMQX è un server di messaggi MQTT open source, ad alte prestazioni e scalabile che supporta milioni di connessioni simultanee e velocità effettiva dei messaggi.

3.4 Fiaschetta

Flask è un framework per applicazioni Web leggero scritto in Python, facile da apprendere e utilizzare e adatto per creare rapidamente applicazioni Web e interfacce API.

3.5 InfluxDB

InfluxDB è un database di serie temporali open source progettato per archiviare e interrogare dati di serie temporali. È adatto per archiviare dati di sensori IoT, monitorare dati, ecc.

3.6 Grafana

Grafana è uno strumento di visualizzazione dei dati open source in grado di connettere più origini dati per creare dashboard belle e potenti e visualizzare i dati in tempo reale.

4. Realizzazione piattaforma cloud IoT multiprotocollo

Questo progetto costruirà una piattaforma cloud IoT che supporti i protocolli MQTT e HTTP per ottenere le seguenti funzioni:

  • Supporto multiprotocollo: Supporta l'accesso al dispositivo con i protocolli MQTT e HTTP.
  • Raccolta e archiviazione dei dati: Raccogli i dati da diversi dispositivi di protocollo in tempo reale e archiviali nel database InfluxDB.
  • visualizzazione dati: Utilizza Grafana per visualizzare visivamente i dati raccolti.
4.1 Architettura del sistema

 

4.2 Attuazione del codice

1. Costruzione del server HTTP (Flask)

  1. # 导入 Flask 库
  2. from flask import Flask, request, jsonify
  3. # 创建 Flask 应用
  4. app = Flask(__name__)
  5. # 定义 HTTP 接口,接收 POST 请求
  6. @app.route('/data', methods=['POST'])
  7. def receive_data():
  8. # 获取请求数据
  9. data = request.get_json()
  10. # 数据处理逻辑,例如数据校验、格式转换等
  11. # ...
  12. # 将数据写入 InfluxDB (示例)
  13. from influxdb import InfluxDBClient
  14. client = InfluxDBClient('localhost', 8086, 'user', 'password', 'iot_data')
  15. json_body = [
  16. {
  17. "measurement": "sensor_data",
  18. "tags": {
  19. "sensor_id": data.get("sensor_id")
  20. },
  21. "fields": {
  22. "temperature": data.get("temperature"),
  23. "humidity": data.get("humidity")
  24. }
  25. }
  26. ]
  27. client.write_points(json_body)
  28. # 返回响应
  29. return jsonify({'message': 'Data received successfully!'}), 200
  30. # 启动 Flask 应用
  31. if __name__ == '__main__':
  32. app.run(debug=True)

Descrizione del codice:

  • utilizzoFlaskIl framework crea un server HTTP e definisce/dataL'interfaccia riceve richieste POST.
  • utilizzorequest.get_json()Ottieni i dati JSON nella richiesta HTTP.
  • Eseguire l'elaborazione dei dati, come la verifica dei dati, la conversione del formato, ecc.
  • utilizzoInfluxDBClientConnettersi al database InfluxDB e scrivere i dati nel database.
  • Restituisce una risposta in formato JSON per informare il client che la ricezione dei dati ha avuto esito positivo.

2. Elaborazione dei messaggi MQTT (Python)

  1. # 导入必要的库
  2. import paho.mqtt.client as mqtt
  3. from influxdb import InfluxDBClient
  4. import json
  5. # MQTT Broker 配置
  6. MQTT_BROKER = "localhost"
  7. MQTT_PORT = 1883
  8. MQTT_TOPIC = "sensor/data"
  9. # InfluxDB 配置
  10. INFLUXDB_HOST = "localhost"
  11. INFLUXDB_PORT = 8086
  12. INFLUXDB_USER = "user"
  13. INFLUXDB_PASSWORD = "password"
  14. INFLUXDB_DATABASE = "iot_data"
  15. # 创建 InfluxDB 客户端
  16. influxdb_client = InfluxDBClient(
  17. host=INFLUXDB_HOST,
  18. port=INFLUXDB_PORT,
  19. username=INFLUXDB_USER,
  20. password=INFLUXDB_PASSWORD,
  21. database=INFLUXDB_DATABASE
  22. )
  23. # 连接到 MQTT Broker
  24. def on_connect(client, userdata, flags, rc):
  25. print("Connected to MQTT Broker with result code " + str(rc))
  26. client.subscribe(MQTT_TOPIC)
  27. # 接收 MQTT 消息
  28. def on_message(client, userdata, msg):
  29. # 解析数据
  30. data = json.loads(msg.payload.decode())
  31. # 构建 InfluxDB 数据点
  32. influxdb_data = [
  33. {
  34. "measurement": "sensor_data",
  35. "tags": {
  36. "sensor_id": data.get("sensor_id"),
  37. },
  38. "fields": {
  39. "temperature": data.get("temperature"),
  40. "humidity": data.get("humidity"),
  41. }
  42. }
  43. ]
  44. # 写入 InfluxDB
  45. influxdb_client.write_points(influxdb_data)
  46. print("Data written to InfluxDB: " + str(influxdb_data))
  47. # 创建 MQTT 客户端
  48. mqtt_client = mqtt.Client()
  49. mqtt_client.on_connect = on_connect
  50. mqtt_client.on_message = on_message
  51. mqtt_client.connect(MQTT_BROKER, MQTT_PORT, 60)
  52. # 启动 MQTT 客户端
  53. mqtt_client.loop_start()
  54. # 保持程序运行
  55. while True:
  56. pass

Descrizione del codice:

  • utilizzopaho.mqtt.clientConnettiti a MQTT Broker e iscriviti all'argomento specificato.
  • Quando viene ricevuto un messaggio MQTT, utilizzarejson.loads()Analizzare il contenuto del messaggio.
  • Costruisci i dati analizzati nel formato del punto dati InfluxDB.
  • utilizzoinfluxdb_client.write_points()Scrivere i dati nel database InfluxDB.

3. Visualizzazione dei dati (Grafana)

  • Installa Grafana e configura l'origine dati per connettersi al database InfluxDB.
  • Crea dashboard e aggiungi grafici sulla dashboard, come grafici a linee, grafici a barre, ecc.
  • Configura l'origine dati del grafico come InfluxDB e scrivi istruzioni di query per ottenere dati da InfluxDB.
  • Configura lo stile, il titolo, l'asse e altri attributi del grafico secondo necessità per rendere la visualizzazione dei dati più intuitiva e facile da comprendere.

Esempio di istruzione di query Grafana:

SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h

La query inizierà dasensor_dataInterroga i dati di temperatura e umidità dell'ultima ora di misurazione.

Questo progetto combina strumenti come Flask, EMQX, InfluxDB e Grafana per creare una piattaforma cloud IoT che supporti i protocolli MQTT e HTTP e realizzi la raccolta, l'archiviazione e la visualizzazione visiva dei dati. La piattaforma può essere ampliata in modo flessibile per supportare più tipi di dispositivi e accesso al protocollo e le sue funzioni possono essere personalizzate in base alle esigenze effettive.

Avviso:

  • Il codice riportato sopra è solo di riferimento e deve essere modificato in base alle esigenze specifiche delle applicazioni reali.
  • Assicurati che tutte le librerie dipendenti siano installate, ad es.paho-mqttinfluxdbflaskAspettare.
  • Nell'implementazione effettiva è necessario considerare fattori come la sicurezza dei dati e la stabilità del sistema.

Se desideri codice e idee specifici, puoi inviarmi un messaggio privato! ! !