跳到主要内容

网关与边缘设备

物联网网关是连接感知层和平台层的关键设备,负责协议转换、数据汇聚和边缘计算。本文将详细介绍网关的架构、功能和开发实践。

网关概述

什么是物联网网关?

物联网网关是连接不同网络的桥梁,负责将各种物联网设备的数据汇聚、转换后传输到云平台,同时将云平台的指令下发到设备。

网关的核心功能

┌─────────────────────────────────────────────────────────┐
│ 物联网网关 │
├─────────────────────────────────────────────────────────┤
│ 协议转换 │ 数据处理 │ 安全防护 │ 边缘计算 │
│ ───────── │ ───────── │ ───────── │ ──────── │
│ • Modbus │ • 数据清洗 │ • 设备认证 │ • 本地存储 │
│ • Zigbee │ • 数据聚合 │ • 数据加密 │ • 规则引擎 │
│ • BLE │ • 数据压缩 │ • 访问控制 │ • AI 推理 │
│ • MQTT │ • 格式转换 │ • 安全审计 │ • 实时计算 │
└─────────────────────────────────────────────────────────┘

网关架构

硬件架构

┌─────────────────────────────────────────────────────────┐
│ 网关硬件 │
├─────────────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ CPU │ │ 内存 │ │ 存储 │ │ 电源 │ │
│ │ARM/x86 │ │ DDR4 │ │ eMMC/SD │ │ DC/POE │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
├─────────────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 以太网 │ │ WiFi │ │ 4G/5G │ │ USB │ │
│ │ RJ45 │ │ 模组 │ │ 模组 │ │ 接口 │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
├─────────────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Zigbee │ │ BLE │ │ LoRa │ │ RS485 │ │
│ │ 模组 │ │ 模组 │ │ 模组 │ │ 接口 │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────┘

软件架构

┌─────────────────────────────────────────────────────────┐
│ 应用层 │
│ 数据可视化 │ 规则引擎 │ AI 推理 │ 本地应用 │
├─────────────────────────────────────────────────────────┤
│ 中间件层 │
│ 消息队列 │ 数据库 │ 缓存 │ API 网关 │
├─────────────────────────────────────────────────────────┤
│ 协议层 │
│ MQTT Broker │ Modbus │ OPC-UA │ HTTP Server │
├─────────────────────────────────────────────────────────┤
│ 驱动层 │
│ Zigbee 驱动 │ BLE 驱动 │ LoRa 驱动 │ 串口驱动 │
├─────────────────────────────────────────────────────────┤
│ 操作系统 │
│ Linux │ RTOS │ 容器运行时 │
└─────────────────────────────────────────────────────────┘

网关类型

智能家居网关

功能特点:

  • 支持 Zigbee、蓝牙、WiFi
  • 本地场景联动
  • 语音助手集成
  • 手机 App 控制

典型产品:

  • 小米多功能网关
  • Aqara 网关
  • 涂鸦智能网关

工业物联网网关

功能特点:

  • 支持工业协议(Modbus、OPC-UA)
  • 工业级防护(IP65+)
  • 宽温工作(-40~70°C)
  • 边缘计算能力

典型应用:

  • PLC 数据采集
  • 设备状态监控
  • 预测性维护

边缘计算网关

功能特点:

  • 高性能处理器
  • 边缘 AI 能力
  • 本地数据存储
  • 容器化部署

典型产品:

  • NVIDIA Jetson 系列
  • 树莓派 + 扩展板
  • 工业边缘计算机

协议转换

常见协议转换场景

源协议目标协议应用场景
Modbus RTUMQTT工业设备上云
ZigbeeMQTT智能家居
BLEWiFi可穿戴设备
LoRaWANHTTP广域物联网

协议转换实现

Modbus 转 MQTT 示例:

import asyncio
from pymodbus.client import AsyncModbusSerialClient
import paho.mqtt.client as mqtt

class ModbusToMqttGateway:
def __init__(self, serial_port, mqtt_broker):
self.serial_port = serial_port
self.mqtt_broker = mqtt_broker
self.modbus_client = None
self.mqtt_client = mqtt.Client()

async def connect_modbus(self):
self.modbus_client = AsyncModbusSerialClient(
port=self.serial_port,
baudrate=9600,
parity='N',
stopbits=1,
bytesize=8
)
await self.modbus_client.connect()

