私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
まとめ:この記事では、モノのインターネット、クラウド プラットフォーム、MQTT、HTTP、データ視覚化などの中心的な概念をシンプルかつわかりやすい方法で紹介し、EMQX、Flask、InfluxDB、Grafana などの主流ツールを組み合わせて説明します。複数のプロトコルをサポートするモノのインターネットのクラウド プラットフォームを構築する方法を段階的に説明します。この記事は明確な構造、画像、テキストを備えており、コードは有益で理解しやすいものであり、読者が IoT クラウド プラットフォームを構築するためのコア テクノロジをすぐに習得できるように設計されています。
キーワード:IoT、クラウド プラットフォーム、MQTT、HTTP、データ視覚化、EMQX、Flask、InfluxDB、Grafana
モノのインターネット (IoT、モノのインターネット) とは、さまざまな情報センサー、無線周波数識別技術、全地球測位システムなどを介して監視、接続、対話する必要があるオブジェクトまたはプロセスのリアルタイムの収集を指します。モノとモノの間、モノとヒトの間のユビキタスなコミュニケーションを実現することで、アイテムとプロセスのインテリジェントな認識、識別、管理を実現できます。
IoT システム アーキテクチャは通常、次の 3 つの層に分かれています。
クラウド プラットフォームとは、インターネット ベースの関連サービスの追加、使用、配信モデルを指し、通常、インターネット上で動的にスケーラブルで仮想化されたリソースの提供が含まれます。 クラウド プラットフォームは、IoT アプリケーションに強力なコンピューティング、ストレージ、ネットワーク リソースを提供し、IoT アプリケーションの開発と展開のコストを削減します。
データの視覚化とは、ユーザーがデータをより直観的に理解し、データの背後にあるパターンや傾向についての洞察を得るのに役立つ、グラフィックやチャートなどの視覚的な形式でデータを表示することを指します。
MQTT (Message Queuing Telemetry Transport) は、低帯域幅、低電力のデバイスおよびネットワーク向けに設計された軽量のメッセージ パブリッシュ/サブスクライブ プロトコルです。 MQTT はモノのインターネットの分野で広く使用されており、特にリソースに制約のあるデバイスや信頼性の低いネットワーク環境に適しています。
HTTP (Hypertext Transfer Protocol) は、Web ブラウザと Web サーバーの間で情報を転送するために使用されるアプリケーション層プロトコルです。 HTTP プロトコルはシンプルで使いやすく、モノのインターネットなどのさまざまなネットワーク アプリケーションで広く使用されています。
EMQX は、数百万の同時接続とメッセージ スループットをサポートする、オープン ソースの高性能かつスケーラブルな MQTT メッセージ サーバーです。
Flask は、Python で書かれた軽量の Web アプリケーション フレームワークで、学習と使用が簡単で、Web アプリケーションと API インターフェイスを迅速に構築するのに適しています。
InfluxDB は、時系列データの保存とクエリのために設計されたオープンソースの時系列データベースで、IoT センサー データや監視データなどの保存に適しています。
Grafana は、複数のデータ ソースを接続して美しく強力なダッシュボードを作成し、リアルタイムでデータを表示できるオープン ソース データ視覚化ツールです。
このプロジェクトでは、MQTT および HTTP プロトコルをサポートする IoT クラウド プラットフォームを構築し、以下の機能を実現します。
1.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)
コードの説明:
Flask
フレームワークは HTTP サーバーを作成し、以下を定義します/data
インターフェイスは POST リクエストを受け取ります。request.get_json()
HTTPリクエストでJSONデータを取得します。InfluxDBClient
InfluxDB データベースに接続し、データベースにデータを書き込みます。2. 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
コードの説明:
paho.mqtt.client
MQTT ブローカーに接続し、指定されたトピックをサブスクライブします。json.loads()
メッセージの内容を解析します。influxdb_client.write_points()
InfluxDB データベースにデータを書き込みます。3. データ視覚化 (Grafana)
Grafana クエリ ステートメントの例:
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
クエリはから始まりますsensor_data
測定中の過去 1 時間の温度と湿度のデータを問い合わせます。
このプロジェクトは、Flask、EMQX、InfluxDB、Grafanaなどのツールを組み合わせて、MQTTおよびHTTPプロトコルをサポートし、データの収集、保存、ビジュアル表示を実現するIoTクラウドプラットフォームを構築します。このプラットフォームは、より多くの種類のデバイスとプロトコル アクセスをサポートするために柔軟に拡張でき、実際のニーズに応じて機能をカスタマイズできます。
知らせ:
paho-mqtt
,influxdb
,flask
待って。特定のコードやアイデアが必要な場合は、私にプライベート メッセージを送ってください。 ! !