UTEC · Embedded systems

IoTEste EcoWarm

Home-automation prototype: simulated sensors publishing temperature and humidity over MQTT in real time.

Role
Development (academic team project)
Year
2024
Stack
JavaMQTTEclipse MosquittoDocker ComposeIoT

The problem

The goal was to understand how the devices in a smart home talk to each other without depending on physical hardware, which was not always available. The answer was to simulate the sensors and build the same messaging architecture a real system would use.

What I built

  • A sensor simulator that generates temperature and humidity readings and publishes them over MQTT.
  • An Eclipse Mosquitto broker as the middleman between producers and consumers.
  • A Java consumer that subscribes to the topics and processes readings in real time.
  • Full orchestration with Docker Compose: the whole system starts with one command.

Technical decisions

MQTT instead of HTTP

MQTT is designed for low-capacity devices and unreliable connections: the publish/subscribe model decouples sensors from consumers, so adding a new sensor never means touching the code that consumes the data.

Simulating the sensors

Simulating the hardware let us work without waiting on board availability, and made it possible to test edge cases — extreme values, dropped connections — that are hard to reproduce on demand with real sensors.

Docker Compose as the system definition

The project is several pieces that have to talk to each other. Defining them in a compose file documented the architecture and made startup reproducible for anyone on the team.

What I took away

  • How a publish/subscribe pattern works and why decoupling producers from consumers changes the design.
  • Orchestrating several interdependent services and debugging the messaging when something doesn't arrive.
  • That a good prototype doesn't need real hardware to validate an architecture.