Skip to content

nemanjaASE/IBIS-water-filtration-system

Repository files navigation

IBIS Water Filtration System

Simulacija sistema za filtriranje vode koja se sastoji od:

  • Simulator Server (Digital Twin)
  • MQTT Brokera (mosquitto)
  • SCADA App (Python Flask)
  • Kali Linux (kali-recon)

Pokretanje projekta

Korak 0: Priprema environment fajla

OBAVEZNO: Pre pokretanja sistema kreirajte .env fajl:

Copy-Item .env.example .env

Ili 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.0

Preduslovi

Za 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 upravljanje
  • simulator_server/Dockerfile — definicija image-a simulatora
  • mosquitto/config/mosquitto.conf — konfiguracija MQTT brokera (Mosquitto)

1. Prvi način - PowerShell skripta

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.

2) Drugi način - Docker Compose

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“.

3) Servisi i portovi

  • 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

4) Testiranje sistema (opciono)

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

5) Konfiguracija i okruženje

Simulator podržava environment varijable (postavljene u docker-compose):

  • MQTT_BROKER (default: mosquitto u docker mreži)
  • MQTT_PORT (default: 1883)
  • PUBLISH_INTERVAL (default: 2.0 sekunde)

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.

6) Kačenje na kali-recon kontejner

U terminalu izvršiti:

docker exec -it ibis-kali-recon /bin/bash

7) Kako sve radi (kratko objašnjenje)

  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors