Django Settings

urls.py

Open the urls configuration file and add the necessary rewrite rule to the django URL dispatcher.

nano /var/www/pyscada/PyScadaServer/PyScadaServer/urls.py
...
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('pyscada.hmi.urls')),
]
...

settings.py

Open the django settings file and make the following modifications. See also the django documentation for more Information.

nano /var/www/pyscada/PyScadaServer/PyScadaServer/settings.py

First deactivate the debugging, if debugging is active django will keep all SQL queries in the ram, the data-acquisition runs a massive amount of queries so your system will run fast out of memory. Keep in mind to restart gunicorn and the pysada daemons after you change the debugging state.

DEBUG = False

Add the host/domain of your machine, in this case every url that point to a ip of the machine is allowed.

ALLOWED_HOSTS = ['*']

Add PyScada and the PyScada sub-apps to the installed apps list of Django.

INSTALLED_APPS = [
    ...
    'pyscada.core',
    'pyscada.modbus',
    'pyscada.phant',
    'pyscada.visa',
    'pyscada.hmi',
    'pyscada.systemstat',
    'pyscada.export',
    'pyscada.onewire',
    'pyscada.smbus',
]

To use the MySQL Database, fill in the database, the user and password as selected in the create Database section.

DATABASES = {
    'default': {
        'ENGINE':   'django.db.backends.mysql',
        'NAME':     'PyScada_db',
        'USER':     'PyScada-user',
        'PASSWORD': 'PyScada-user-password',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        }
    }
}

Set the static file and media dir as follows.

...
STATIC_URL = '/static/'

STATIC_ROOT = '/var/www/pyscada/http/static/'

MEDIA_URL = '/media/'

MEDIA_ROOT = '/var/www/pyscada/http/media/'

Add all PyScada specific settings, keep in mind to set the file right file encoding in the settings.py file header (see also https://www.python.org/dev/peps/pep-0263/).

#!/usr/bin/python
# -*- coding: <encoding name> -*-

Append to the end of the settings.py:

# PyScada settings
# https://github.com/trombastic/PyScada

# email settings
DEFAULT_FROM_EMAIL = 'example@host.com'
EMAIL_HOST = 'mail.host.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'pyscada@host.com'
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PREFIX = 'PREFIX' # Mail subject will be "PREFIX subjecttext"

# meta information's about the plant site
PYSCADA_META = {
    'name':'A SHORT NAME',
    'description':'A SHORT DESCRIPTION',
}

# export properties
#
PYSCADA_EXPORT = {
    'file_prefix':'PREFIX_',
    'output_folder':'~/measurement_data_dumps',
}

# View Options
#
LINK_TARGET = '_blank' # '_blank' for new tab or '_self' for opening it in the same window

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
    },
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': BASE_DIR + '/pyscada_debug.log',
            'formatter': 'standard',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'INFO',
            'propagate': True,
        },
        'pyscada': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}