网关与边缘设备
物联网网关是连接感知层和平台层的关键设备,负责协议转换、数据汇聚和边缘计算。本文将详细介绍网关的架构、功能和开发实践。
网关概述
什么是物联网网关?
物联网网关是连接不同网络的桥梁,负责将各种物联网设备的数据汇聚、转换后传输到云平台,同时将云平台的指令下发到设备。
网关的核心功能
┌─────────────────────────────────────────────────────────┐
│ 物联网网关 │
├─────────────────────────────────────────────────────────┤
│ 协议转换 │ 数据处理 │ 安全防护 │ 边缘计算 │
│ ───────── │ ───────── │ ───────── │ ──────── │
│ • 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 RTU | MQTT | 工业设备上云 |
| Zigbee | MQTT | 智能家居 |
| BLE | WiFi | 可穿戴设备 |
| LoRaWAN | HTTP | 广域物联网 |
协议转换实现
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 | 开源、模块化 | 工业物联网 |
| KubeEdge | Kubernetes 边缘扩展 | 云边协同 |
| AWS IoT Greengrass | AWS 生态 | AWS 用户 |
| Azure IoT Edge | Azure 生态 | Azure 用户 |
网关开发实践
硬件选型
| 平台 | 性能 | 功耗 | 适用场景 |
|---|---|---|---|
| 树莓派 4 | 高 | 5W | 开发原型、智能家居 |
| ESP32 | 低 | 0.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 安全升级
- 签名验证
- 回滚机制
小结
物联网网关是连接感知层和平台层的关键设备,承担协议转换、数据汇聚、边缘计算等核心功能。选择合适的网关硬件和软件架构,实现可靠的协议转换和边缘计算能力,是构建物联网系统的重要环节。
下一步,我们将学习物联网平台,了解云端设备管理和数据处理的核心技术。