प्रौद्योगिकी साझेदारी

EMQX Flask InfluxDB Grafana इत्यस्य आधारेण बहु-प्रोटोकॉल-IoT मेघ-मञ्चस्य निर्माणम्: MQTT/HTTP उपकरण-परिवेषणं तथा च आँकडा-दृश्यीकरण-प्रक्रिया (कोड् उदाहरणैः सह)

2024-07-12

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

संक्षेपः: अस्मिन् लेखे इन्टरनेट् आफ् थिंग्स, क्लाउड् प्लेटफॉर्म, MQTT, HTTP, तथा च डाटा विजुअलाइजेशन इत्यादीनां मूलसंकल्पनानां परिचयः सरलतया सुलभतया च EMQX, Flask, InfluxDB, Grafana इत्यादीनां मुख्यधारासाधनानाम् अपि संयोजनं करोति you step by step कथं Internet of Things मेघमञ्चं निर्मातव्यम् यत् बहुविधप्रोटोकॉलसमर्थयति। लेखस्य स्पष्टसंरचना, चित्राणि, पाठाः च सन्ति, तथा च कोडः सूचनाप्रदः अस्ति तथा च अवगन्तुं सुलभः अस्ति यत् पाठकान् IoT मेघमञ्चस्य निर्माणस्य मूलप्रौद्योगिक्याः शीघ्रं निपुणतां प्राप्तुं साहाय्यं कर्तुं विनिर्मितः अस्ति

मुख्यशब्दाः : १.IoT, क्लाउड प्लेटफॉर्म, MQTT, HTTP, डेटा विजुअलाइजेशन, EMQX, फ्लास्क, InfluxDB, Grafana


1. इन्टरनेट् आफ् थिंग्स इत्यस्य मूलभूतज्ञानम्

१.१ अन्तर्जालस्य अवलोकनम्

इन्टरनेट् आफ् थिङ्ग्स् (IoT, इन्टरनेट् आफ् थिङ्ग्स्) इति कस्यापि वस्तुनः अथवा प्रक्रियायाः वास्तविकसमयसङ्ग्रहं निर्दिशति यस्य निरीक्षणं, संयोजितं, अन्तरक्रिया च विविधसूचनासंवेदकानां, रेडियो आवृत्तिपरिचयप्रौद्योगिक्याः, वैश्विकस्थाननिर्धारणप्रणाली इत्यादीनां माध्यमेन करणीयम्, वस्तुनां वस्तूनाञ्च मध्ये, वस्तूनाम् जनानां च मध्ये सर्वव्यापी संचारं साक्षात्कर्तुं सन्दर्भे वयं वस्तुनां प्रक्रियाणां च बुद्धिमान् बोधं, परिचयं, प्रबन्धनं च प्राप्तुं शक्नुमः।

१.२ IoT वास्तुकला

IoT प्रणाली वास्तुकला प्रायः त्रयः स्तराः विभक्ताः भवन्ति :

  • प्रतीतिस्तरः १.विभिन्नसंवेदकाः, RFID टैग्, GPS मॉड्यूल इत्यादयः समाविष्टाः आँकडानां संग्रहणस्य उत्तरदायी।
  • संजालस्तरः : १.विभिन्नजालप्रोटोकॉल, संचारप्रौद्योगिकी इत्यादीनां सहितं आँकडासंचरणस्य उत्तरदायी, यथा वाईफाई, ब्लूटूथ, जिग्बी, एनबी-आईओटी इत्यादयः।
  • अनुप्रयोगस्तरः : १.आँकडासंसाधनस्य अनुप्रयोगप्रस्तुतिस्य च उत्तरदायी, यथा आँकडाविश्लेषणं, दूरनियन्त्रणं, बुद्धिमान् निर्णयनिर्माणम् इत्यादयः।

2. क्लाउड् प्लेटफॉर्म तथा डाटा विजुअलाइजेशन

२.१ मेघमञ्चः

मेघमञ्चः अन्तर्जाल-आधारित-सेवानां परिवर्तनं, उपयोगं, वितरणं च प्रतिरूपं निर्दिशति, यत्र प्रायः अन्तर्जालमाध्यमेन गतिशीलरूपेण स्केल-करणीयानाम्, प्रायः वर्चुअलाइज्ड्-संसाधनानाम् प्रावधानं भवति मेघमञ्चः IoT अनुप्रयोगानाम् कृते शक्तिशालिनः कम्प्यूटिंग्, भण्डारणं, संजालसंसाधनं च प्रदातुं शक्नोति, येन IoT अनुप्रयोगानाम् विकासस्य, परिनियोजनस्य च व्ययः न्यूनीकरोति

