2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Yhteenveto: Tämä artikkeli esittelee ydinkäsitteitä, kuten esineiden internetin, pilvialustan, MQTT:n, HTTP:n ja tietojen visualisoinnin yksinkertaisella ja helposti ymmärrettävällä tavalla. Siinä yhdistyvät myös tavanomaiset työkalut, kuten EMQX, Flask, InfluxDB ja Grafana. voit askel askeleelta rakentaa esineiden internet -pilvialustan, joka tukee useita protokollia. Artikkelissa on selkeä rakenne, kuvat ja tekstit, ja koodi on informatiivinen ja helposti ymmärrettävä. Se on suunniteltu auttamaan lukijoita nopeasti hallitsemaan IoT-pilvialustan rakentamisen ydintekniikka.
Avainsanat:IoT, pilvialusta, MQTT, HTTP, tietojen visualisointi, EMQX, Flask, InfluxDB, Grafana
Esineiden internet (IoT, Internet of Things) viittaa reaaliaikaiseen kokoelmaan kohteista tai prosesseista, joita on seurattava, yhdistettävä ja vuorovaikutettava erilaisten tietoanturien, radiotaajuustunnistustekniikan, globaalien paikannusjärjestelmien jne. kautta. toteuttaa kaikkialla olevaa kommunikaatiota asioiden ja asioiden välillä sekä asioiden ja ihmisten välillä.
IoT-järjestelmäarkkitehtuuri on yleensä jaettu kolmeen kerrokseen:
Pilvialustalla tarkoitetaan Internet-pohjaisten palveluiden lisäämistä, käyttöä ja toimitusmallia, joka sisältää yleensä dynaamisesti skaalautuvien ja usein virtualisoitujen resurssien tarjoamisen Internetin kautta. Pilviympäristöt voivat tarjota tehokkaita laskenta-, tallennus- ja verkkoresursseja IoT-sovelluksille, mikä vähentää IoT-sovellusten kehittämis- ja käyttöönottokustannuksia.
Tietojen visualisointi tarkoittaa tietojen näyttämistä visuaalisissa muodoissa, kuten grafiikoissa ja kaavioissa, jotta käyttäjät ymmärtävät tiedot intuitiivisemmin ja saavat käsityksen tietojen taustalla olevista malleista ja trendeistä.
MQTT (Message Queuing Telemetry Transport) on kevyt viestien julkaisu-/tilausprotokolla, joka on suunniteltu alhaisen kaistanleveyden, vähän virtaa käyttäville laitteille ja verkoille. MQTT:tä käytetään laajasti esineiden internetin alalla, ja se sopii erityisesti resurssirajoitteisiin laitteisiin ja epäluotettaviin verkkoympäristöihin.
HTTP (Hypertext Transfer Protocol) on sovelluskerroksen protokolla, jota käytetään tiedon siirtämiseen Web-selaimien ja Web-palvelimien välillä. HTTP-protokolla on yksinkertainen ja helppokäyttöinen, ja sitä käytetään laajasti erilaisissa verkkosovelluksissa, mukaan lukien esineiden Internet.
EMQX on avoimen lähdekoodin, korkean suorituskyvyn, skaalautuva MQTT-viestipalvelin, joka tukee miljoonia samanaikaisia yhteyksiä ja viestien läpikulkua.
Flask on kevyt Pythonilla kirjoitettu verkkosovelluskehys, joka on helppo oppia ja käyttää ja joka soveltuu verkkosovellusten ja API-liittymien nopeaan rakentamiseen.
InfluxDB on avoimen lähdekoodin aikasarjatietokanta, joka on suunniteltu aikasarjatietojen tallentamiseen ja kyselyihin. Se soveltuu IoT-anturitietojen, seurantatietojen jne. tallentamiseen.
Grafana on avoimen lähdekoodin tietojen visualisointityökalu, joka voi yhdistää useita tietolähteitä luodakseen kauniita ja tehokkaita kojetauluja ja näyttääkseen tietoja reaaliajassa.
Tämä projekti rakentaa IoT-pilvialustan, joka tukee MQTT- ja HTTP-protokollia seuraavien toimintojen saavuttamiseksi:
1. HTTP-palvelimen rakentaminen (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)
Koodin kuvaus:
Flask
Kehys luo HTTP-palvelimen ja määrittelee/data
Käyttöliittymä vastaanottaa POST-pyynnöt.request.get_json()
Hanki JSON-tiedot HTTP-pyynnössä.InfluxDBClient
Muodosta yhteys InfluxDB-tietokantaan ja kirjoita tiedot tietokantaan.2. MQTT-viestinkäsittely (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
Koodin kuvaus:
paho.mqtt.client
Yhdistä MQTT Brokeriin ja tilaa määritetty aihe.json.loads()
Jäsennä viestin sisältö.influxdb_client.write_points()
Kirjoita tiedot InfluxDB-tietokantaan.3. Tietojen visualisointi (Grafana)
Esimerkki Grafana-kyselylausekkeesta:
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
Kysely alkaasensor_data
Pyydä mittauksen viimeisen tunnin lämpötila- ja kosteustiedot.
Tämä projekti yhdistää työkalut, kuten Flask, EMQX, InfluxDB ja Grafana, rakentaakseen IoT-pilvialustan, joka tukee MQTT- ja HTTP-protokollia sekä toteuttaa tiedonkeruun, -talloinnin ja visuaalisen näytön. Alustaa voidaan joustavasti laajentaa tukemaan useampia laitteita ja protokollakäyttöä ja sen toimintoja voidaan räätälöidä todellisten tarpeiden mukaan.
Ilmoitus:
paho-mqtt
,influxdb
,flask
odota.Jos haluat tarkempaa koodia ja ideoita, voit laittaa minulle yksityisviestiä! ! !