Skip to content

Latest commit

 

History

History
275 lines (164 loc) · 7.46 KB

Configuration.md

File metadata and controls

275 lines (164 loc) · 7.46 KB

Configuration

The following configurations are used by FlexMeasures.

Required settings (e.g. postgres db) are marked with a double star (**). To enable easier quickstart tutorials, these settings can be set by env vars. Recommended settings (e.g. mail, redis) are marked by one star (*).

Note: FlexMeasures is best configured via a config file. The config file for FlexMeasures can be placed in one of two locations:

  • in the user's home directory (e.g. ~/.flexmeasures.cfg on Unix). In this case, note the dot at the beginning of the filename!
  • in the apps's instance directory (e.g. /path/to/your/flexmeasures/code/instance/flexmeasures.cfg). The path to that instance directory is shown to you by running flexmeasures (e.g. flexmeasures run) with required settings missing or otherwise by running flexmeasures shell.

Basic functionality

LOGGING_LEVEL

Level above which log messages are added to the log file. See the logging package in the Python standard library.

Default: logging.WARNING

FLEXMEASURES_MODE

The mode in which FlexMeasures is being run, e.g. "demo" or "play". This is used to turn on certain extra behaviours.

Default: ""

FLEXMEASURES_LP_SOLVER

The command to run the scheduling solver.

Default: "cbc"

FLEXMEASURES_HOSTS_AND_AUTH_START

Configuration used for entity addressing. This contains the domain on which FlexMeasures runs and the first month when the domain was under the current owner's administration.

Default: {"flexmeasures.io": "2021-01"}

FLEXMEASURES_DB_BACKUP_PATH

Relative path to the folder where database backups are stored if that feature is being used.

Default: "migrations/dumps"

FLEXMEASURES_PROFILE_REQUESTS

Whether to turn on a feature which times requests made through FlexMeasures. Interesting for developers.

Default: False

UI

FLEXMEASURES_PLATFORM_NAME

Name being used in headings

Default: "FlexMeasures"

FLEXMEASURES_HIDE_NAN_IN_UI

Whether to display the word "nan" if any value in metrics tables is NaN.

Default: False

RQ_DASHBOARD_POLL_INTERVAL

Interval in which viewing the queues dashboard refreshes itself, in miliseconds.

Default: 3000 (3 seconds)

Timing

FLEXMEASURES_TIMEZONE

Timezone in which the platform operates. This is useful when datetimes are being localized.

Default: "Asia/Seoul"

FLEXMEASURES_PLANNING_TTL

Time to live for UDI event ids of successful scheduling jobs. Set a negative timedelta to persist forever.

Default: timedelta(days=7)

FLEXMEASURES_PLANNING_HORIZON

The horizon to use when making schedules.

Default: timedelta(hours=2 * 24)

Tokens

DARK_SKY_API_KEY

Token for accessing the DarkSky weather forecasting service.

Note: this will be soon become non-public, so we'll use another service.

Default: None

MAPBOX_ACCESS_TOKEN

Token for accessing the mapbox API (for displaying maps on the dashboard and asset pages).

Default: None

FLEXMEASURES_TASK_CHECK_AUTH_TOKEN

Token which external services can use to check on the status of recurring tasks within FlexMeasures.

Default: None

SQLAlchemy

This is only a selection of the most important settings. See the Flask-SQLAlchemy Docs for all possibilities.

SQLALCHEMY_DATABASE_URI (**)

Connection string to the postgres database, format: postgresql://<user>:<password>@<host-address>[:<port>]/<db>

Default: None

SQLALCHEMY_ENGINE_OPTIONS

Configuration of the SQLAlchemy engine.

Default:

    {
        "pool_recycle": 299,
        "pool_pre_ping": True,
        "connect_args": {"options": "-c timezone=utc"},
    }

Security

This is only a selection of the most important settings. See the Flask-Security Docs as well as the Flask-CORS docs for all possibilities.

SECRET_KEY (**)

Used to sign user sessions and also as extra salt (a.k.a. pepper) for password salting if SECURITY_PASSWORD_SALT is not set. This is actually part of Flask - but is also used by Flask-Security to sign all tokens.

It is critical this is set to a strong value. For python3 consider using: secrets.token_urlsafe()

You can also set this in a file (which some Flask tutorials advised). leave this setting set to None to get more instructions.

Default: None

SECURITY_PASSWORD_SALT

Extra password salt (a.k.a. pepper)

Default: None (falls back to SECRET_KEY)

SECURITY_TOKEN_AUTHENTICATION_HEADER

Name of the header which carries the auth bearer token in API requests.

Default: Authorization

SECURITY_TOKEN_MAX_AGE

Maximal age of security tokens in seconds.

Default: 60 * 60 * 6 (six hours)

SECURITY_TRACKABLE

Wether to track user statistics. Turning this on requires certain user fields. We do not use this feature, but we do track number of logins.

Default: False

CORS_ORIGINS

Allowed cross-origins. Set to "*" to allow all. For development (e.g. javascript on localhost) you might use "null" in this list.

Default: []

CORS_RESOURCES:

FlexMeasures resources which get cors protection. This can be a regex, a list of them or dict with all possible options.

Default: [r"/api/*"]

CORS_SUPPORTS_CREDENTIALS

Allows users to make authenticated requests. If true, injects the Access-Control-Allow-Credentials header in responses. This allows cookies and credentials to be submitted across domains.

Note: This option cannot be used in conjunction with a “*” origin

Default: True

Mail

For FlexMeasures to be able to send email to users (e.g. for resetting passwords), you need an email account which can do that (e.g. GMail).

This is only a selection of the most important settings. See the Flask-Mail Docs for others.

MAIL_SERVER (*)

Email name server domain.

Default: "localhost"

MAIL_PORT (*)

SMTP port of the mail server.

Default: 25

MAIL_USE_TLS

Whether to use TLS.

Default: False

MAIL_USE_SSL

Whether to use SSL.

Default: False

MAIL_USERNAME (*)

Login name of the mail system user.

Default: None

MAIL_DEFAULT_SENDER (*)

Tuple of shown name of sender and their email address.

Default:

(
    "FlexMeasures",
    "no-reply@example.com",
)

MAIL_PASSWORD:

Password of mail system user.

Default: None

Redis

FlexMeasures uses the Redis database to support our forecasting and scheduling job queues.

FLEXMEASURES_REDIS_URL (*)

URL of redis server.

Default: "localhost"

FLEXMEASURES_REDIS_PORT (*)

Port of redis server.

Default: 6379

FLEXMEASURES_REDIS_DB_NR (*)

Number of the redis database to use (Redis per default has 16 databases, nubered 0-15)

Default: 0

FLEXMEASURES_REDIS_PASSWORD (*)

Password of the redis server.

Default: None

Demonstrations

FLEXMEASURES_PUBLIC_DEMO_CREDENTIALS = False

When FLEXMEASURES_MODE=demo, this can hold login credentials (demo user email and password, e.g. ("demo at seita.nl", "flexdemo")), so anyone can log in and try out the platform.

Default: None

FLEXMEASURES_DEMO_YEAR = 2015

When FLEXMEASURES_MODE=demo, this setting can be used to make the FlexMeasures platform select data from a specific year (e.g. 2015), so that old imported data can be demoed as if it were current

Default: None

FLEXMEASURES_SHOW_CONTROL_UI

The control page is still mocked, so this setting controls if it is to be shown.

Default: False