什么是 IoT?#
IoT(Internet of Things,物联网) 是一个简单而深刻的概念:让万物相连,让物体"说话"。
传统互联网连接的是人——你用手机刷视频、用电脑发邮件。而物联网连接的是物体——温度传感器、智能灯泡、工业机器人、农田里的土壤监测器……
物联网的本质:把物理世界数字化,让物体具备感知、通信、计算能力。
一个简单的例子#
想象一个智能温室:
┌─────────────────────────────────────────────────────────┐
│ 智能温室系统 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 温度传感器 │ │ 湿度传感器 │ │ 光照传感器 │ │
│ └─────┬────┘ └─────┬────┘ └─────┬────┘ │
│ │ │ │ │
│ └───────────────┼───────────────┘ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 边缘网关/控制器 │ │
│ │ (数据采集+决策) │ │
│ └────────┬────────┘ │
│ │ │
│ ┌──────────────┼──────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 通风系统 │ │ 灌溉系统 │ │ 遮阳帘 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ 温度高 → 自动通风 土壤干 → 自动浇水 │
│ 光照强 → 放下遮阳帘 │
└─────────────────────────────────────────────────────────┘没有人工干预,温室自动维持最佳生长环境。这就是物联网的力量。
IoT 的三层架构#
理解物联网,首先要理解它的分层架构:
┌─────────────────────────────────────────────────────────┐
│ 应用层 (Application) │
│ 用户界面、业务逻辑、数据分析、AI 决策 │
│ 手机 App、Web 平台、数据大屏 │
└─────────────────────────────────────────────────────────┘
▲
│ 云端通信 (MQTT/HTTP/CoAP)
▼
┌─────────────────────────────────────────────────────────┐
│ 网络层 (Network) │
│ 数据传输、协议转换、边缘计算、安全认证 │
│ 网关、路由器、基站、边缘服务器 │
└─────────────────────────────────────────────────────────┘
▲
│ 本地通信 (WiFi/蓝牙/Zigbee)
▼
┌─────────────────────────────────────────────────────────┐
│ 感知层 (Perception) │
│ 数据采集、设备控制、本地处理 │
│ 传感器、执行器、嵌入式设备、智能终端 │
└─────────────────────────────────────────────────────────┘
感知层:物联网的"感官"#
感知层是物联网的"眼睛"和"手脚":
传感器(感知世界):
| 类型 | 作用 | 应用场景 |
|---|---|---|
| 温湿度传感器 | 感知环境温湿度 | 智能家居、农业、仓储 |
| 光照传感器 | 感知光线强度 | 智能照明、农业 |
| 运动传感器 | 检测人体移动 | 安防、智能开关 |
| 气体传感器 | 检测有害气体 | 工业安全、空气质量 |
| GPS/北斗 | 定位追踪 | 物流、车辆管理 |
| 摄像头 | 视觉感知 | 安防、人脸识别 |
执行器(改变世界):
| 类型 | 作用 | 应用场景 |
|---|---|---|
| 继电器 | 控制电路通断 | 智能插座、灯光控制 |
| 电机 | 机械运动 | 智能窗帘、机器人 |
| 电磁阀 | 控制流体 | 智能灌溉、燃气控制 |
| 蜂鸣器/喇叭 | 声音输出 | 报警、语音交互 |
网络层:物联网的"神经"#
网络层负责数据传输,是物联网的"神经通路"。
通信协议对比#
| 协议 | 传输距离 | 功耗 | 带宽 | 典型应用 |
|---|---|---|---|---|
| WiFi | 50-100m | 高 | 高 | 智能家居、视频监控 |
| 蓝牙 (BLE) | 10-100m | 低 | 中 | 可穿戴设备、智能锁 |
| Zigbee | 10-100m | 极低 | 低 | 智能家居、工业传感 |
| Z-Wave | 30m | 极低 | 低 | 智能家居 |
| LoRa | 2-15km | 极低 | 极低 | 智慧农业、城市 |
| NB-IoT | 10km+ | 极低 | 低 | 智能抄表、共享单车 |
| 5G | 数km | 中 | 极高 | 自动驾驶、工业控制 |
如何选择通信协议?#
需要传输视频/大量数据?
│
┌────────────┴────────────┐
│ 是 │ 否
▼ ▼
WiFi / 5G 需要远距离传输?
│
┌────────────┴────────────┐
│ 是 │ 否
▼ ▼
LoRa / NB-IoT 设备由电池供电?
│
┌────────────┴────────────┐
│ 是 │ 否
▼ ▼
Zigbee / BLE WiFi
(低功耗 mesh) (方便接入)应用层:物联网的"大脑"#
应用层是用户直接接触的部分,包括:
- 用户界面:手机 App、Web 平台、小程序
- 数据存储:时序数据库(InfluxDB、TimescaleDB)
- 数据处理:实时流处理、批量分析
- AI 决策:异常检测、预测性维护、智能控制
核心通信协议详解#