२.२ दत्तांशदृश्यीकरणम्

दत्तांशदृश्यीकरणं ग्राफिक्स् तथा चार्ट् इत्यादिषु दृश्यरूपेण दत्तांशं प्रदर्शयितुं निर्दिशति यत् उपयोक्तृभ्यः दत्तांशं अधिकतया सहजतया अवगन्तुं तथा च दत्तांशस्य पृष्ठतः प्रतिमानानाम्, प्रवृत्तीनां च अन्वेषणं प्राप्तुं सहायकं भवति

3. सामान्यतया प्रयुक्तानां प्रोटोकॉल-उपकरणानाम् परिचयः

३.१ MQTT प्रोटोकॉल

MQTT (Message Queuing Telemetry Transport) इति लघु-सन्देशप्रकाशन/सदस्यता-प्रोटोकॉलः अस्ति यः न्यून-बैण्डविड्थ्, न्यून-शक्तियुक्तानां उपकरणानां, संजालस्य च कृते डिजाइनः कृतः अस्ति । MQTT इत्यस्य व्यापकरूपेण उपयोगः इन्टरनेट् आफ् थिंग्स इत्यस्य क्षेत्रे भवति, विशेषतः संसाधन-संकुचित-यन्त्राणां अविश्वसनीय-जाल-वातावरणानां च कृते उपयुक्तः ।

३.२ HTTP प्रोटोकॉल

HTTP (Hypertext Transfer Protocol) इति एकः अनुप्रयोगस्तरप्रोटोकॉलः अस्ति यस्य उपयोगः जालपुटस्य जालसर्वरस्य च मध्ये सूचनां स्थानान्तरयितुं भवति । HTTP प्रोटोकॉल सरलं सुलभं च अस्ति तथा च इन्टरनेट् आफ् थिङ्ग्स् इत्यादिषु विविधजाल-अनुप्रयोगेषु व्यापकरूपेण उपयोगः भवति ।

३.३ EMQX इति

EMQX एकः मुक्तस्रोतः, उच्च-प्रदर्शनीयः, स्केल-योग्यः MQTT सन्देशसर्वरः अस्ति यः कोटिकोटिसमवर्तीसंयोजनानां, सन्देशस्य थ्रूपुटस्य च समर्थनं करोति ।

३.४ फ्लास्कः

फ्लास्कः पायथन्-भाषायां लिखितः लघुः जाल-अनुप्रयोग-रूपरेखा अस्ति, यः ज्ञातुं उपयोगाय च सुलभः, जाल-अनुप्रयोगानाम्, एपिआइ-अन्तरफलकानां च शीघ्रं निर्माणाय उपयुक्तः

३.५ InfluxDB इति

InfluxDB एकः मुक्तस्रोतसमयश्रृङ्खलादत्तांशकोशः अस्ति यः समयश्रृङ्खलादत्तांशस्य संग्रहणार्थं प्रश्नार्थं च विनिर्मितः अस्ति ।

३.६ ग्राफाना

Grafana इति एकं मुक्तस्रोतदत्तांशदृश्यीकरणसाधनं यत् बहुविधदत्तांशस्रोतान् संयोजयित्वा सुन्दरं शक्तिशालीं च डैशबोर्डं निर्मातुं शक्नोति तथा च वास्तविकसमये आँकडाप्रदर्शयितुं शक्नोति ।

4. बहुप्रोटोकॉल IoT मेघमञ्चस्य निर्माणम्

एषा परियोजना एकं IoT मेघमञ्चं निर्मास्यति यत् निम्नलिखितकार्यं प्राप्तुं MQTT तथा HTTP प्रोटोकॉल समर्थयति:

  • बहु-प्रोटोकॉल समर्थन: MQTT तथा HTTP प्रोटोकॉल इत्येतयोः सह उपकरणप्रवेशस्य समर्थनं करोति ।
  • दत्तांशसङ्ग्रहणं भण्डारणं च: भिन्न-भिन्न-प्रोटोकॉल-यन्त्रेभ्यः वास्तविकसमये आँकडानां संग्रहणं कृत्वा InfluxDB-दत्तांशकोशे संग्रहीतुं शक्यते ।
  • दत्तांशदृश्यीकरणम्: संगृहीतदत्तांशं दृग्गतरूपेण प्रदर्शयितुं Grafana इत्यस्य उपयोगं कुर्वन्तु।
