跳过正文
  1. 文章/

IoT 物联网:从概念到实践的完整指南

sun.ao
作者
sun.ao
我是 sun.ao,一名热爱技术的程序员,专注于 AI 和数智化领域。
目录

什么是 IoT?
#

IoT(Internet of Things,物联网) 是一个简单而深刻的概念:让万物相连,让物体"说话"。

传统互联网连接的是人——你用手机刷视频、用电脑发邮件。而物联网连接的是物体——温度传感器、智能灯泡、工业机器人、农田里的土壤监测器……

物联网的本质:把物理世界数字化,让物体具备感知、通信、计算能力。

一个简单的例子
#

想象一个智能温室:

┌─────────────────────────────────────────────────────────┐
│                      智能温室系统                         │
│                                                         │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐          │
│  │ 温度传感器 │    │ 湿度传感器 │    │ 光照传感器 │          │
│  └─────┬────┘    └─────┬────┘    └─────┬────┘          │
│        │               │               │                │
│        └───────────────┼───────────────┘                │
│                        ▼                                │
│              ┌─────────────────┐                        │
│              │   边缘网关/控制器  │                        │
│              │  (数据采集+决策)   │                        │
│              └────────┬────────┘                        │
│                       │                                 │
│        ┌──────────────┼──────────────┐                  │
│        ▼              ▼              ▼                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐              │
│  │ 通风系统  │  │ 灌溉系统  │  │ 遮阳帘   │              │
│  └──────────┘  └──────────┘  └──────────┘              │
│                                                         │
│        温度高 → 自动通风    土壤干 → 自动浇水             │
│        光照强 → 放下遮阳帘                              │
└─────────────────────────────────────────────────────────┘

没有人工干预,温室自动维持最佳生长环境。这就是物联网的力量。

IoT 的三层架构
#

理解物联网,首先要理解它的分层架构:

┌─────────────────────────────────────────────────────────┐
│                    应用层 (Application)                  │
│         用户界面、业务逻辑、数据分析、AI 决策              │
│              手机 App、Web 平台、数据大屏                 │
└─────────────────────────────────────────────────────────┘
                           │ 云端通信 (MQTT/HTTP/CoAP)
┌─────────────────────────────────────────────────────────┐
│                    网络层 (Network)                      │
│         数据传输、协议转换、边缘计算、安全认证              │
│           网关、路由器、基站、边缘服务器                   │
└─────────────────────────────────────────────────────────┘
                           │ 本地通信 (WiFi/蓝牙/Zigbee)
┌─────────────────────────────────────────────────────────┐
│                    感知层 (Perception)                   │
│         数据采集、设备控制、本地处理                       │
│        传感器、执行器、嵌入式设备、智能终端                │
└─────────────────────────────────────────────────────────┘
IoT 三层架构图

感知层:物联网的"感官"
#

感知层是物联网的"眼睛"和"手脚":

传感器(感知世界)

类型作用应用场景
温湿度传感器感知环境温湿度智能家居、农业、仓储
光照传感器感知光线强度智能照明、农业
运动传感器检测人体移动安防、智能开关
气体传感器检测有害气体工业安全、空气质量
GPS/北斗定位追踪物流、车辆管理
摄像头视觉感知安防、人脸识别

执行器(改变世界)

类型作用应用场景
继电器控制电路通断智能插座、灯光控制
电机机械运动智能窗帘、机器人
电磁阀控制流体智能灌溉、燃气控制
蜂鸣器/喇叭声音输出报警、语音交互

网络层:物联网的"神经"
#

网络层负责数据传输,是物联网的"神经通路"。

通信协议对比
#

协议传输距离功耗带宽典型应用
WiFi50-100m智能家居、视频监控
蓝牙 (BLE)10-100m可穿戴设备、智能锁
Zigbee10-100m极低智能家居、工业传感
Z-Wave30m极低智能家居
LoRa2-15km极低极低智慧农业、城市
NB-IoT10km+极低智能抄表、共享单车
5G数km极高自动驾驶、工业控制

如何选择通信协议?
#

                    需要传输视频/大量数据?
              ┌────────────┴────────────┐
              │ 是                      │ 否
              ▼                         ▼
         WiFi / 5G              需要远距离传输?
                        ┌────────────┴────────────┐
                        │ 是                      │ 否
                        ▼                         ▼
                   LoRa / NB-IoT           设备由电池供电?
                                  ┌────────────┴────────────┐
                                  │ 是                      │ 否
                                  ▼                         ▼
                            Zigbee / BLE                 WiFi
                            (低功耗 mesh)              (方便接入)

应用层:物联网的"大脑"
#

应用层是用户直接接触的部分,包括:

  • 用户界面:手机 App、Web 平台、小程序
  • 数据存储:时序数据库(InfluxDB、TimescaleDB)
  • 数据处理:实时流处理、批量分析
  • AI 决策:异常检测、预测性维护、智能控制

核心通信协议详解
#

IoT 通信协议对比图

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 GreengrassAWS 生态,支持 LambdaAWS 用户
Azure IoT Edge微软生态,支持容器Azure 用户
KubeEdgeKubernetes 原生云原生环境
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 开发技术栈
#

嵌入式开发
#

平台特点适用场景
ESP32WiFi+蓝牙,性价比高智能家居、可穿戴
STM32工业级,稳定可靠工业控制、汽车电子
Raspberry PiLinux 系统,算力强边缘网关、原型开发
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.jsExpress, NestJS高并发、实时通信
PythonFastAPI, Django快速开发、AI 集成
GoGin, Echo高性能、微服务
JavaSpring 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
TimescaleDBPostgreSQL 扩展,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 应用场景全景图
┌─────────────────────────────────────────────────────────────────────┐
│                        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 推理)
├── 大规模系统架构设计
├── 安全体系构建
└── 行业解决方案设计

物联网是一个跨学科的领域,需要硬件、软件、网络、安全等多方面知识。但入门并不难——从一个智能灯泡、一个温度传感器开始,逐步深入,你会发现物联网的世界精彩纷呈。

扩展阅读
#

相关文章