MQTT:物联网的事实标准#
MQTT(Message Queuing Telemetry Transport) 是最流行的物联网通信协议,专为低带宽、不稳定网络设计。
核心概念#
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Publisher │ │ Broker │ │ Subscriber │
│ (温度传感器) │ │ (消息代理) │ │ (手机 App) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
│ Publish │ │
│ Topic: home/temp │ │
│ Payload: {"temp":25} │ │
│───────────────────────▶│ │
│ │ Forward │
│ │ Topic: home/temp │
│ │───────────────────────▶│
│ │ │关键特性:
| 特性 | 说明 |
|---|---|
| 发布/订阅模式 | 解耦设备与应用,支持一对多通信 |
| QoS 服务质量 | 0-至多一次、1-至少一次、2-精确一次 |
| 遗嘱消息 | 设备异常断开时自动通知 |
| 保留消息 | 新订阅者立即获取最新状态 |
| 轻量级 | 最小消息头仅 2 字节 |
QoS 级别详解#
QoS 0: At Most Once(至多一次)
┌───────┐ ┌───────┐
│Publisher│───PUBLISH───▶ │Broker │
└───────┘ └───────┘
"发完就忘,不保证送达"
适用场景:传感器数据频繁上报,丢一两条无所谓
QoS 1: At Least Once(至少一次)
┌───────┐ ┌───────┐
│Publisher│───PUBLISH───▶ │Broker │
│ │◀──PUBACK──── │ │
└───────┘ └───────┘
"确认送达,可能重复"
适用场景:重要数据,接收方可去重
QoS 2: Exactly Once(精确一次)
┌───────┐ ┌───────┐
│Publisher│───PUBLISH───▶ │Broker │
│ │◀──PUBREC──── │ │
│ │───PUBREL───▶ │ │
│ │◀──PUBCOMP─── │ │
└───────┘ └───────┘
"四次握手,精确送达"
适用场景:计费、支付等不能重复的场景代码示例#
# Python MQTT 客户端示例
import paho.mqtt.client as mqtt
import json
import random
import time
# 连接回调
def on_connect(client, userdata, flags, rc):
print(f"Connected with result code {rc}")
# 订阅主题
client.subscribe("home/+/command")
# 消息回调
def on_message(client, userdata, msg):
print(f"Topic: {msg.topic}, Payload: {msg.payload.decode()}")
# 创建客户端
client = mqtt.Client(client_id="temp-sensor-001")
client.on_connect = on_connect
client.on_message = on_message
# 连接 Broker
client.connect("broker.example.com", 1883, 60)
# 模拟温度上报
def publish_temperature():
temp = round(20 + random.random() * 10, 1)
payload = json.dumps({
"device_id": "temp-sensor-001",
"temperature": temp,
"timestamp": int(time.time())
})
client.publish("home/livingroom/temperature", payload, qos=1)
print(f"Published: {payload}")
# 启动网络循环
client.loop_start()
while True:
publish_temperature()
time.sleep(5)CoAP:受限设备协议#
CoAP(Constrained Application Protocol) 专为资源受限设备设计,类似"轻量版 HTTP"。
HTTP vs CoAP 对比:
HTTP:
GET /sensors/temperature HTTP/1.1
Host: example.com
Accept: application/json
User-Agent: Mozilla/5.0...
(数百字节的头部)
CoAP:
CON GET /sensors/temperature
Token: 0x01
Accept: application/json
(仅几个字节的头部)适用场景:嵌入式设备、低功耗传感器网络
HTTP/REST:通用方案#
对于有稳定电源和网络连接的设备,HTTP REST API 仍然是简单可靠的选择:
# 上报温度数据
POST /api/v1/devices/temp-sensor-001/telemetry
Content-Type: application/json
{
"temperature": 25.6,
"humidity": 65,
"timestamp": "2026-03-26T10:30:00Z"
}
# 获取设备状态
GET /api/v1/devices/temp-sensor-001/status
# 下发控制命令
POST /api/v1/devices/smart-plug-001/command
{
"action": "turn_on",
"params": {}
}边缘计算:让计算靠近数据源#
为什么需要边缘计算?#
传统云计算模式:所有数据上传云端处理
┌─────────┐ ┌─────────┐
│ 传感器 │──────数据上传──────▶│ 云端 │
└─────────┘ │ 处理分析 │
└────┬────┘
│
┌────▼────┐
│ 下发指令 │
└────┬────┘
│
┌─────────┐ │
│ 执行器 │◀────────────────────────┘
└─────────┘
问题:
- 延迟高(数据往返云端)
- 带宽成本高(海量数据上传)
- 隐私风险(敏感数据出本地)
- 可靠性差(断网即瘫痪)边缘计算模式:在本地处理数据
┌─────────────────────────────────────────┐
│ 边缘网关/边缘服务器 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │数据处理 │ │本地决策 │ │协议转换 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└────────────────────┬────────────────────┘
│ 仅上传关键数据/结果
▼
┌─────────┐
│ 云端 │
│ 全局分析 │
└─────────┘
优势:
- 低延迟(本地处理,毫秒级响应)
- 省带宽(只上传必要数据)
- 更安全(敏感数据不出本地)
- 更可靠(断网也能本地运行)边缘计算架构#
┌─────────────────────────────────────────────────────────────┐
│ 云端 (Cloud) │
│ 全局分析、模型训练、历史数据存储、跨区域协调 │
└─────────────────────────────┬───────────────────────────────┘
│
│ MQTT/HTTP
▼
┌─────────────────────────────────────────────────────────────┐
│ 边缘层 (Edge) │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 边缘网关/边缘服务器 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │数据聚合 │ │规则引擎 │ │本地存储 │ │AI 推理 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────┬───────────────────────────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Zigbee │ │ 蓝牙 BLE │ │ 有线串口 │
│ 协调器 │ │ 网关 │ │ RS485 │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
┌──────┴──────┐ ┌──────┴──────┐ ┌──────┴──────┐
│ Zigbee 设备 │ │ BLE 设备 │ │ 工业传感器 │
└─────────────┘ └─────────────┘ └─────────────┘边缘计算平台#
| 平台 | 特点 | 适用场景 |
|---|---|---|
| AWS IoT Greengrass | AWS 生态,支持 Lambda | AWS 用户 |
| Azure IoT Edge | 微软生态,支持容器 | Azure 用户 |
| KubeEdge | Kubernetes 原生 | 云原生环境 |
| EdgeX Foundry | 开源、硬件无关 | 通用工业场景 |
| Node-RED | 可视化编程 | 快速原型开发 |
IoT 平台:加速开发的利器#
为什么需要 IoT 平台?#
从零搭建物联网系统,需要处理:
- 设备接入与管理
- 身份认证与安全
- 数据采集与存储
- 规则引擎与告警
- 可视化与 API
IoT 平台把这些通用能力封装好,让你专注于业务逻辑。
主流 IoT 平台对比#
| 平台 | 类型 | 特点 | 定价 |
|---|---|---|---|
| AWS IoT Core | 云平台 | 功能全面,生态丰富 | 按量付费 |
| Azure IoT Hub | 云平台 | 企业级,与 Azure 深度集成 | 按量付费 |
| 阿里云 IoT Platform | 云平台 | 国内生态好,中文支持 | 按量付费 |
| 腾讯云 IoT Explorer | 云平台 | 微信小程序集成方便 | 按量付费 |
| ThingsBoard | 开源 | 自托管,功能强大 | 免费/商业版 |
| EMQX | 开源 | MQTT Broker 专家 | 免费/企业版 |
| Home Assistant | 开源 | 智能家居首选 | 免费 |
ThingsBoard 快速入门#
ThingsBoard 是一个开源 IoT 平台,支持设备管理、数据可视化、规则引擎。
# docker-compose.yml
version: '3'
services:
thingsboard:
image: thingsboard/tb-postgres
ports:
- "9090:9090"
- "1883:1883"
- "7070:7070"
environment:
TB_QUEUE_TYPE: in-memory
volumes:
- ./data:/data
- ./logs:/var/log/thingsboard设备接入示例:
import paho.mqtt.client as mqtt
import json
import time
# ThingsBoard MQTT 接入
THINGSBOARD_HOST = "localhost"
ACCESS_TOKEN = "your-device-token"
client = mqtt.Client()
client.username_pw_set(ACCESS_TOKEN)
client.connect(THINGSBOARD_HOST, 1883, 60)
# 上报遥测数据
while True:
telemetry = {
"temperature": 25.5,
"humidity": 60
}
client.publish("v1/devices/me/telemetry", json.dumps(telemetry))
time.sleep(5)安全:物联网的生命线#
IoT 安全挑战#
物联网设备数量庞大、部署分散、算力有限,面临独特安全挑战:
┌─────────────────────────────────────────────────────────────┐
│ IoT 安全威胁全景 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 设备层威胁: │
│ ├── 固件漏洞利用 │
│ ├── 物理攻击(拆解、篡改) │
│ ├── 默认密码/弱密码 │
│ └── 恶意固件刷入 │
│ │
│ 通信层威胁: │
│ ├── 中间人攻击(窃听、篡改) │
│ ├── 重放攻击 │
│ ├── DDoS 攻击(设备被控为僵尸网络) │
│ └── 协议漏洞利用 │
│ │
│ 平台层威胁: │
│ ├── 数据泄露 │
│ ├── 未授权访问 │
│ ├── API 滥用 │
│ └── 供应链攻击 │
│ │
└─────────────────────────────────────────────────────────────┘安全最佳实践#
1. 设备身份认证#
每台设备应有唯一身份标识,杜绝"默认密码":
# 设备证书认证示例
import ssl
context = ssl.create_default_context()
context.load_cert_chain(
certfile="/path/to/device.crt",
keyfile="/path/to/device.key"
)
context.load_verify_locations("/path/to/ca.crt")
client.tls_set_context(context)
client.tls_insecure_set(False) # 强制验证服务器证书2. 通信加密#
所有通信必须加密,使用 TLS/DTLS:
未加密通信:
设备 ────明文数据────▶ 服务器
⚠️ 可被窃听、篡改
TLS 加密通信:
设备 ════加密数据════▶ 服务器
✓ 机密性、完整性、真实性3. 固件安全更新#
支持 OTA(Over-The-Air)安全更新:
安全 OTA 更新流程:
1. 服务器签名固件
固件 + 私钥签名 → 签名固件包
2. 设备验证签名
签名固件包 + 公钥 → 验证通过 → 安装
→ 验证失败 → 拒绝
3. 安全启动
每次启动验证固件完整性4. 最小权限原则#
设备只拥有完成任务所需的最小权限:
{
"device_id": "temp-sensor-001",
"permissions": {
"publish": ["home/livingroom/temperature"],
"subscribe": ["home/livingroom/command"]
}
}实战:搭建智能家居系统#

