моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Краткое содержание: В этой статье в простой и понятной форме представлены основные концепции, такие как Интернет вещей, облачная платформа, MQTT, HTTP и визуализация данных. В ней также сочетаются основные инструменты, такие как EMQX, Flask, InfluxDB и Grafana для обучения. вы шаг за шагом создадите облачную платформу Интернета вещей, поддерживающую несколько протоколов. Статья имеет четкую структуру, изображения и тексты, а код информативен и прост для понимания. Она призвана помочь читателям быстро освоить основную технологию построения облачной платформы IoT.
Ключевые слова:Интернет вещей, облачная платформа, MQTT, HTTP, визуализация данных, EMQX, Flask, InfluxDB, Grafana
Интернет вещей (IoT, Internet of Things) подразумевает сбор в реальном времени любых объектов или процессов, которые необходимо отслеживать, подключать и взаимодействовать с помощью различных информационных датчиков, технологий радиочастотной идентификации, систем глобального позиционирования и т. д. реализовать повсеместную связь между вещами и вещами, а также между вещами и людьми. В связи с этим мы можем достичь интеллектуального восприятия, идентификации и управления предметами и процессами.
Архитектура системы Интернета вещей обычно делится на три уровня:
Облачная платформа относится к модели добавления, использования и доставки связанных с Интернетом услуг, обычно включающих предоставление динамически масштабируемых и часто виртуализированных ресурсов через Интернет. Облачные платформы могут предоставить мощные вычислительные, хранилища и сетевые ресурсы для приложений Интернета вещей, снижая затраты на разработку и развертывание приложений Интернета вещей.
Визуализация данных означает отображение данных в визуальных формах, таких как графики и диаграммы, чтобы помочь пользователям более интуитивно понимать данные и получить представление о закономерностях и тенденциях, лежащих в основе данных.
MQTT (Message Queuing Telemetry Transport) — это облегченный протокол публикации/подписки сообщений, разработанный для устройств и сетей с низкой пропускной способностью и низким энергопотреблением. MQTT широко используется в сфере Интернета вещей, особенно подходит для устройств с ограниченными ресурсами и ненадежных сетевых сред.
HTTP (протокол передачи гипертекста) — это протокол прикладного уровня, используемый для передачи информации между веб-браузерами и веб-серверами. Протокол HTTP прост и удобен в использовании и широко используется в различных сетевых приложениях, включая Интернет вещей.
EMQX — это высокопроизводительный масштабируемый сервер сообщений MQTT с открытым исходным кодом, который поддерживает миллионы одновременных подключений и пропускную способность сообщений.
Flask — это легкая среда веб-приложений, написанная на Python, простая в освоении и использовании и подходящая для быстрого создания веб-приложений и интерфейсов API.
InfluxDB — это база данных временных рядов с открытым исходным кодом, предназначенная для хранения и запроса данных временных рядов. Она подходит для хранения данных датчиков IoT, данных мониторинга и т. д.
Grafana — это инструмент визуализации данных с открытым исходным кодом, который может подключать несколько источников данных для создания красивых и мощных информационных панелей и отображения данных в реальном времени.
В рамках этого проекта будет создана облачная платформа Интернета вещей, поддерживающая протоколы 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, для создания облачной платформы IoT, которая поддерживает протоколы MQTT и HTTP, а также реализует сбор, хранение и визуальное отображение данных. Платформу можно гибко расширять для поддержки большего количества типов устройств и доступа к протоколам, а ее функции можно настраивать в соответствии с реальными потребностями.
Уведомление:
paho-mqtt
,influxdb
,flask
ждать.Если вам нужен конкретный код и идеи, вы можете отправить мне личное сообщение! ! !