Autonomous Coworking Space 🏢

GR
Gianluca Rea

🏢 Overview

An autonomous coworking space management system developed for the Software Engineering for Autonomous Systems course at the University of L'Aquila. This project implements a MAPE-K (Monitor-Analyze-Plan-Execute-Knowledge) feedback loop architecture to autonomously manage and optimize a collaborative workspace environment.

🦾 Repository

See the code: Autonomous Coworking Space Repository

🛠️ Architecture

MAPE-K Loop (Managing System)

  • Monitor: Telegraf collects metrics from MQTT Broker and stores them in InfluxDB knowledge base
  • Analyzer: Java application that analyzes system state and identifies needed adjustments
  • Planner: Spring Boot application that creates action plans (with optional proactive planner variant)
  • Executor: Java application that executes planned actions and controls the environment
  • Knowledge: InfluxDB time-series database storing all system metrics and state

Managed System

  • cwspace-environment: Node.js application simulating office rooms and environmental conditions
  • node-red: IoT platform simulating sensors and actuators throughout the workspace

Monitoring & Control

  • Mosquitto MQTT Broker: Central message broker for all component communication (port 1883, 9001)
  • Grafana Dashboard: Real-time visualization and monitoring of system performance and metrics (port 3000)

🚀 Key Features

  • Autonomous Management: MAPE-K loop continuously monitors and optimizes workspace conditions
  • Real-Time Monitoring: Live dashboards and metrics via Grafana
  • IoT Integration: Simulated sensors and actuators via Node-RED
  • Time-Series Data: Store and analyze metrics with InfluxDB
  • MQTT Communication: Efficient message-based inter-component communication
  • Modular Design: Separate containerized services for scalability
  • Docker Deployment: Complete containerized setup via docker-compose

🔧 Getting Started

Requirements: Docker and Docker Compose

Configuration: The system exposes the following ports:

  • 8081: Planner service
  • 1883, 9001: Mosquitto MQTT Broker
  • 8086: InfluxDB
  • 3000: Grafana dashboard

Running:

# Build all images
docker-compose build

# Start all containers
docker-compose up -d

# Stop containers
docker-compose down

📚 Learn More

For complete documentation, see Documentation/Report.pdf and check Documentation/Images/ and Documentation/Diagrams/ for detailed diagrams and visuals.

🤝 Contributing

Contributions are welcome! If you're interested in adding new features, improving existing ones, or fixing issues, please follow these steps:

  1. Fork the repository.
  2. Create a new branch: git checkout -b feature-name.
  3. Make your changes and commit them: git commit -m 'Add new feature'.
  4. Push to the branch: git push origin feature-name.
  5. Open a Pull Request.

Please ensure your code follows the existing style and includes appropriate documentation.

📧 Contact

For questions, feedback, or collaboration opportunities, feel free to reach out:

This repository reflects my passion for building autonomous systems and exploring modern technologies. I hope it serves as a useful resource for anyone interested in autonomous systems and workspace management.