Autonomous Coworking Space 🏢
🏢 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:
- →Fork the repository.
- →Create a new branch:
git checkout -b feature-name. - →Make your changes and commit them:
git commit -m 'Add new feature'. - →Push to the branch:
git push origin feature-name. - →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:
- →LinkedIn: Gianluca Rea
- →Email: gianlucarea.work@gmail.com
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.