def connect_mqtt(self):
self.mqtt_client.connect(self.mqtt_broker, 1883)
self.mqtt_client.loop_start()

async def read_and_publish(self):
while True:
result = await self.modbus_client.read_holding_registers(0, 10, unit=1)
if not result.isError():
data = {
'registers': result.registers,
'timestamp': time.time()
}
self.mqtt_client.publish('factory/modbus/data', json.dumps(data))
await asyncio.sleep(5)

async def run(self):
await self.connect_modbus()
self.connect_mqtt()
await self.read_and_publish()

gateway = ModbusToMqttGateway('/dev/ttyUSB0', 'broker.example.com')
asyncio.run(gateway.run())

边缘计算

边缘计算架构

┌─────────────────────────────────────────────────────────┐
│ 云端 │
│ 大数据分析 │ AI 训练 │ 全局管理 │
├─────────────────────────────────────────────────────────┤
│ 边缘网关 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 边缘计算引擎 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │数据预处理│ │规则引擎 │ │ AI 推理 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │本地存储 │ │协议转换 │ │设备管理 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ 设备层 │
│ 传感器 │ 执行器 │ 控制器 │
└─────────────────────────────────────────────────────────┘

边缘计算能力

1. 数据预处理

  • 数据清洗:过滤无效数据
  • 数据聚合:合并多条数据
  • 数据压缩:减少传输量

2. 规则引擎

  • 条件触发:满足条件执行动作
  • 设备联动:设备间协同控制
  • 告警处理:本地告警判断

3. 边缘 AI

  • 图像识别:本地视频分析
  • 异常检测:设备故障预测
  • 语音识别:本地语音处理

边缘计算平台

平台特点适用场景
EdgeX Foundry开源、模块化工业物联网
KubeEdgeKubernetes 边缘扩展云边协同
AWS IoT GreengrassAWS 生态AWS 用户
Azure IoT EdgeAzure 生态Azure 用户

网关开发实践

硬件选型

平台性能功耗适用场景
树莓派 45W开发原型、智能家居
ESP320.5W简单网关
NVIDIA Jetson极高15W边缘 AI
工业网关10W工业应用

软件开发

基于 Node-RED 的网关:

// Node-RED 流程示例
// Modbus 读取 → 数据处理 → MQTT 发布

// Modbus 读取节点配置
{
"topic": "modbus/read",
"unit": 1,
"fc": 3,
"address": 0,
"quantity": 10
}

// 数据处理函数
msg.payload = {
temperature: msg.payload[0] / 10,
humidity: msg.payload[1] / 10,
timestamp: Date.now()
};
return msg;

// MQTT 发布节点配置
{
"topic": "factory/sensor/data",
"qos": 1
}

容器化部署

Docker Compose 示例:

version: '3'
services:
mqtt-broker:
image: eclipse-mosquitto:2
ports:
- "1883:1883"
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data

edge-runtime:
image: nodered/node-red:latest
ports:
- "1880:1880"
volumes:
- ./node-red-data:/data
depends_on:
- mqtt-broker

edge-ai:
image: edgexfoundry/edgex-ui:latest
ports:
- "4000:4000"

网关安全

安全威胁

威胁描述防护措施
设备仿冒非法设备接入设备认证、证书
数据窃听数据传输被监听TLS 加密
恶意注入恶意数据注入数据校验、白名单
固件篡改固件被修改安全启动、签名验证

安全最佳实践

1. 设备认证

  • 双向 TLS 认证
  • 设备证书管理
  • 令牌认证

2. 数据安全

  • 传输加密(TLS)
  • 存储加密
  • 数据脱敏

3. 访问控制

  • 最小权限原则
  • 角色权限管理
  • 操作审计

4. 安全更新

  • OTA 安全升级
  • 签名验证
  • 回滚机制

小结

物联网网关是连接感知层和平台层的关键设备,承担协议转换、数据汇聚、边缘计算等核心功能。选择合适的网关硬件和软件架构,实现可靠的协议转换和边缘计算能力,是构建物联网系统的重要环节。

下一步,我们将学习物联网平台,了解云端设备管理和数据处理的核心技术。