系统架构#
┌─────────────────────────────────────────────────────────────┐
│ 智能家居系统 │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Home Assistant │ │
│ │ (智能家居控制中心) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │自动化规则│ │场景模式 │ │语音控制 │ │手机控制 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────┼────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Zigbee 网关 │ │ WiFi 设备 │ │ 蓝牙设备 │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │
│ │智能灯泡/开关 │ │智能插座/摄像头│ │智能锁/传感器 │ │
│ │窗帘电机/传感器│ │智能音箱/电视 │ │温湿度计 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘Home Assistant 安装#
# docker-compose.yml
version: '3'
services:
homeassistant:
container_name: homeassistant
image: homeassistant/home-assistant:stable
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
network_mode: host自动化规则示例#
# configuration.yaml
automation:
# 回家自动开灯
- alias: "Turn on lights when arriving home"
trigger:
- platform: state
entity_id: device_tracker.phone
to: "home"
action:
- service: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 80
# 温度过高自动开空调
- alias: "Turn on AC when temperature is high"
trigger:
- platform: numeric_state
entity_id: sensor.living_room_temperature
above: 28
condition:
- condition: state
entity_id: binary_sensor.home_occupied
state: "on"
action:
- service: climate.set_temperature
target:
entity_id: climate.living_room_ac
data:
temperature: 26
hvac_mode: cool
# 晚上自动关闭所有灯
- alias: "Turn off all lights at midnight"
trigger:
- platform: time
at: "00:00:00"
action:
- service: light.turn_off
target:
entity_id: all自定义传感器集成#
# custom_components/my_sensor/sensor.py
from homeassistant.components.sensor import SensorEntity
from homeassistant.const import TEMP_CELSIUS
import aiohttp
class MyTemperatureSensor(SensorEntity):
"""自定义温度传感器"""
def __init__(self, device_id, name):
self._device_id = device_id
self._name = name
self._state = None
self._available = False
@property
def name(self):
return self._name
@property
def unique_id(self):
return f"my_sensor_{self._device_id}"
@property
def state(self):
return self._state
@property
def unit_of_measurement(self):
return TEMP_CELSIUS
async def async_update(self):
"""从设备获取最新数据"""
try:
async with aiohttp.ClientSession() as session:
async with session.get(
f"http://device.local/api/temperature"
) as response:
data = await response.json()
self._state = data["temperature"]
self._available = True
except Exception:
self._available = False工业 IoT(IIoT):智能制造的核心#
工业 4.0 与 IIoT#
工业物联网(IIoT,Industrial IoT)是工业 4.0 的核心技术:
工业 1.0 → 工业 2.0 → 工业 3.0 → 工业 4.0
蒸汽机 电气化 自动化 智能化
机械生产 流水线 PLC控制 IIoT + AI
工业 4.0 核心特征:
├── 互联互通:设备、系统、人员全面连接
├── 数据驱动:数据成为核心生产要素
├── 智能决策:AI 辅助甚至自主决策
└── 灵活生产:个性化定制、柔性制造预测性维护#
传统维护方式:
| 方式 | 描述 | 问题 |
|---|---|---|
| 故障后维护 | 坏了再修 | 停机损失大 |
| 定期维护 | 按时间更换零件 | 过度维护,浪费资源 |
| 预测性维护 | 根据设备状态预测 | 恰到好处,最优方案 |
预测性维护实现:
┌─────────────────────────────────────────────────────────────┐
│ 预测性维护系统 │
│ │
│ 数据采集层: │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │振动传感器│ │温度传感器│ │电流传感器│ │声学传感器│ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └───────────┼───────────┼───────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 边缘计算网关 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │数据预处理│ │特征提取 │ │异常检测 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 云端 AI 平台 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │模型训练 │ │寿命预测 │ │维护建议 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 维护执行系统 │ │
│ │ "电机轴承预计 72 小时内故障,建议立即更换" │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘数字孪生#
数字孪生是物理设备在数字世界的"镜像":
物理世界 数字世界
┌─────────────┐ ┌─────────────┐
│ 实体设备 │◀────实时数据────▶│ 数字孪生 │
│ (电机/产线) │ │ (3D 模型) │
└─────────────┘ └──────┬──────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│性能优化 │ │故障模拟 │ │培训演练 │
└─────────┘ └─────────┘ └─────────┘
价值:
- 在数字世界试错,零风险
- 优化参数后应用到物理世界
- 模拟极端工况,提前发现问题IoT 开发技术栈#
嵌入式开发#
| 平台 | 特点 | 适用场景 |
|---|---|---|
| ESP32 | WiFi+蓝牙,性价比高 | 智能家居、可穿戴 |
| STM32 | 工业级,稳定可靠 | 工业控制、汽车电子 |
| Raspberry Pi | Linux 系统,算力强 | 边缘网关、原型开发 |
| Arduino | 简单易学,生态丰富 | 教育、快速原型 |
ESP32 示例代码:
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
// WiFi 配置
const char* ssid = "your-ssid";
const char* password = "your-password";
// MQTT 配置
const char* mqtt_server = "broker.example.com";
const char* mqtt_user = "device-001";
const char* mqtt_password = "device-token";
// 传感器配置
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
dht.begin();
// 连接 WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
// 配置 MQTT
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
// 读取传感器数据
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (!isnan(temp) && !isnan(hum)) {
// 构造 JSON 消息
char payload[100];
snprintf(payload, sizeof(payload),
"{\"temperature\":%.1f,\"humidity\":%.1f}", temp, hum);
// 发布到 MQTT
client.publish("home/livingroom/telemetry", payload);
Serial.println(payload);
}
delay(5000); // 每 5 秒上报一次
}
void reconnect() {
while (!client.connected()) {
if (client.connect("esp32-client", mqtt_user, mqtt_password)) {
Serial.println("MQTT connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
delay(5000);
}
}
}后端开发#
IoT 后端常用技术栈:
| 语言 | 框架 | 适用场景 |
|---|---|---|
| Node.js | Express, NestJS | 高并发、实时通信 |
| Python | FastAPI, Django | 快速开发、AI 集成 |
| Go | Gin, Echo | 高性能、微服务 |
| Java | Spring Boot | 企业级应用 |
Node.js + MQTT 示例:
// server.js
const express = require('express');
const mqtt = require('mqtt');
const app = express();
// 连接 MQTT Broker
const client = mqtt.connect('mqtt://broker.example.com', {
username: 'server',
password: 'server-password'
});
// 订阅所有设备遥测
client.subscribe('home/+/telemetry');
// 处理设备消息
client.on('message', (topic, message) => {
const deviceId = topic.split('/')[1];
const data = JSON.parse(message.toString());
console.log(`Device ${deviceId}:`, data);
// 存储到数据库
saveTelemetry(deviceId, data);
// 检查告警规则
if (data.temperature > 30) {
sendAlert(deviceId, 'Temperature too high!');
}
});
// REST API: 获取设备列表
app.get('/api/devices', async (req, res) => {
const devices = await getDevices();
res.json(devices);
});
// REST API: 发送控制命令
app.post('/api/devices/:id/command', async (req, res) => {
const { id } = req.params;
const { action, params } = req.body;
client.publish(`home/${id}/command`, JSON.stringify({ action, params }));
res.json({ success: true });
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});时序数据库#
IoT 数据是典型的时间序列数据,需要专门的数据库:
| 数据库 | 特点 | 适用场景 |
|---|---|---|
| InfluxDB | 高性能写入,内置查询语言 | 监控、IoT |
| TimescaleDB | PostgreSQL 扩展,SQL 兼容 | 熟悉 SQL 的团队 |
| TDengine | 国产,高性能 | 大规模 IoT |
| Prometheus | 监控生态,PromQL | 监控告警 |
InfluxDB 示例:
from influxdb_client import InfluxDBClient, Point
from influxdb_client.client.write_api import SYNCHRONOUS
# 连接数据库
client = InfluxDBClient(url="http://localhost:8086", token="your-token")
# 写入数据
write_api = client.write_api(write_options=SYNCHRONOUS)
point = Point("temperature") \
.tag("device_id", "sensor-001") \
.tag("location", "living_room") \
.field("value", 25.5) \
.field("humidity", 60.0)
write_api.write(bucket="iot", org="my-org", record=point)
# 查询数据
query_api = client.query_api()
query = '''
from(bucket: "iot")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "temperature")
|> filter(fn: (r) => r.device_id == "sensor-001")
'''
tables = query_api.query(query, org="my-org")IoT 应用场景全景#

┌─────────────────────────────────────────────────────────────────────┐
│ IoT 应用场景全景 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 智能家居 智慧城市 智慧农业 │
│ ├── 智能照明 ├── 智能交通 ├── 精准灌溉 │
│ ├── 安防监控 ├── 环境监测 ├── 土壤监测 │
│ ├── 能源管理 ├── 智慧停车 ├── 温室控制 │
│ └── 语音控制 └── 垃圾管理 └── 病虫害预警 │
│ │
│ 工业物联网 智慧医疗 智慧物流 │
│ ├── 预测性维护 ├── 远程监护 ├── 货物追踪 │
│ ├── 产线监控 ├── 可穿戴设备 ├── 冷链监控 │
│ ├── 数字孪生 ├── 智能药盒 └── 仓储管理 │
│ └── 质量追溯 └── 康复训练 └── 路径优化 │
│ │
│ 智慧能源 智慧零售 车联网 │
│ ├── 智能电表 ├── 智能货架 ├── 车辆追踪 │
│ ├── 分布式能源 ├── 客流分析 ├── 远程诊断 │
│ ├── 负荷预测 ├── 自动补货 └── 自动驾驶 │
│ └── 电网监控 └── 电子价签 └── 车路协同 │
│ │
└─────────────────────────────────────────────────────────────────────┘未来趋势#
1. AI + IoT = AIoT#
AI 与 IoT 深度融合,让设备从"能连接"进化为"能思考":
传统 IoT:采集数据 → 上传云端 → 人工分析
AIoT:采集数据 → 边缘 AI 分析 → 智能决策 → 自动执行
应用示例:
- 智能摄像头:从"录像"到"理解"(人脸识别、行为分析)
- 工业设备:从"监测"到"预测"(故障预测、寿命预估)
- 智能音箱:从"听指令"到"懂意图"(上下文理解、主动服务)2. 边缘 AI 芯片#
专用 AI 芯片让边缘设备具备强大算力:
| 芯片 | 算力 | 应用 |
|---|---|---|
| NVIDIA Jetson | 高 | 机器人、自动驾驶 |
| Google Edge TPU | 中 | 视觉 AI |
| 瑞芯微 RK3588 | 中 | 边缘网关 |
| ESP32-S3 | 低 | 语音/图像识别 |
3. Matter 协议统一智能家居#
Matter 是智能家居的统一标准,打破品牌壁垒:
现状:
小米设备 ←→ 小米 App
华为设备 ←→ 华为 App
苹果设备 ←→ HomeKit
Matter 时代:
任何 Matter 设备 ←→ 任何 Matter 平台4. 低功耗广域网普及#
NB-IoT、LoRa 等技术让 IoT 走向更广阔场景:
传统方案:设备需频繁更换电池或拉电源
LPWAN 方案:一节电池用 5-10 年
应用:
- 智能水表/气表(地下、无电源)
- 共享单车(分散、无电源)
- 农业监测(野外、无电源)总结#
物联网正在从"概念"走向"现实",从"单点应用"走向"全面互联"。
核心要点回顾#
| 层级 | 核心技术 | 关键点 |
|---|---|---|
| 感知层 | 传感器、执行器 | 选择合适的传感器和通信方式 |
| 网络层 | MQTT、CoAP、LoRa | 根据场景选择协议,平衡功耗与带宽 |
| 平台层 | IoT 平台、时序数据库 | 善用现成平台,避免重复造轮子 |
| 应用层 | 数据分析、AI | 数据价值挖掘,智能决策 |
| 安全 | 身份认证、加密通信 | 安全贯穿全生命周期 |
学习路径建议#
入门阶段:
├── 学习嵌入式开发(Arduino/ESP32)
├── 理解 MQTT 协议
├── 搭建智能家居系统(Home Assistant)
└── 实践小项目(温湿度监测、智能开关)
进阶阶段:
├── 深入物联网平台(ThingsBoard/AWS IoT)
├── 学习边缘计算
├── 掌握时序数据库
└── 了解工业 IoT(OPC UA、Modbus)
高级阶段:
├── AIoT 开发(边缘 AI 推理)
├── 大规模系统架构设计
├── 安全体系构建
└── 行业解决方案设计物联网是一个跨学科的领域,需要硬件、软件、网络、安全等多方面知识。但入门并不难——从一个智能灯泡、一个温度传感器开始,逐步深入,你会发现物联网的世界精彩纷呈。
