Skip to content

micss-lab/ember-case-studies

Repository files navigation

ember-case-studies

Case studies used to evaluate the ember multi-agent framework on embedded devices. Each case study is implemented in two variants — agent-based (using ember) and standard (idiomatic baseline without agents) — and in two target languages: Rust and Arduino (C++). This structure is intended to support direct comparison between agent-based and conventional approaches to the same problem.


Case Studies

Smart Home (primary)

A composite smart home system integrating door lock control, plant monitoring, and a central HTTP control interface. This is the main case study for the paper. It is evaluated in two deployment configurations:

  • Non-distributed — all subsystems running on a single device
  • Distributed — subsystems split across multiple ESP32 devices communicating over ESP-NOW, with a dedicated center-control node exposing an HTTP server

Each configuration has agent-based and standard variants for both Rust and Arduino.

Door Lock

A PIR-triggered door lock. Two agents (PirAgent, LockAgent) handle sensing and actuation. Included as a standalone subsystem; in the smart home study it becomes one of the distributed nodes.

Plant Monitoring

A multi-sensor plant monitoring system with agents for moisture, light, temperature/humidity, pump control, and notifications. Likewise a standalone subsystem and a distributed node in the smart home study.

HTTP Server

A single-device HTTP server. Included as a building block for the center-control node.


Repository Layout

smart-home/          # Primary case study (non-distributed and distributed)
door-lock/           # Standalone door lock subsystem
plant-monitoring/    # Standalone plant monitoring subsystem
http-server/         # Standalone HTTP server
metrics/             # Metric collection scripts and study data
analysis/            # Study analysis notes
xtask/               # Build and run automation (see below)

Within each case study, the structure follows a consistent pattern:

<case-study>/
  rust/
    agent-based/
    standard/
  arduino/
    agent-based/
    standard/

For the smart home, distributed/ and non-distributed/ sit above the agent-based/ / standard/ split.


Running the Case Studies

Case studies are managed via a cargo xtask binary.

cargo xtask <COMMAND>

Available commands: build, check, run, metrics.

Running a case study

cargo xtask run <NAME> [OPTIONS]
Option Description Default
--variant agent-based or standard standard
--targets rust or arduino
--all-targets Run on both targets

Examples:

# Run the smart home case study, agent-based variant, Rust only
cargo xtask run smart-home --variant agent-based --targets rust

# Run plant monitoring, agent-based, Arduino
cargo xtask run plant-monitoring --variant agent-based --targets arduino

Collecting metrics

cargo xtask metrics

Metric results and analysis scripts are in metrics/distributing-smart-home-study/. The analyze-metrics.py script processes the collected data; metrics.conf and metrics.txt record the configuration and raw output from a prior run.


Prerequisites

  • Rust (see rust-toolchain.toml)
  • For Arduino targets: Arduino CLI with ESP32 board support
  • For distributed targets: multiple ESP32 devices or a Wokwi simulation setup

License

To be determined. Please contact the authors before reuse or redistribution.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors