IoT 设备工具(IoT Device Tooling)
向导第 1 步「领域」的第二个选项。挑了这个,后面的模块、方案、参数 都会按 IoT 设备的口径过滤 —— 跟车控、家庭数据中心、边缘 AI 都不重叠。
覆盖范围:ESP32 系芯片上的传感器集线器、网关、面板、开发探针、 总线分析仪、家庭自动化端点,以及围绕它们的 Home Assistant / 原生 MQTT / Zigbee2MQTT / Matter / 独立本地设备生态。
明确不包括车 / 机控制 —— 那条线归 载具控制系统, 因为车的安全模型(电机断电、失控保护)和 IoT 完全不一样。
一个核心原则
IoT 的对手是「无声的数据丢失」,不是「肉眼可见的崩溃」。
车飞起来摔下来,你立刻看见。IoT 不一样:一台传感器在 Wi-Fi 重启 期间丢了 3 小时数据,没人会注意 —— 直到一个月后翻账单 / 翻图, 才发现某段时间是空的。
所以这个域的向导里有一个车控向导没有的轴:数据行为 (Data Behavior)。每个方案要声明 5 个字段:
| 字段 | 在问什么 |
|---|---|
retention | 本地存多久 / 多少条(RAM 环形 / Flash 环形 / 外置 Flash / SD) |
cache_on_disconnect | 断网时怎么办(直接丢 / 重连重放 / 聚合统计 / 带时间戳排队) |
dedup | 怎么去抖动(阈值变化 / 固定间隔 / 两者) |
rate_limit | 上报节流(none / 1Hz / 0.1Hz / 0.01Hz / 仅事件) |
power_loss_behavior | 掉电怎么办(volatile / persist_state / persist_queue / persist_both) |
默认值偏向「不丢」一侧 —— replay_on_reconnect、persist_state、
threshold_change,而不是 drop、volatile、none。探针类
(probe_tool)是例外:本地查看、用户自己就是消费者,允许
(none, drop, volatile)。
三轴模型
车控的三条逻辑链,在 IoT 这里换成了三个正交的选择轴:
| 轴 | 在问什么 | 数量 |
|---|---|---|
| Category(品类) | 这个设备为了什么而存在 | 27 种,跨 6 个家族 |
| Network Profile(网络剖面) | 它怎么联网 / 拓扑长什么样 | 17 种预设 |
| MCU Role(角色) | MCU 在拓扑里扮演什么 | 5 种 |
这三个轴在向导里就是第 2 / 3 / 4 步(车控对应的是 FormFactor /
Topology / Architecture)。挑完 Category 之后,某些「品类锁死了
NetworkProfile / Role」的情况下会自动跳两步(例如选了
lorawan_gateway,Profile 自动定为 LoRaWAN,Role 自动定为
gateway_bridge)—— 但 Back 一步随时可以回去改。
27 个 Category(品类) ÷ 6 个家族
| 家族 | 数量 | 都装些什么 |
|---|---|---|
| Sensing(传感) | 7 | sensor_hub / env_sampler / presence_detector / energy_monitor / air_quality_station / water_leak_sensor / soil_moisture_sensor |
| Actuation(执行) | 4 | actuator_controller / status_notifier / lock_controller / irrigation_valve_bank |
| Bridging(桥接) | 5 | mqtt_bridge / ble_scanner_proxy / zigbee_thread_gateway / lorawan_gateway / industrial_bus_bridge |
| Tooling(工具) | 4 | bus_analyzer / sigrok_probe / uart_debug_probe / esp_prog_replacement |
| Presentation(展示) | 3 | dashboard_panel / alarm_panel / indicator_bar |
| Specialty(特殊) | 4 | thread_zigbee_endpoint / esp_now_peer / data_logger / industrial_io_bank |
向导会按你选的家族把后面的 NetworkProfile 候选过滤一遍 —— 例如选
bus_analyzer 之后,只剩下 4 个 Wi-Fi 类剖面(包含 wifi_captive_local),
Zigbee / Thread / LoRaWAN 这些根本不会出现。
17 个 Network Profile(网络剖面)
按连接类型分,过滤后大致是这五组:
| 组 | 剖面 |
|---|---|
| Wi-Fi 系 | wifi_ha_native(ESPHome 原生 API)、wifi_mqtt_star、wifi_esphome_api、wifi_captive_local(纯本地 AP) |
| BLE 系 | ble_gatt_standalone、ble_mesh_distributed、ble_scanner_proxy_uplink |
| 802.15.4 系 | zigbee_leaf / zigbee_coordinator / thread_leaf / thread_border_router(C6 独占)、matter_over_wifi / matter_over_thread |
| 专网 / 远距 | esp_now_p2p(免路由器)、lorawan_endnode(SX1276/1262) |
| 有线 | wired_rs485_modbus、wired_can_bus |
每个剖面预先绑了一个默认链(uplink / downlink / HA 发布), 向导在你挑完之后会把这个三元组填进方案,你可以在「参数」步骤里覆盖。
C6 = 802.15.4 的唯一选项。 想做 Zigbee 协调器 / Thread border router / Matter-over-Thread 的方案,芯片自动锁 ESP32-C6,这是 硬件决定的(只有 C6 带 802.15.4 射频)。
5 个 MCU 角色
车控有 7 个角色(因为有 TX / RX 这种成对的链路);IoT 因为板间协同更少, 压缩成 5 个:
| 角色 | 它干什么 | 典型电源 |
|---|---|---|
sensor_leaf | 采样 → 去重 → 上行 → 睡。单向遥测。 | 电池(锂 / AA / 纽扣 / 太阳能) |
aggregator_hub | 本地 I²C / SPI / BLE 多点扇入,一个出口,断网时缓存。 | 市电 / PoE |
gateway_bridge | 协议翻译:Zigbee↔MQTT、BLE↔Wi-Fi、RS485↔MQTT、LoRaWAN↔TCP。无状态。 | 市电 / PoE |
probe_tool | 开发者面对的仪器,USB 供电,只走本地数据通路。 | usb_only |
panel_hmi | 用户面对的显示 / 输入(LCD / OLED / 键盘 / 报警)。 | 市电 / PoE |
27 个方案的形状
完整目录在 iot-device-tooling-dag-v2.md §6
(私有仓,仅 reference)。这里挑几个有代表性的,看「Category +
Network Profile + Role」是怎么凑出一个方案的:
| 方案 | Category | NetworkProfile | Role | 一句话 |
|---|---|---|---|---|
sensor_hub_solution | sensor_hub | wifi_ha_native | aggregator_hub | I²C / SPI 多传感器集线器,ESPHome 原生 API |
presence_mmwave_solution | presence_detector | wifi_ha_native | sensor_leaf | mmWave 存在感应(LD2410 这类) |
energy_ct_clamp_solution | energy_monitor | wifi_mqtt_star | sensor_leaf | CT 钳形电表,Flash 缓存 + 聚合统计 |
water_leak_solution | water_leak_sensor | ble_gatt_standalone | sensor_leaf | BLE 漏水报警,IP67 户外,AA 电池 |
soil_moisture_solution | soil_moisture_sensor | lorawan_endnode | sensor_leaf | 太阳能 + LoRaWAN,0.01Hz 上报 |
mqtt_gateway_bridge_solution | mqtt_bridge | wifi_mqtt_star | gateway_bridge | MQTT 网关,RAM 环形缓存 + 重放 |
zigbee_thread_gateway_solution | zigbee_thread_gateway | zigbee_coordinator | gateway_bridge | Zigbee 协调器(C6) |
sigrok_logic_analyzer_solution | sigrok_probe | wifi_captive_local | probe_tool | SUMP / OLS 协议,USB 供电 |
alarm_keypad_solution | alarm_panel | wifi_ha_native | panel_hmi | HA alarm_control_panel 实体 + 键盘 |
esp_now_sensor_solution | esp_now_peer | esp_now_p2p | sensor_leaf | 纽扣电池 + ESP-NOW,无路由器 |
向导里这个领域长什么样
| 步 | 内容 | 备注 |
|---|---|---|
| 1 | 领域 = IoT Device Tooling | 共用步骤 |
| 2 | Category(品类) | 27 选 1,先选 6 个家族再选品类 |
| 3 | Network Profile(网络剖面) | 17 选 1,按 Category 过滤后通常剩 3–8 个 |
| 4 | MCU Role(角色) | 5 选 1,按 Profile 过滤 |
| 5 | Device | 选芯片(D0WD / C6 / S3),如上面 Profile 已锁定 C6 则跳 |
| 6 | Module | 选模组,模组只剩 1 个时跳 |
| 7 | Solution | 候选基本已收敛到 1–3 个 |
| 8 | Variant(变种) | 同方案下的硬件子配置,例如继电器 4 / 8 通道,LCD / OLED / e-ink |
| 9 | Parameters | 全枚举,无手填(I²C 地址、Modbus slave ID、LoRaWAN DevEUI 等) |
| 10 | Review + Build | 共用步骤 |
车控向导是 7 步,IoT 是 10 步 —— 多出来的是 Category(2)、 NetworkProfile(3)、Variant(8)。这些步骤都支持自动跳过 + Back 回去改:某些选择从前一步推得出唯一答案时,直接前进两步, 但 Back 按钮永远能回到被跳过的步骤手动覆盖,顶部 banner 提示 「我们替你选了 X — 要改吗?」。
它不覆盖什么
- 车 / 机 / 飞行器控制 —— 去 载具控制系统。
尤其要躲开的反模式是「用 IoT 的
actuator_controller来开车」 —— 数据行为模型完全不一样(IoT 怕丢数据,车怕失控保护没生效)。 - OTA 密钥管理 / 安全启动密钥流转 —— 在另一份安全文档里。向导 只负责生成固件骨架,不负责签名链。
- RF 合规(FCC / CE / SRRC) —— 各国法规自己处理。向导给你
power profile(
mains_jack/battery_li/solar_harvest等), 不给你天线证书。 - 微文案 / i18n 字符串 —— 由
copy.ts管,不在领域定义里。
另见
- 浏览器向导 —— 实际操作的步骤页。
- 载具控制系统 —— 相邻域,容易选错的地方。
- RSHome 设备工具 ——
domain="iot_device_tooling"在 MCP 这一层的返回字段。 - 典型 8 步工作流 —— 跑通一次完整构建。