minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Resumo: Este artigo apresenta conceitos básicos como Internet das Coisas, plataforma em nuvem, MQTT, HTTP e visualização de dados de maneira simples e fácil de entender. Ele também combina ferramentas convencionais como EMQX, Flask, InfluxDB e Grafana para ensinar. você mostra passo a passo como construir uma plataforma em nuvem da Internet das Coisas que suporta vários protocolos. O artigo tem uma estrutura, imagens e textos claros, e o código é informativo e fácil de entender. Ele foi projetado para ajudar os leitores a dominar rapidamente a tecnologia central de construção de uma plataforma de nuvem IoT.
Palavras-chave:IoT, plataforma em nuvem, MQTT, HTTP, visualização de dados, EMQX, Flask, InfluxDB, Grafana
A Internet das Coisas (IoT, Internet das Coisas) refere-se à coleção em tempo real de quaisquer objetos ou processos que precisam ser monitorados, conectados e interagidos por meio de vários sensores de informação, tecnologia de identificação por radiofrequência, sistemas de posicionamento global, etc., para realizar a comunicação onipresente entre coisas e coisas, e entre coisas e pessoas. Em conexão, podemos alcançar percepção, identificação e gerenciamento inteligentes de itens e processos.
A arquitetura do sistema IoT geralmente é dividida em três camadas:
Plataforma em nuvem refere-se ao modelo de adição, uso e entrega de serviços relacionados baseados na Internet, geralmente envolvendo o fornecimento de recursos dinamicamente escalonáveis e muitas vezes virtualizados pela Internet. A plataforma em nuvem pode fornecer recursos poderosos de computação, armazenamento e rede para aplicações IoT, reduzindo o custo de desenvolvimento e implantação de aplicações IoT.
A visualização de dados refere-se à exibição de dados em formatos visuais, como gráficos e tabelas, para ajudar os usuários a compreender os dados de forma mais intuitiva e obter insights sobre os padrões e tendências por trás dos dados.
MQTT (Message Queuing Telemetry Transport) é um protocolo leve de publicação/assinatura de mensagens projetado para dispositivos e redes de baixa largura de banda e baixo consumo de energia. MQTT é amplamente utilizado no campo da Internet das Coisas, especialmente adequado para dispositivos com recursos limitados e ambientes de rede não confiáveis.
HTTP (Hypertext Transfer Protocol) é um protocolo de camada de aplicação usado para transferir informações entre navegadores da Web e servidores da Web. O protocolo HTTP é simples e fácil de usar e é amplamente utilizado em diversas aplicações de rede, incluindo a Internet das Coisas.
EMQX é um servidor de mensagens MQTT escalonável, de alto desempenho e de código aberto que oferece suporte a milhões de conexões simultâneas e taxa de transferência de mensagens.
Flask é uma estrutura de aplicação web leve escrita em Python, fácil de aprender e usar, e adequada para construir rapidamente aplicações web e interfaces API.
InfluxDB é um banco de dados de série temporal de código aberto projetado para armazenar e consultar dados de série temporal. É adequado para armazenar dados de sensores IoT, dados de monitoramento, etc.
Grafana é uma ferramenta de visualização de dados de código aberto que pode conectar várias fontes de dados para criar painéis bonitos e poderosos e exibir dados em tempo real.
Este projeto construirá uma plataforma de nuvem IoT que suporta protocolos MQTT e HTTP para atingir as seguintes funções:
1. Construção de servidor 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)
Descrição do código:
Flask
A estrutura cria um servidor HTTP e define/data
A interface recebe solicitações POST.request.get_json()
Obtenha os dados JSON na solicitação HTTP.InfluxDBClient
Conecte-se ao banco de dados InfluxDB e grave dados no banco de dados.2. Processamento de mensagens 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
Descrição do código:
paho.mqtt.client
Conecte-se ao MQTT Broker e assine o tópico especificado.json.loads()
Analise o conteúdo da mensagem.influxdb_client.write_points()
Grave dados no banco de dados InfluxDB.3. Visualização de dados (Grafana)
Exemplo de instrução de consulta Grafana:
SELECT "temperature", "humidity" FROM "sensor_data" WHERE time > now() - 1h
A declaração de consulta será desensor_data
Consulte os dados de temperatura e umidade da última hora de medição.
Este projeto combina ferramentas como Flask, EMQX, InfluxDB e Grafana para construir uma plataforma de nuvem IoT que suporta protocolos MQTT e HTTP e realiza coleta de dados, armazenamento e exibição visual. A plataforma pode ser expandida de forma flexível para suportar mais tipos de dispositivos e protocolos de acesso, e suas funções podem ser personalizadas de acordo com as necessidades reais.
Perceber:
paho-mqtt
,influxdb
,flask
espere.Se você quiser códigos e ideias específicas, pode me enviar uma mensagem privada! ! !