Technology sharing

InfluxDB Grafana MQTT/HTTP fabrica accessus et processus notitia visualisationis (cum codice exempla)

2024-07-12

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

Summarium: Articulus hic inducit nucleos notiones ut Interrete Rerum, nubes suggestum, MQTT, HTTP, et data visualizationis modo simplici et facili ad intellectum tu gradatim aedificare in Internet Rerum nubes suggestum quod plures protocolla sustinet. Articulus claram structuram, picturas et textus habet, et signum informativum est et facile ad intellegendum. Ordinatur ut lectores celeriter adiuvent nucleum technologiam aedificandi IoT nubes suggestum.

Clavis verba:IoT, nubes suggestus, MQTT, HTTP, data visualisatio, EMQX, Flask, InfluxDB, Grafana.


1. Basic scientia Internet rerum

1.1 Overview of Internet of Rerum

Penitus Rerum (IoT, Rerum Interreti) refertur ad realem tempus collectionem quarumlibet objectorum seu processuum qui monitoriis, connexis et per varias sensoriis notitias, per varias sensoriis notitias, radiophonicis identitatis technologias frequentes, systemata globali positiones, etc. ut cognoscamus ubiquitam communicationem rerum ac rerum, inter res et homines.

1.2 IoT architectura

IoT ratio architecturae plerumque in tres ordines distribuitur;

  • accumsan perceptio:Reus ad colligendas notitias, inter varios sensores, RFID tags, GPS modulorum, etc.
  • Iaculum retis:Responsabilis pro notitia transmissionis, inter varia protocolla protocolla, technologiae communicationis, etc., ut WiFi, Bluetooth, Zigbee, NB-IOT, etc.
  • Applicatio accumsan:Responsabilis notitia processus et applicationis propositio, ut notatae analysi, remotae potestatis, intelligentis deliberationis, etc.

2. Cloud suggestum ac data visualization

2.1 Cloud suggestum

Clouds suggestus additicium, usus et traditio exemplaris interretialis actis instrumentis innititur, quae plerumque praescriptum dynamice scalable et saepe facultates virtualis in Interreti refert. suggestum nubilum potens computandi, repositionis et retis facultates praebere pro applicationibus IOT, reducere sumptus evolutionis et applicationum IOT instruere.

2.2 Data visualisation

Data visualisation refert ad notitias in formis visualibus prae se ferre, sicut graphics et chartulae ut users adiuvant ut notitias magis intuitivas cognoscant ac pervestigationes in exemplaria ac trends post datam consequantur.

3. Introductio ad usum protocolla et instrumenta

3.1 MQTT protocol

MQTT (Nuntius Queuing Telemetry Transport) leve est nuntius evulgare/subscribere protocollum destinatum ad sedis humilis, machinas et retiacula humilis. MQTT late in campo Rerum Interreti adhibetur, praesertim ad machinas adinventiones constrictas et in ambitus retiaculas inconstantias aptus.

3.2 HTTP protocol

HTTP (Hypertext Translatio Protocollum) est applicatio tabulatorum protocolli usus ad informationes transferendas inter navigatores interretiales et interretiales ministratores. Protocollum HTTP est simplex et facile uti et late in variis applicationibus retis, incluso rerum interreti.

3.3 EMQX

EMQX fons apertus, summus effectus, scalabilis MQTT nuntius servo qui decies coniunctiones concurrentium et nuntium perput sustinet.

3.4 Flask

Lagena est levis interretialis applicatio fabricae Pythonis scriptae, facilis ad discendum et usus, et ad celeriter aedificanda applicationes interfaces et API aptas.

3.5 InfluxDB

InfluxDB fons apertus est temporis seriei datorum, ad condendas et investigandas temporis series data.

3.6 Grafana

Grafana fons apertus est instrumenti visualizationis datae, qui plures fontes notitias coniungere potest ut pulchras et potentes ashboardas creare et notitias in reali tempore ostenderet.

4. Construction of multi-protocollo IoT nubes platform

Propositum hoc suggestum nubem IoT aedificabit, quae MQTT et HTTP protocolla sustinet ut munera sequentia consequantur:

  • Multi-protocol firmamentum: subsidia fabrica accessum cum protocollis utriusque MQTT et HTTP.
  • Data collectio et repono: Collecta notitia ex variis protocollis machinis in tempore reali ac repone in datorum InfluxDB.
  • data visualization: Grafana utere ut collectas notitias uisum ostendas.
4.1 Systema architecturae

 

4.2 Code implementation

1. HTTP servo constructione (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)

Codicis descriptio:

  • ususFlaskIn compage gignit HTTP servo ac definit/dataPost postulata interface accipit.
  • ususrequest.get_json()Adepto JSON data in HTTP peticionem.
  • Praestare notitia processus, ut notitia verificationis, forma conversionis, etc.
  • ususInfluxDBClientConiungere ad datorum InfluxDB et scribe data ad datorum.
  • Recipe responsionem in forma JSON certiorem clienti data receptione succedit.

2. MQTT nuntius processus (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

Codicis descriptio:

  • ususpaho.mqtt.clientConiungere ad MQTT sectorem et subscribo ad certum locum.
  • Cum in MQTT nuntium recipitur, ususjson.loads()Parse verbo contentus.
  • Parsed notitias aedificare in punctum notitiae InfluxDB forma.
  • ususinfluxdb_client.write_points()Scribere notitia ad InfluxDB database.

3. Data visualisation (Grafana)

  • Grafana inaugurare et notitias fontis configurare ad datorum InfluxDB coniungere.
  • Fac ashboardday et chartulas in ashboardday adde, ut linea chartis, chartis vectibus, etc.
  • Configurare notitias fontis chartulae ut InfluxDB, et propositiones interrogationes scribe ut notitias ab InfluxDB obtineas.
  • Configurare stilum, titulum, axem et alia attributa chart, quae necessaria sunt ut notitias magis intuitivas et faciles ad intellegendum exhibeant.

Exemplum interrogationis Grafanae enuntiationis:

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

Propositio quæstio erit exsensor_dataQuere de notitia caliditatis et humiditatis horae ultimae in mensura.

Hoc project instrumenta coniungit ut Flask, EMQX, InfluxDB et Grafana ut suggestum nubilum IoT aedificet, quod MQTT et HTTP protocolla sustinet, et notitias collectionis, repono et ostentationis visualis percipit. suggestum mollius ampliari potest ut plura genera machinis ac protocollo accessus sustineat, et functiones ejus secundum necessitates actuales nativus esse possint.

Animadverte:

  • Codex supradictus ad solam referentiam pertinet ac mutari debet secundum necessitates specificas in applicationibus actualibus.
  • Fac quaeso ut omnes bibliothecae dependentes installantur, v.g.paho-mqttinfluxdbflaskmanere.
  • In ipsa instruere, factores ut securitatis et systematis stabilitatem egere debent.

Si vis codicem specialem et notiones, nuntium privatum mihi mittere potes! ! !