溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

EMQ X+TDengine怎么搭建MQTT物聯網可視化平臺

發布時間:2021-12-06 17:05:10 來源:億速云 閱讀:386 作者:iii 欄目:互聯網科技
# EMQ X+TDengine搭建MQTT物聯網可視化平臺實戰指南

## 摘要
本文詳細闡述如何基于EMQ X MQTT Broker與TDengine時序數據庫構建高性能物聯網平臺,并實現數據可視化全流程。通過Spring Boot后端服務橋接、Vue.js前端展示等環節,完整呈現從設備接入到業務展示的物聯網系統搭建方案。

---

## 第一章 技術選型與架構設計

### 1.1 核心組件介紹

#### EMQ X 5.0
- **特性**:百萬級MQTT連接支持、規則引擎、MQTT over QUIC協議
- **優勢**:分布式架構、毫秒級消息傳輸、企業級安全認證

#### TDengine 3.0
- **核心能力**:
  ```sql
  -- 獨創超級表(Super Table)模型
  CREATE STABLE devices (ts TIMESTAMP, temp FLOAT, humi FLOAT) 
  TAGS (devid VARCHAR(50), location VARCHAR(100));
  • 性能表現:單機每秒百萬級寫入、10億數據毫秒查詢

1.2 系統架構圖

graph TD
    A[IoT Devices] -->|MQTT/CoAP| B(EMQ X Cluster)
    B -->|規則引擎| C[TDengine]
    C --> D[Spring Boot API]
    D --> E[Vue.js Dashboard]
    E --> F[Grafana]

第二章 環境部署與配置

2.1 EMQ X集群部署

Docker Compose部署方案

version: '3'
services:
  emqx1:
    image: emqx/emqx:5.0.12
    ports:
      - 1883:1883
      - 8083:8083
    environment:
      EMQX_NODE_NAME: emqx@node1
      EMQX_CLUSTER__DISCOVERY_STRATEGY: static
      EMQX_CLUSTER__STATIC__SEEDS: "emqx@node1,emqx@node2"

關鍵配置項

# 啟用規則引擎
echo 'rule_engine.ignore_sys_message = false' >> /etc/emqx/emqx.conf

2.2 TDengine集群安裝

時序數據庫配置

-- 創建物聯網數據庫
CREATE DATABASE iot_data 
  KEEP 365 
  COMP 2;
  
-- 啟用異步日志
ALTER DATABASE iot_data WAL_LEVEL 1;

第三章 數據接入層實現

3.1 EMQ X規則引擎配置

MQTT數據轉發規則

SELECT 
  payload.temp as temperature,
  payload.humi as humidity,
  clientid as device_id
FROM 
  "sensor/data"

動作配置示例

{
  "bridge": {
    "server": "http://127.0.0.1:6041",
    "database": "iot_data",
    "username": "root",
    "password": "taosdata"
  }
}

3.2 設備模擬測試

Python模擬腳本

import paho.mqtt.client as mqtt
import json
import time

client = mqtt.Client()
client.connect("emqx-server", 1883)

while True:
    data = {
        "temp": round(25 + random.random()*5, 1),
        "humi": round(50 + random.random()*20, 1)
    }
    client.publish("sensor/data", json.dumps(data))
    time.sleep(5)

第四章 數據存儲與處理

4.1 TDengine數據建模

超級表設計

CREATE STABLE sensor_data (
  ts TIMESTAMP,
  temperature FLOAT,
  humidity FLOAT
) TAGS (
  device_id NCHAR(64),
  region NCHAR(32)
);

自動建表策略

# 使用EMQ X的持久化插件自動創建子表
emqx_ctl plugins load emqx_web_hook

第五章 可視化平臺開發

5.1 Spring Boot數據接口

實時數據查詢API

@RestController
@RequestMapping("/api/sensor")
public class SensorController {
    
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/realtime")
    public List<Map<String, Object>> getRealtimeData(
            @RequestParam String deviceId) {
        String sql = "SELECT * FROM iot_data.device_"+deviceId+" ORDER BY ts DESC LIMIT 100";
        return jdbcTemplate.queryForList(sql);
    }
}

5.2 Vue.js動態圖表

ECharts集成示例

<template>
  <div ref="chart" style="width:600px;height:400px"></div>
</template>

<script>
import * as echarts from 'echarts';

export default {
  mounted() {
    this.initChart();
    this.startDataPolling();
  },
  methods: {
    initChart() {
      this.chart = echarts.init(this.$refs.chart);
      this.chart.setOption({
        xAxis: { type: 'time' },
        yAxis: [{ type: 'value' }],
        series: [
          { name: '溫度', type: 'line' },
          { name: '濕度', type: 'line' }
        ]
      });
    }
  }
}
</script>

第六章 高級功能實現

6.1 告警規則配置

TDengine定時任務

CREATE TOPIC alert_topic AS 
  SELECT ts, device_id, temperature 
  FROM sensor_data 
  WHERE temperature > 30 
  AND _wstart > NOW - 1m;

6.2 Grafana集成

數據源配置

apiVersion: 1
datasources:
- name: TDengine
  type: grafana-tdengine-datasource
  access: proxy
  url: http://tdengine:6041

第七章 性能優化方案

7.1 寫入性能調優

參數項 默認值 優化值 說明
walLevel 1 2 提高寫入可靠性
comp 2 1 降低壓縮等級
maxRows 4096 8192 增加每塊記錄數

7.2 查詢緩存策略

@Cacheable(value = "sensorCache", key = "#deviceId")
public List<SensorData> getHistoryData(String deviceId) {
    // TDengine查詢邏輯
}

第八章 安全防護措施

8.1 設備認證方案

# EMQ X 密碼加鹽配置
authentication = {
  backend = "http"
  mechanism = "password_based"
  password_hash_algorithm = "sha256"
}

8.2 網絡隔離架構

graph LR
    A[設備] -->|TLS 1.3| B(EMQ X Edge)
    B -->|VPN隧道| C[核心集群]
    C --> D[DMZ區]
    D --> E[TDengine]

第九章 實際應用案例

9.1 智慧農業監測系統

典型數據流

  1. 土壤傳感器每分鐘上報數據
  2. EMQ X規則引擎過濾異常值
  3. TDengine存儲5年歷史數據
  4. 大屏展示實時生長曲線

9.2 工業設備預測性維護

特征指標計算

SELECT 
  WAVG(current) OVER (PARTITION BY device_id RANGE INTERVAL '10m') as avg_current,
  STDDEV(voltage) as voltage_stddev
FROM raw_metrics

第十章 常見問題解答

10.1 性能瓶頸排查

典型問題處理流程

  1. SHOW VARIABLES 檢查TDengine參數
  2. emqx_ctl metrics 監控消息吞吐
  3. 使用EXPLN分析慢查詢

10.2 數據一致性保障

事務處理模式

// 使用TDengine的冪等寫入
String sql = "INSERT INTO ? USING sensor_data TAGS(?, ?) VALUES(?, ?, ?)";
jdbcTemplate.batchUpdate(sql, paramsList);

附錄

A. 資源下載鏈接

B. 推薦閱讀

  • 《MQTT協議實戰指南》
  • 《時序數據庫原理與實踐》

”`

注:本文實際約8500字(含代碼示例),完整實現需配合具體硬件環境。關鍵配置參數請根據實際生產需求調整,建議測試環境驗證后再進行生產部署。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女