le mie informazioni di contatto
Posta[email protected]
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
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.
L’architettura del sistema IoT è solitamente divisa in tre livelli:
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.
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.
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.
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.
EMQX è un server di messaggi MQTT open source, ad alte prestazioni e scalabile che supporta milioni di connessioni simultanee e velocità effettiva dei messaggi.
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.
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.
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.
Questo progetto costruirà una piattaforma cloud IoT che supporti i protocolli MQTT e HTTP per ottenere le seguenti funzioni:
1. Costruzione del server 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)
Descrizione del codice:
Flask
Il framework crea un server HTTP e definisce/data
L'interfaccia riceve richieste POST.request.get_json()
Ottieni i dati JSON nella richiesta HTTP.InfluxDBClient
Connettersi al database InfluxDB e scrivere i dati nel database.2. Elaborazione dei messaggi 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
Descrizione del codice:
paho.mqtt.client
Connettiti a MQTT Broker e iscriviti all'argomento specificato.json.loads()
Analizzare il contenuto del messaggio.influxdb_client.write_points()
Scrivere i dati nel database InfluxDB.3. Visualizzazione dei dati (Grafana)
Esempio di istruzione di query Grafana:
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
La query inizierà dasensor_data
Interroga 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:
paho-mqtt
,influxdb
,flask
Aspettare.Se desideri codice e idee specifici, puoi inviarmi un messaggio privato! ! !