४.१ प्रणाली वास्तुकला

 

४.२ संहिता कार्यान्वयनम्

1. 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)

संहिताविवरणम् : १.

  • उपयुञ्जताम्‌Flaskढांचा HTTP सर्वरं निर्माय परिभाषयति/dataअन्तरफलकं POST अनुरोधं प्राप्नोति ।
  • उपयुञ्जताम्‌request.get_json()HTTP अनुरोधे JSON दत्तांशं प्राप्नुवन्तु ।
  • दत्तांशसंसाधनं कुर्वन्तु, यथा दत्तांशसत्यापनं, प्रारूपरूपान्तरणं इत्यादयः ।
  • उपयुञ्जताम्‌InfluxDBClientInfluxDB दत्तांशकोशे सम्बद्धं कृत्वा दत्तांशकोशे दत्तांशं लिखन्तु ।
  • ग्राहकं सूचयितुं JSON प्रारूपेण प्रतिक्रियां प्रत्यागच्छतु यत् दत्तांशस्वागतं सफलम् अस्ति ।

2. 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

संहिताविवरणम् : १.

  • उपयुञ्जताम्‌paho.mqtt.clientMQTT Broker इत्यनेन सह सम्बद्धं कृत्वा निर्दिष्टस्य विषयस्य सदस्यतां गृहाण।
  • यदा MQTT सन्देशः प्राप्यते तदा उपयोगं कुर्वन्तुjson.loads()सन्देशसामग्री विश्लेषणं कुर्वन्तु।
  • विश्लेषितदत्तांशं InfluxDB दत्तांशबिन्दुस्वरूपेण निर्मायताम् ।
  • उपयुञ्जताम्‌influxdb_client.write_points()InfluxDB दत्तांशकोशे दत्तांशं लिखन्तु ।

3. दत्तांशदृश्यीकरणं (Grafana) .

  • Grafana संस्थाप्य InfluxDB दत्तांशकोशेन सह सम्बद्धं कर्तुं दत्तांशस्रोतं विन्यस्यताम् ।
  • डैशबोर्ड् निर्माय डैशबोर्ड् मध्ये चार्ट्स् योजयन्तु, यथा रेखाचार्ट्स्, बार चार्ट्स् इत्यादयः ।
  • चार्टस्य दत्तांशस्रोतं InfluxDB इति विन्यस्यताम्, तथा च InfluxDB तः दत्तांशं प्राप्तुं प्रश्नकथनानि लिखन्तु ।
  • दत्तांशप्रदर्शनं अधिकं सहजं सुलभं च कर्तुं आवश्यकतानुसारं चार्टस्य शैली, शीर्षकं, अक्षम् अन्ये च विशेषताः विन्यस्यताम् ।

उदाहरणम् Grafana प्रश्नकथनम् :

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

प्रश्नकथनं तः भविष्यतिsensor_dataमापने अन्तिमघण्टायाः तापमानस्य आर्द्रतायाः च दत्तांशं पृच्छन्तु ।

इयं परियोजना Flask, EMQX, InfluxDB तथा Grafana इत्यादीनां साधनानां संयोजनेन IoT मेघमञ्चं निर्माति यत् MQTT तथा HTTP प्रोटोकॉल समर्थयति, तथा च आँकडासंग्रहणं, भण्डारणं, दृश्यप्रदर्शनं च साकारं करोति अधिकप्रकारस्य उपकरणानां प्रोटोकॉल-प्रवेशस्य च समर्थनार्थं मञ्चस्य विस्तारं लचीलतया कर्तुं शक्यते, तस्य कार्याणि च वास्तविक-आवश्यकतानुसारं अनुकूलितुं शक्यन्ते

सूचना:

  • उपर्युक्तः कोडः केवलं सन्दर्भार्थम् अस्ति तथा च वास्तविक-अनुप्रयोगेषु विशिष्ट-आवश्यकतानुसारं परिवर्तनस्य आवश्यकता वर्तते ।
  • कृपया सर्वाणि आश्रितपुस्तकालयानि संस्थापितानि इति सुनिश्चितं कुर्वन्तु, उदा.paho-mqttinfluxdbflaskप्रतीक्षतु।
  • वास्तविकनियोजने दत्तांशसुरक्षा, प्रणालीस्थिरता इत्यादीनां कारकानाम् विचारः करणीयः ।

यदि भवान् विशिष्टं कोडं विचारं च इच्छति तर्हि भवान् मां निजीसन्देशं प्रेषयितुं शक्नोति! ! !