Skip to content

Latest commit

 

History

History
88 lines (60 loc) · 2.66 KB

File metadata and controls

88 lines (60 loc) · 2.66 KB

Lab 3 - Distributed Fan Control Services

Table of Contents

Introduction

This repository contains the implementation scaffold for ESLAB Task 3. The system is built as distributed C++ services that communicate via message queues and are deployed across a Raspberry Pi cluster.

Two fan-control loops run in parallel:

  • control_service <-> fan_service
  • control_service1 <-> fan_service1

A central server service provides HTTP endpoints for runtime control, parameter updates, and status monitoring.

Services overview diagram

Important runtime note: The full system cannot be run meaningfully without the required fan hardware and the Raspberry Pi cluster. For students working on this repository locally, supported execution is local testing only. Actual runtime/deployment must be performed via Cascade in the lab environment.

Features

  • Service-oriented distributed architecture for embedded control.
  • Two independent control/fan service pairs.
  • ZeroMQ-based communication through shared queue abstractions.
  • HTTP server for runtime control and monitoring.
  • Static and unit test workflow through Docker.

Dependencies

  • Docker TBD

Most dependencies are already provisioned in docker/Dockerfile.servers for the test image.

Building the Project

Building the project for the first time can take a while on most hardware, since Docker needs to download and install various dependencies. Once completed, these dependencies are cached, so future builds will be significantly faster.

Linux

From the repository root, run:

./run_docker_tests.sh

The script will:

  1. Build the container image with: docker build -f docker/Dockerfile.servers -t eslab-task3-tests .
  2. Start a container from that image.
  3. Execute run_tests.sh inside the running container.
  4. Format the test output in a more readable way.
  5. Clean up the temporary container.

Windows

TBD

Usage

For most students, usage is:

  1. Implement the required TODOs in control and fan services.
  2. Run local tests via Docker.
  3. Validate your report outputs and behavior using the provided test pipeline.

Runtime clarification:

  1. Local machine: testing/validation only.
  2. Full runtime with physical fans and distributed Raspberry Pi services: done through Cascade.
  3. Without the required fans and RPi cluster, hardware-level behavior cannot be reproduced locally.

Documentation

Task and code documentation can be found at ESLAB Task 3 Documentation.