Simulacija sistema za filtriranje vode koja se sastoji od:
- Simulator Server (Digital Twin)
- MQTT Brokera (mosquitto)
- SCADA App (Python Flask)
- Kali Linux (kali-recon)
OBAVEZNO: Pre pokretanja sistema kreirajte .env fajl:
Copy-Item .env.example .envIli ručno kreirajte .env fajl sa sledećim sadržajem:
# MQTT User Credentials
# SCADA Application
MQTT_SCADA_USER=scada_user
MQTT_SCADA_PASS=secure_scada_2024!
# Water Simulator
MQTT_SIMULATOR_USER=simulator_user
MQTT_SIMULATOR_PASS=secure_sim_2024!
# Admin User (for management)
MQTT_ADMIN_USER=admin_user
MQTT_ADMIN_PASS=secure_admin_2024!
# MQTT Connection Settings
MQTT_BROKER=mosquitto
MQTT_PORT=1883
MQTT_KEEPALIVE=60
# Application Settings
SCADA_PORT=5000
PUBLISH_INTERVAL=2.0Za pokretanje projekta je potrebno:
- Docker Desktop
- Python 3 (za test client-a)
Struktura relevantnih fajlova:
docker-compose.yml— orkestracija servisa (MQTT broker + simulator)docker-run.ps1— jednostavna PowerShell skripta za upravljanjesimulator_server/Dockerfile— definicija image-a simulatoramosquitto/config/mosquitto.conf— konfiguracija MQTT brokera (Mosquitto)
Pokreće se iz korena projekta.
- Start sistema (podigne broker + simulator):
.\docker-run.ps1 up
- Status kontejnera i health:
.\docker-run.ps1 status
- Prikaz logova u real-time (za izlaz pritisnite Ctrl+C):
.\docker-run.ps1 logs
- Restart celog stack-a:
.\docker-run.ps1 restart
- Zaustavljanje i uklanjanje servisa:
.\docker-run.ps1 down
- Rebuild kontejnera nakon promena u kodu:
.\docker-run.ps1 build
- Potpuno čišćenje (images, volumes, networks) — oprez!
.\docker-run.ps1 clean
Skripta poziva docker-compose komande sa unapred pripremljenim opcijama.
Pokretanje pomoću Docker komandi.
- Start u pozadini:
docker-compose up -d
- Status:
docker-compose ps
- Logovi (follow):
docker-compose logs -f
- Rebuild image-a (npr. posle izmene koda simulatora):
docker-compose build --no-cache
- Zaustavljanje i uklanjanje servisa:
docker-compose down
Objašnjenje: docker-compose.yml definiše tri servisa — mosquitto (MQTT broker), water-filtration-simulator (digital twin + MQTT publisher) i scada-app. Compose osigurava da se simulator startuje tek kada je broker „healthy“.
- MQTT Broker (Mosquitto)
- TCP 1883 — standardni MQTT port
- TCP 9001 — MQTT preko WebSocket-a
- Simulator nema izložene portove (komunicira samo preko MQTT-a u mreži compose-a)
- SCADA App preko ws://localhost:5000/socket.io
U posebnoj PowerShell sesiji možete pokrenuti test klijent:
python mqtt_test_client.py
Test klijent:
- šalje komande za uključivanje/isključivanje ventila, pumpi, filtera, svetla
- čita vrednosti senzora i status sistema na zahtev
- koristi centralizovanu MQTT konfiguraciju iz
config/mqtt_topics.json
Simulator podržava environment varijable (postavljene u docker-compose):
MQTT_BROKER(default:mosquittou docker mreži)MQTT_PORT(default:1883)PUBLISH_INTERVAL(default:2.0sekunde)
Ove vrednosti možete menjati u docker-compose.yml u sekciji environment za servis water-filtration-simulator.
Konfiguracija MQTT topic-a centralizovana je u config/mqtt_topics.json.
U terminalu izvršiti:
docker exec -it ibis-kali-recon /bin/bash
- Mosquitto broker prima i distribuira MQTT poruke između simulatora i klijenata
- Simulator (digital twin) periodično objavljuje stanje sistema, nivoe, kvalitet vode i stanje komponenti.
- Test klijent ili drugi MQTT klijent može slati komande (start/stop pumpe, otvori/zatvori ventil, uključi filtere/svetlo)
- Svi MQTT topici su dosledni i definisani u
config/mqtt_topics.json - SCADA App je pretplaćena na određene topic-e i emituje preko WebSocket
- Ima automation service koji prati nivo vode, efikasnost filtera... i reaguje ako treba