domain-iot

Use when building IoT apps. Keywords: IoT, Internet of Things, sensor, MQTT, device, edge computing, telemetry, actuator, smart home, gateway, protocol, 物联网,…

INSTALLATION
npx skills add https://github.com/actionbook/rust-skills --skill domain-iot
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

IoT Domain

Layer 3: Domain Constraints

Domain Constraints → Design Implications

Domain Rule

Design Constraint

Rust Implication

Unreliable network

Offline-first

Local buffering

Power constraints

Efficient code

Sleep modes, minimal alloc

Resource limits

Small footprint

no_std where needed

Security

Encrypted comms

TLS, signed firmware

Reliability

Self-recovery

Watchdog, error handling

OTA updates

Safe upgrades

Rollback capability

Critical Constraints

Network Unreliability

RULE: Network can fail at any time

WHY: Wireless, remote locations

RUST: Local queue, retry with backoff

Power Management

RULE: Minimize power consumption

WHY: Battery life, energy costs

RUST: Sleep modes, efficient algorithms

Device Security

RULE: All communication encrypted

WHY: Physical access possible

RUST: 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

Environment

Stack

Crates

Linux gateway

tokio + std

rumqttc, reqwest

MCU device

embassy + no_std

embedded-hal

Hybrid

Split workloads

Both

Key Crates

Purpose

Crate

MQTT (std)

rumqttc, paho-mqtt

Embedded

embedded-hal, embassy

Async (std)

tokio

Async (no_std)

embassy

Logging (no_std)

defmt

Logging (std)

tracing

Design Patterns

Pattern

Purpose

Implementation

Pub/Sub

Device comms

MQTT topics

Edge compute

Local processing

Filter before upload

OTA updates

Firmware upgrade

Signed + rollback

Power mgmt

Battery life

Sleep + wake events

Store & forward

Network reliability

Local queue

Code Pattern: MQTT Client

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

Mistake

Domain Violation

Fix

No retry logic

Lost data

Exponential backoff

Always-on radio

Battery drain

Sleep between sends

Unencrypted MQTT

Security risk

TLS

No local buffer

Network outage = data loss

Persist locally

Trace to Layer 1

Constraint

Layer 2 Pattern

Layer 1 Implementation

Offline-first

Store &#x26; forward

Local queue + flush

Power efficiency

Sleep patterns

Timer-based wake

Network reliability

Retry

tokio-retry, backoff

Security

TLS

rustls, native-tls

Related Skills

When

See

Embedded patterns

domain-embedded

Async patterns

m07-concurrency

Error recovery

m13-domain-error

Performance

m10-performance

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card