informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ringkasan: Artikel ini memperkenalkan konsep inti seperti Internet of Things, platform cloud, MQTT, HTTP, dan visualisasi data dengan cara yang sederhana dan mudah dipahami. Artikel ini juga menggabungkan alat-alat umum seperti EMQX, Flask, InfluxDB, dan Grafana untuk mengajar Anda langkah demi langkah cara membangun platform cloud Internet of Things yang mendukung banyak protokol. Artikel ini memiliki struktur, gambar, dan teks yang jelas, serta kodenya informatif dan mudah dipahami. Artikel ini dirancang untuk membantu pembaca dengan cepat menguasai teknologi inti dalam membangun platform cloud IoT.
Kata kunci:IoT, platform cloud, MQTT, HTTP, visualisasi data, EMQX, Flask, InfluxDB, Grafana
Internet of Things (IoT, Internet of Things) mengacu pada kumpulan objek atau proses apa pun secara real-time yang perlu dipantau, dihubungkan, dan berinteraksi melalui berbagai sensor informasi, teknologi identifikasi frekuensi radio, sistem penentuan posisi global, dll., untuk mewujudkan komunikasi di mana-mana antara benda dan benda, dan antara benda dan manusia. Sehubungan dengan itu, kita dapat mencapai persepsi cerdas, identifikasi, dan pengelolaan barang dan proses.
Arsitektur sistem IoT biasanya dibagi menjadi tiga lapisan:
Platform cloud mengacu pada penambahan, penggunaan dan model penyampaian layanan terkait berbasis Internet, biasanya melibatkan penyediaan sumber daya yang dapat diskalakan secara dinamis dan seringkali tervirtualisasi melalui Internet. Platform cloud dapat menyediakan komputasi, penyimpanan, dan sumber daya jaringan yang kuat untuk aplikasi IoT, sehingga mengurangi biaya pengembangan dan penerapan aplikasi IoT.
Visualisasi data mengacu pada menampilkan data dalam bentuk visual seperti grafik dan bagan untuk membantu pengguna memahami data secara lebih intuitif dan mendapatkan wawasan tentang pola dan tren di balik data.
MQTT (Message Queuing Telemetry Transport) adalah protokol penerbitan/berlangganan pesan ringan yang dirancang untuk perangkat dan jaringan dengan bandwidth rendah dan berdaya rendah. MQTT banyak digunakan di bidang Internet of Things, terutama cocok untuk perangkat dengan sumber daya terbatas dan lingkungan jaringan yang tidak dapat diandalkan.
HTTP (Hypertext Transfer Protocol) adalah protokol lapisan aplikasi yang digunakan untuk mentransfer informasi antara browser Web dan server Web. Protokol HTTP sederhana dan mudah digunakan serta banyak digunakan di berbagai aplikasi jaringan, termasuk Internet of Things.
EMQX adalah server pesan MQTT sumber terbuka, berkinerja tinggi, dan dapat diskalakan yang mendukung jutaan koneksi bersamaan dan throughput pesan.
Flask adalah kerangka aplikasi web ringan yang ditulis dengan Python, mudah dipelajari dan digunakan, serta cocok untuk membangun aplikasi web dan antarmuka API dengan cepat.
InfluxDB adalah database deret waktu sumber terbuka yang dirancang untuk menyimpan dan menanyakan data deret waktu. Sangat cocok untuk menyimpan data sensor IoT, data pemantauan, dll.
Grafana adalah alat visualisasi data sumber terbuka yang dapat menghubungkan berbagai sumber data untuk membuat dasbor yang indah dan kuat serta menampilkan data secara real-time.
Proyek ini akan membangun platform cloud IoT yang mendukung protokol MQTT dan HTTP untuk mencapai fungsi berikut:
1. Konstruksi 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)
Deskripsi kode:
Flask
Kerangka kerja ini membuat server HTTP dan mendefinisikannya/data
Antarmuka menerima permintaan POST.request.get_json()
Dapatkan data JSON dalam permintaan HTTP.InfluxDBClient
Hubungkan ke database InfluxDB dan tulis data ke database.2. Pemrosesan pesan 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
Deskripsi kode:
paho.mqtt.client
Hubungkan ke MQTT Broker dan berlangganan topik yang ditentukan.json.loads()
Parsing isi pesan.influxdb_client.write_points()
Tulis data ke database InfluxDB.3. Visualisasi data (Grafana)
Contoh pernyataan kueri Grafana:
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
Kueri akan dimulai darisensor_data
Kueri data suhu dan kelembapan pada satu jam terakhir dalam pengukuran.
Proyek ini menggabungkan alat-alat seperti Flask, EMQX, InfluxDB dan Grafana untuk membangun platform cloud IoT yang mendukung protokol MQTT dan HTTP, serta mewujudkan pengumpulan, penyimpanan, dan tampilan visual data. Platform ini dapat diperluas secara fleksibel untuk mendukung lebih banyak jenis perangkat dan akses protokol, dan fungsinya dapat disesuaikan dengan kebutuhan sebenarnya.
Melihat:
paho-mqtt
,influxdb
,flask
Tunggu.Jika Anda menginginkan kode dan ide tertentu, Anda dapat mengirimi saya pesan pribadi! ! !