物联网平台
物联网平台是物联网系统的核心,提供设备管理、数据存储、规则引擎等基础能力。本文将介绍主流物联网平台的特点和选型指南。
平台概述
什么是物联网平台?
物联网平台是连接设备与应用的中间层,提供设备接入、数据管理、规则引擎、应用使能等核心能力。
平台核心功能
┌─────────────────────────────────────────────────────────┐
│ 物联网平台 │
├─────────────────────────────────────────────────────────┤
│ 设备管理 │ 数据管理 │ 规则引擎 │ 应用使能 │
│ ───────── │ ───────── │ ───────── │ ──────── │
│ • 设备注册 │ • 数据存储 │ • 数据转发 │ • API │
│ • 状态监控 │ • 数据查询 │ • 告警规则 │ • SDK │
│ • 配置管理 │ • 数据分析 │ • 设备联动 │ • 可视化 │
│ • 固件升级 │ • 数据备份 │ • 场景编排 │ • 集成 │
└─────────────────────────────────────────────────────────┘
公有云 IoT 平台
AWS IoT Core
平台特点:
- 全球基础设施覆盖
- 丰富的服务生态
- 企业级安全合规
- 支持海量设备连接
核心服务:
| 服务 | 功能 |
|---|---|
| IoT Core | 设备连接、消息路由 |
| IoT Device Management | 设备管理 |
| IoT Analytics | 数据分析 |
| IoT Events | 事件检测 |
| IoT SiteWise | 工业数据收集 |
设备接入示例:
import boto3
import json
iot_client = boto3.client('iot-data', region_name='us-east-1')
def publish_telemetry(device_id, data):
topic = f'devices/{device_id}/telemetry'
iot_client.publish(
topic=topic,
payload=json.dumps(data)
)
publish_telemetry('sensor-001', {
'temperature': 25.5,
'humidity': 60,
'timestamp': '2024-01-01T00:00:00Z'
})
Azure IoT Hub
平台特点:
- 与微软生态深度集成
- 强大的边缘计算能力
- 企业级安全认证
- 支持 OPC-UA 工业协议
核心服务:
| 服务 | 功能 |
|---|---|
| IoT Hub | 设备连接、消息路由 |
| IoT Central | 托管应用平台 |
| IoT Edge | 边缘计算 |
| Digital Twins | 数字孪生 |
| Time Series Insights | 时序数据分析 |
设备接入示例:
from azure.iot.device import IoTHubDeviceClient, Message
connection_string = "HostName=your-hub.azure-devices.net;DeviceId=device-001;SharedAccessKey=xxx"
client = IoTHubDeviceClient.create_from_connection_string(connection_string)
def send_telemetry(temperature, humidity):
message = Message(json.dumps({
'temperature': temperature,
'humidity': humidity
}))
client.send_message(message)
send_telemetry(25.5, 60)
阿里云 IoT 平台
平台特点:
- 国内生态完善
- 本地化支持好
- 行业解决方案丰富
- 性价比高
核心服务:
| 服务 | 功能 |
|---|---|
| 物联网平台 | 设备管理、数据流转 |
| 物联网边缘计算 | 边缘网关 |
| 物联网数据分析 | 数据分析 |
| 物联网应用开发 | 低代码开发 |
设备接入示例:
import paho.mqtt.client as mqtt
import json
import time
import hmac
import hashlib
def generate_sign(product_key, device_name, device_secret):
timestamp = str(int(time.time()))
sign_content = f"clientId{device_name}deviceName{device_name}productKey{product_key}timestamp{timestamp}"
sign = hmac.new(device_secret.encode(), sign_content.encode(), hashlib.sha256).hexdigest()
return timestamp, sign
product_key = "your_product_key"
device_name = "your_device_name"
device_secret = "your_device_secret"
timestamp, sign = generate_sign(product_key, device_name, device_secret)
username = f"{device_name}&{product_key}"
password = f"hmacsha256,{sign}"
client = mqtt.Client(client_id=device_name)
client.username_pw_set(username, password)
client.connect(f"{product_key}.iot-as-mqtt.cn-shanghai.aliyuncs.com", 1883)
topic = f"/sys/{product_key}/{device_name}/thing/event/property/post"
payload = {
"id": "1",
"version": "1.0",
"params": {
"temperature": 25.5,
"humidity": 60
}
}
client.publish(topic, json.dumps(payload))
华为云 IoT 平台
平台特点:
- 边云协同能力强
- 工业物联网优势
- 国产化支持
- 安全合规
核心服务:
| 服务 | 功能 |
|---|---|
| 设备接入 | 设备连接管理 |
| 设备管理 | 设备生命周期管理 |
| 数据分析 | 数据处理分析 |
| 边缘计算 | 边缘网关管理 |
开源 IoT 平台
ThingsBoard
平台特点:
- 开源免费
- 功能完善
- 可视化强
- 支持多租户
核心功能:
- 设备管理:设备注册、配置、监控
- 数据存储:时序数据存储
- 规则引擎:可视化规则配置
- 可视化:仪表盘、图表
部署方式:
# Docker 部署
docker run -it -p 9090:9090 \
-v ~/.my-thingsboard-data:/data \
-v ~/.my-thingsboard-logs:/var/log/thingsboard \
thingsboard/tb-postgres
设备接入示例:
import paho.mqtt.client as mqtt
import json
ACCESS_TOKEN = "your_device_token"
client = mqtt.Client()
client.username_pw_set(ACCESS_TOKEN)
client.connect("thingsboard.example.com", 1883)
telemetry = {
"temperature": 25.5,
"humidity": 60
}
client.publish("v1/devices/me/telemetry", json.dumps(telemetry))
EMQX
平台特点:
- 高性能 MQTT Broker
- 支持百万级连接
- 丰富的协议支持
- 企业级特性
核心功能:
- MQTT Broker:消息代理
- 规则引擎:数据转发
- 设备管理:设备认证
- 监控告警:系统监控
部署方式:
# Docker 部署
docker run -d --name emqx \
-p 1883:1883 \
-p 8083:8083 \
-p 8084:8084 \
-p 8883:8883 \
-p 18083:18083 \
emqx/emqx:latest
Mosquitto
平台特点:
- 轻量级 MQTT Broker
- 低资源占用
- 配置简单
- 适合小型部署
部署方式:
# Docker 部署
docker run -it -p 1883:1883 \
-v /mosquitto/config:/mosquitto/config \
-v /mosquitto/data:/mosquitto/data \
-v /mosquitto/log:/mosquitto/log \
eclipse-mosquitto
Node-RED
平台特点:
- 可视化流程编排
- 丰富的节点库
- 快速原型开发
- 低代码平台
核心功能:
- 流程编排:可视化拖拽
- 协议支持:MQTT、HTTP、Modbus 等
- 数据处理:函数节点
- 集成:第三方服务集成
平台选型指南
选型考虑因素
| 因素 | 说明 |
|---|---|
| 部署方式 | 公有云 vs 私有化部署 |
| 设备规模 | 设备数量、并发连接数 |
| 功能需求 | 设备管理、数据分析、边缘计算 |
| 成本预算 | 平台费用、流量费用 |
| 安全合规 | 数据安全、隐私保护 |
| 技术支持 | 文档、社区、技术支持 |
场景推荐
| 场景 | 推荐平台 | 原因 |
|---|---|---|
| 企业级应用 | AWS IoT / Azure IoT | 功能全面、生态完善 |
| 国内应用 | 阿里云 IoT / 华为云 IoT | 本地化支持、性价比高 |
| 私有化部署 | ThingsBoard / EMQX | 开源、可控 |
| 快速原型 | Node-RED | 低代码、快速开发 |
| 工业物联网 | Azure IoT / 华为云 IoT | 工业协议支持、边云协同 |
平台核心能力
设备管理
设备生命周期:
注册 → 激活 → 运行 → 维护 → 废弃
核心功能:
- 设备注册:设备身份认证
- 设备影子:设备状态同步
- 配置管理:远程配置下发
- 固件升级:OTA 更新
- 设备分组:批量管理
数据管理
数据流转:
设备 → 平台 → 规则引擎 → 存储/应用
核心功能:
- 数据存储:时序数据库
- 数据查询:SQL/API 查询
- 数据分析:聚合、统计
- 数据导出:数据备份
规则引擎
规则类型:
- 数据转发:转发到其他服务
- 告警规则:条件触发告警
- 设备联动:设备间协同
- 场景编排:复杂业务逻辑
规则示例:
-- 温度超过阈值告警
SELECT
device_id,
temperature,
timestamp
FROM device_data
WHERE temperature > 30
小结
物联网平台是物联网系统的核心,选择合适的平台需要综合考虑部署方式、设备规模、功能需求、成本预算等因素。公有云平台适合快速部署和企业级应用,开源平台适合私有化部署和定制开发。
下一步,我们将学习设备开发,了解嵌入式开发和固件编程的核心技术。