SuperAPI AI 工具集

domain-iot

编程与开发

查看项目

更新于 10-15 08:18

技能介绍

IoT Domain

本技能面向 Rust 物联网应用开发,定位为领域约束层(Layer 3: Domain Constraints),将物联网领域规则转化为具体的设计约束与 Rust 实现要求。

领域约束与设计含义

技能以表格形式给出“领域规则 → 设计约束 → Rust 含义”的对应关系:

  • 网络不可靠 → 离线优先(Offline-first)→ 本地缓冲(Local buffering)
  • 功耗约束 → 高效代码 → 休眠模式、最小化分配
  • 资源受限 → 小占用体积 → 必要时使用 no_std
  • 安全性 → 加密通信 → TLS、签名固件
  • 可靠性 → 自恢复 → 看门狗、错误处理
  • OTA 更新 → 安全升级 → 回滚能力

关键约束

技能列出了几条关键规则(RULE / WHY / RUST):

  1. 网络不可靠:网络可能随时失败,原因是无线与远程环境;Rust 侧应采用本地队列与带退避的重试。
  2. 电源管理:需最小化功耗,原因是电池寿命与能源成本;Rust 侧应采用休眠模式与高效算法。
  3. 设备安全:所有通信必须加密,原因是可能存在物理访问;Rust 侧应使用 TLS 与签名消息。

从约束到设计(Layer 2)

技能给出从约束推导到设计模式与具体实现的追踪路径:

  • “需要离线优先设计” → m12-lifecycle:带持久化的本地缓冲;m13-domain-error:带退避的重试
  • “需要能效” → domain-embedded:no_std 模式;m10-performance:最小化分配
  • “需要可靠消息传递” → m07-concurrency:带超时的异步;MQTT:QoS 等级

运行环境对比

技能对比了三种环境的技术栈与 crate:

  • Linux 网关:tokio + std,使用 rumqttc、reqwest
  • MCU 设备:embassy + no_std,使用 embedded-hal
  • 混合架构:拆分工作负载,两者兼用

关键 crate

技能列出各用途对应的 crate:

  • MQTT(std):rumqttc、paho-mqtt
  • 嵌入式:embedded-hal、embassy
  • 异步(std):tokio
  • 异步(no_std):embassy
  • 日志(no_std):defmt
  • 日志(std):tracing

设计模式

技能给出模式、用途与实现方式:

  • Pub/Sub:设备通信,通过 MQTT 主题实现
  • 边缘计算:本地处理,上传前先过滤
  • OTA 更新:固件升级,签名加回滚
  • 电源管理:电池寿命,休眠与唤醒事件
  • 存储转发(Store & forward):网络可靠性,本地队列

代码模式:MQTT 客户端

技能提供了一个基于 rumqttc::AsyncClient 的异步 MQTT 示例,主要内容包括:创建 MqttOptions 并设置 keep-alive(30 秒);以 AsyncClient::new(options, 10) 创建客户端与事件循环;订阅 devices/device-1/commands,QoS 为 AtLeastOnce;通过 tokio::spawn 循环读取传感器数据并发布到 devices/device-1/telemetry,间隔 60 秒;主循环调用 eventloop.poll() 处理事件,出错时记录错误并等待 5 秒重试。

常见错误

技能列出常见错误及其所属的领域违规与修复方式:

  • 没有重试逻辑 → 数据丢失 → 指数退避
  • 无线电常开 → 电池耗尽 → 发送之间休眠
  • 未加密 MQTT → 安全风险 → TLS
  • 没有本地缓冲 → 网络中断即数据丢失 → 本地持久化

追踪到 Layer 1

从约束到 Layer 2 模式再到 Layer 1 实现的对应:

  • 离线优先 → 存储转发 → 本地队列加刷新
  • 能效 → 休眠模式 → 基于定时器的唤醒
  • 网络可靠性 → 重试 → tokio-retry、退避
  • 安全 → TLS → rustls、native-tls

相关技能

技能指出相关场景与对应技能:嵌入式模式见 domain-embedded,异步模式见 m07-concurrency,错误恢复见 m13-domain-error,性能见 m10-performance。