- Python 3.11+
- Redis server
- Git
Ubuntu/Debian:
sudo apt update
sudo apt install redis-server
sudo systemctl start redis
sudo systemctl enable redismacOS:
brew install redis
brew services start redisFedora/RHEL:
sudo dnf install redis
sudo systemctl start redis
sudo systemctl enable redisTest Redis:
redis-cli ping
# Should return: PONG# Installeer dependencies
pip install -r requirements.txt
# Database setup
python manage.py migrate
# Create superuser (voor eerste login)
python manage.py createsuperuser
# Collect static files
python manage.py collectstatic --noinputOptie A - Automated (Aanbevolen):
./start-services.shDit script:
- ✓ Checkt of Redis draait
- ✓ Voert migrations uit
- ✓ Verzamelt static files
- ✓ Geeft je de commando's om Django en Celery te starten
Optie B - Handmatig (3 terminals):
Terminal 1 - Django:
python manage.py runserverTerminal 2 - Celery Worker:
celery -A modbus_webserver worker -l infoTerminal 3 - Celery Beat:
celery -A modbus_webserver beat -l infoOptie C - Separate Scripts:
./run-django.sh # Terminal 1
./run-celery.sh # Terminal 2 (start beide worker + beat)- Open browser: http://localhost:8000/
- Klik "Inloggen" (rechtsboven in menu)
- Log in met je superuser credentials
- Ga naar "Interfaces" in het menu
- Klik "Nieuwe Interface"
- Configureer je eerste Modbus interface (RTU of TCP)
- Klik "Nieuwe Interface"
- Vul in:
- Naam:
PLC-1 - Protocol:
TCP - Host:
192.168.1.100 - Port:
502 - Timeout:
3.0
- Naam:
- Klik "Test Verbinding" (optioneel)
- Klik "Opslaan"
- Klik "Nieuwe Interface"
- Vul in:
- Naam:
Serial-Modbus - Protocol:
RTU - Port:
/dev/ttyUSB0(Linux) ofCOM3(Windows) - Baudrate:
9600 - Parity:
None - Stopbits:
1 - Bytesize:
8 - Timeout:
3.0
- Naam:
- Klik "Opslaan"
- Ga naar "Devices" in menu
- Klik "Nieuw Device" (of ga naar
/admin/voor form) - Configureer:
- Naam: Beschrijvende naam
- Interface: Selecteer je interface
- Slave ID: 1-247
- Polling Interval: 5 seconden (aanbevolen)
- Enabled: ✓
- Ga naar "Registers" in menu
- Selecteer je device
- Klik "Nieuw Register" (of ga naar
/admin/) - Configureer:
- Naam: Bijvoorbeeld "Temperatuur"
- Address: Register adres (0-65535)
- Function Code: FC03 (Read Holding)
- Data Type: FLOAT32, INT16, etc.
- Unit: °C, kW, etc.
- Conversion Factor: 1.0 (of bijv. 0.1 voor delen door 10)
- Enabled: ✓
- Dashboard: Ga naar hoofdpagina - je zou "WebSocket verbinding OK" moeten zien
- API Docs: Ga naar http://localhost:8000/api/docs/ - Swagger UI moet laden
- Admin: Ga naar http://localhost:8000/admin/ - Django admin moet bereikbaar zijn
- Redis: Run
redis-cli ping- moet "PONG" returnen - Celery: Check logs - moet tasks uitvoeren elk 5 seconden
Open de Celery worker log en zoek naar:
[tasks]
. modbus_app.tasks.poll_all_devices
. modbus_app.tasks.check_alarms
. modbus_app.tasks.aggregate_trend_data
...
Je virtual environment is niet actief of dependencies zijn niet geïnstalleerd:
pip install -r requirements.txtRedis draait niet:
# Linux
sudo systemctl start redis
# macOS
brew services start redis
# Handmatig
redis-serverJe bent niet ingelogd. Klik op "Inloggen" in het menu rechtsboven.
- Check of Redis draait:
redis-cli ping - Check Celery logs voor errors
- Herstart Django server
- Check of Celery worker draait:
ps aux | grep celery - Check of Celery beat draait
- Check Redis verbinding
- Herstart Celery:
./run-celery.sh
Dit is gefixed in de templates. Als het nog voorkomt:
- Hard refresh browser (Ctrl+Shift+R)
- Clear cookies
- Log opnieuw in
./stop-services.shOf handmatig:
# Stop Django
pkill -f "manage.py runserver"
# Stop Celery
pkill -f "celery.*modbus_webserver"
# Stop Redis (optioneel)
redis-cli shutdown- Dashboard Configureren: Maak widgets aan in
/admin/ - Alarms Instellen: Configureer thresholds voor registers
- Templates Maken: Herbruikbare device configuraties
- API Gebruiken: Zie
/api/docs/voor volledige API referentie
- Homepage: http://localhost:8000/
- Admin Panel: http://localhost:8000/admin/
- API Docs: http://localhost:8000/api/docs/
- API Schema: http://localhost:8000/api/schema/
Je draait nu in development mode. Voor productie:
- Gebruik Gunicorn in plaats van
runserver - Gebruik Nginx als reverse proxy
- Gebruik Docker Compose (zie
docker-compose.prod.yml) - Set
DEBUG=Falsein environment - Configureer proper SECRET_KEY
Zie IMPLEMENTATION_PLAN.md voor volledige deployment guide.