Domain Iot

actionbook/rust-skills/skills/domain-iot

作者 actionbook5c40d3ad7851無授權條款1.5K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫6 週前更新

Use when building IoT apps. Keywords: IoT, Internet of Things, sensor, MQTT, device, edge computing, telemetry, actuator, smart home, gateway, protocol, 物联网, 传感器, 边缘计算, 智能家居

AI 產生的概覽

以 Rust 開發物聯網應用時的參考指引,涵蓋 MQTT、邊緣運算、功耗、安全與 OTA 限制。

功能
此技能提供物聯網軟體的領域限制與設計指引,將網路不穩定、功耗限制、資源限制與裝置安全等規則對應到 Rust 設計影響。它列出 Linux 閘道、MCU 裝置與混合架構的環境技術堆疊與 crate,並說明發布/訂閱、邊緣運算、OTA 更新與儲存轉發等設計模式。文件也包含一段 MQTT 用戶端程式範例,以及常見錯誤與相關技能的對照表。
適用情境
在設計與實作物聯網應用時使用,尤其是採用 Rust 且需要離線優先、低功耗、加密通訊或韌體更新的情境。在為閘道與嵌入式目標選擇 std 或 no_std 技術堆疊及 MQTT crate 時也適用。
執行需求
沒有指令碼或附帶資源,僅為說明文件。實作其中的範例需要 Rust 工具鏈,以及 rumqttc、tokio、embassy 或 embedded-hal 等 crate;範例用戶端還需要能連線至 MQTT 代理的網路。

IoT Domain

Layer 3: Domain Constraints

Domain Constraints → Design Implications

Domain RuleDesign ConstraintRust Implication
Unreliable networkOffline-firstLocal buffering
Power constraintsEfficient codeSleep modes, minimal alloc
Resource limitsSmall footprintno_std where needed
SecurityEncrypted commsTLS, signed firmware
ReliabilitySelf-recoveryWatchdog, error handling
OTA updatesSafe upgradesRollback capability

Critical Constraints

Network Unreliability

RULE: Network can fail at any timeWHY: Wireless, remote locationsRUST: Local queue, retry with backoff

Power Management

RULE: Minimize power consumptionWHY: Battery life, energy costsRUST: Sleep modes, efficient algorithms

Device Security

RULE: All communication encryptedWHY: Physical access possibleRUST: TLS, signed messages

Trace Down ↓

From constraints to design (Layer 2):

"Need offline-first design"    ↓ m12-lifecycle: Local buffer with persistence    ↓ m13-domain-error: Retry with backoff
"Need power efficiency"    ↓ domain-embedded: no_std patterns    ↓ m10-performance: Minimal allocations
"Need reliable messaging"    ↓ m07-concurrency: Async with timeout    ↓ MQTT: QoS levels

Environment Comparison

EnvironmentStackCrates
Linux gatewaytokio + stdrumqttc, reqwest
MCU deviceembassy + no_stdembedded-hal
HybridSplit workloadsBoth

Key Crates

PurposeCrate
MQTT (std)rumqttc, paho-mqtt
Embeddedembedded-hal, embassy
Async (std)tokio
Async (no_std)embassy
Logging (no_std)defmt
Logging (std)tracing

Design Patterns

PatternPurposeImplementation
Pub/SubDevice commsMQTT topics
Edge computeLocal processingFilter before upload
OTA updatesFirmware upgradeSigned + rollback
Power mgmtBattery lifeSleep + wake events
Store & forwardNetwork reliabilityLocal queue

Code Pattern: MQTT Client

rust
use rumqttc::{AsyncClient, MqttOptions, QoS};
async fn run_mqtt() -> anyhow::Result<()> {    let mut options = MqttOptions::new("device-1", "broker.example.com", 1883);    options.set_keep_alive(Duration::from_secs(30));
    let (client, mut eventloop) = AsyncClient::new(options, 10);
    // Subscribe to commands    client.subscribe("devices/device-1/commands", QoS::AtLeastOnce).await?;
    // Publish telemetry    tokio::spawn(async move {        loop {            let data = read_sensor().await;            client.publish("devices/device-1/telemetry", QoS::AtLeastOnce, false, data).await.ok();            tokio::time::sleep(Duration::from_secs(60)).await;        }    });
    // Process events    loop {        match eventloop.poll().await {            Ok(event) => handle_event(event).await,            Err(e) => {                tracing::error!("MQTT error: {}", e);                tokio::time::sleep(Duration::from_secs(5)).await;            }        }    }}

Common Mistakes

MistakeDomain ViolationFix
No retry logicLost dataExponential backoff
Always-on radioBattery drainSleep between sends
Unencrypted MQTTSecurity riskTLS
No local bufferNetwork outage = data lossPersist locally

Trace to Layer 1

ConstraintLayer 2 PatternLayer 1 Implementation
Offline-firstStore & forwardLocal queue + flush
Power efficiencySleep patternsTimer-based wake
Network reliabilityRetrytokio-retry, backoff
SecurityTLSrustls, native-tls

Related Skills

WhenSee
Embedded patternsdomain-embedded
Async patternsm07-concurrency
Error recoverym13-domain-error
Performancem10-performance

來源與署名

來源:actionbook/rust-skills位於skills/domain-iot提交5c40d3a

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架