τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Περίληψη: Αυτό το άρθρο εισάγει βασικές έννοιες όπως το Διαδίκτυο των πραγμάτων, η πλατφόρμα cloud, το MQTT, το HTTP και η οπτικοποίηση δεδομένων με απλό και κατανοητό τρόπο Συνδυάζει επίσης κύρια εργαλεία όπως το EMQX, το Flask, το InfluxDB και το Grafana. μπορείτε βήμα προς βήμα πώς να δημιουργήσετε μια πλατφόρμα cloud Internet of Things που υποστηρίζει πολλαπλά πρωτόκολλα. Το άρθρο έχει σαφή δομή, εικόνες και κείμενα και ο κώδικας είναι κατατοπιστικός και εύκολος στην κατανόηση. Έχει σχεδιαστεί για να βοηθά τους αναγνώστες να κατακτήσουν γρήγορα την βασική τεχνολογία της δημιουργίας μιας πλατφόρμας cloud.
Λέξεις κλειδιά:IoT, πλατφόρμα cloud, MQTT, HTTP, οπτικοποίηση δεδομένων, EMQX, Flask, InfluxDB, Grafana
Το Διαδίκτυο των Πραγμάτων (IoT, Internet of Things) αναφέρεται στη συλλογή σε πραγματικό χρόνο οποιωνδήποτε αντικειμένων ή διεργασιών που πρέπει να παρακολουθούνται, να συνδέονται και να αλληλεπιδρούν μέσω διαφόρων αισθητήρων πληροφοριών, τεχνολογίας αναγνώρισης ραδιοσυχνοτήτων, παγκόσμιων συστημάτων εντοπισμού θέσης κ.λπ. να συνειδητοποιήσουμε την πανταχού παρούσα επικοινωνία μεταξύ πραγμάτων και πραγμάτων, και μεταξύ πραγμάτων και ανθρώπων Σε σχέση, μπορούμε να επιτύχουμε έξυπνη αντίληψη, αναγνώριση και διαχείριση αντικειμένων και διαδικασιών.
Η αρχιτεκτονική του συστήματος IoT συνήθως χωρίζεται σε τρία επίπεδα:
Η πλατφόρμα Cloud αναφέρεται στην προσθήκη, χρήση και μοντέλο παράδοσης σχετικών υπηρεσιών που βασίζονται στο Διαδίκτυο, που συνήθως περιλαμβάνουν την παροχή δυναμικά επεκτάσιμων και συχνά εικονικοποιημένων πόρων μέσω του Διαδικτύου. Οι πλατφόρμες cloud μπορούν να παρέχουν ισχυρούς πόρους υπολογιστών, αποθήκευσης και δικτύου για εφαρμογές IoT, μειώνοντας το κόστος ανάπτυξης και ανάπτυξης εφαρμογών IoT.
Η οπτικοποίηση δεδομένων αναφέρεται στην εμφάνιση δεδομένων σε οπτικές μορφές, όπως γραφικά και γραφήματα, για να βοηθήσει τους χρήστες να κατανοήσουν τα δεδομένα πιο διαισθητικά και να αποκτήσουν πληροφορίες για τα μοτίβα και τις τάσεις πίσω από τα δεδομένα.
Το MQTT (Message Queuing Telemetry Transport) είναι ένα ελαφρύ πρωτόκολλο δημοσίευσης/συνδρομής μηνυμάτων σχεδιασμένο για συσκευές και δίκτυα χαμηλού εύρους ζώνης, χαμηλής κατανάλωσης ενέργειας. Το MQTT χρησιμοποιείται ευρέως στον τομέα του Διαδικτύου των Πραγμάτων, ιδιαίτερα κατάλληλο για συσκευές με περιορισμένους πόρους και αναξιόπιστα περιβάλλοντα δικτύου.
Το HTTP (Hypertext Transfer Protocol) είναι ένα πρωτόκολλο επιπέδου εφαρμογής που χρησιμοποιείται για τη μεταφορά πληροφοριών μεταξύ προγραμμάτων περιήγησης Ιστού και διακομιστών Ιστού. Το πρωτόκολλο HTTP είναι απλό και εύκολο στη χρήση και χρησιμοποιείται ευρέως σε διάφορες εφαρμογές δικτύου, συμπεριλαμβανομένου του Internet of Things.
Ο EMQX είναι ένας διακομιστής μηνυμάτων MQTT ανοιχτού κώδικα, υψηλής απόδοσης, επεκτάσιμος που υποστηρίζει εκατομμύρια ταυτόχρονες συνδέσεις και ροή μηνυμάτων.
Το Flask είναι ένα ελαφρύ πλαίσιο εφαρμογών ιστού γραμμένο σε Python, εύκολο στην εκμάθηση και χρήση και κατάλληλο για γρήγορη δημιουργία διαδικτυακών εφαρμογών και διεπαφών API.
Το InfluxDB είναι μια βάση δεδομένων χρονοσειρών ανοιχτού κώδικα που έχει σχεδιαστεί για την αποθήκευση και την αναζήτηση δεδομένων χρονοσειρών. Είναι κατάλληλη για την αποθήκευση δεδομένων αισθητήρων IoT, δεδομένων παρακολούθησης κ.λπ.
Το Grafana είναι ένα εργαλείο οπτικοποίησης δεδομένων ανοιχτού κώδικα που μπορεί να συνδέσει πολλές πηγές δεδομένων για να δημιουργήσει όμορφους και ισχυρούς πίνακες εργαλείων και να εμφανίσει δεδομένα σε πραγματικό χρόνο.
Αυτό το έργο θα δημιουργήσει μια πλατφόρμα cloud IoT που υποστηρίζει πρωτόκολλα MQTT και HTTP για την επίτευξη των ακόλουθων λειτουργιών:
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()
Λάβετε τα δεδομένα JSON στο αίτημα HTTP.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 Broker και εγγραφείτε στο καθορισμένο θέμα.json.loads()
Αναλύστε το περιεχόμενο του μηνύματος.influxdb_client.write_points()
Γράψτε δεδομένα στη βάση δεδομένων InfluxDB.3. Οπτικοποίηση δεδομένων (Grafana)
Παράδειγμα δήλωσης ερωτήματος Grafana:
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
Το ερώτημα θα ξεκινήσει απόsensor_data
Ζητήστε τα δεδομένα θερμοκρασίας και υγρασίας της τελευταίας ώρας στη μέτρηση.
Αυτό το έργο συνδυάζει εργαλεία όπως το Flask, το EMQX, το InfluxDB και το Grafana για τη δημιουργία μιας πλατφόρμας cloud IoT που υποστηρίζει πρωτόκολλα MQTT και HTTP και πραγματοποιεί συλλογή δεδομένων, αποθήκευση και οπτική εμφάνιση. Η πλατφόρμα μπορεί να επεκταθεί ευέλικτα για να υποστηρίζει περισσότερους τύπους συσκευών και πρόσβαση σε πρωτόκολλο και οι λειτουργίες της μπορούν να προσαρμοστούν σύμφωνα με τις πραγματικές ανάγκες.
Ειδοποίηση:
paho-mqtt
,influxdb
,flask
Περίμενε.Αν θέλετε συγκεκριμένο κωδικό και ιδέες, μπορείτε να μου στείλετε προσωπικό μήνυμα! ! !