Configuration

Ioto is controlled via several JSON/5 configuration files that are that are read at startup by Ioto.

The configuration files are:

File Description
auth.json Authentication configuration for the web server. Includes defined roles, users and passwords.
config.json Primary Ioto configuration file. Configures enabled services, logging and log file ingestion
local.json Local state persistency.
provision.json Device and cloud provisioning configuration.
shadow.json Local copy of the AWS IoT shadow state.
state.json Local copy of structured device state.
web.json Web server configuration file.

JSON/5

Ioto uses a human-readable JSON/5 for configuration. JSON/5 an extension of JSON that makes it easier to create, read and maintain configuration files in JSON.

JSON/5 adds the following JavaScript features to JSON.

{
    // single-comment
    /*
        Multi-line comment
    */
    unquotedKey: 42,
    singleQuoteString: 'The "lazy brown fox" jumped...',
    multiLine: "Line one
        line two
    ",
    hex: 0x42,
    trailingComma: {
        one: 1,
        two: 2,
    },
}

Some properties accept numeric values as human-readable string with unit suffixes. The limits and timeouts properties in the web.json file support the suffixes: unlimited, infinite, kb, k, mb, m, gb, g, byte, bytes, infinite, never, sec, secs, seconds, min, mins, minute, minutes, hr, hrs, hour, hours, day, days, week, weeks, month, months, year and years.

config.json

The primary Ioto configuration file is called config.json.

Here is a sample config.json:

{
    profile: 'dev',
    services: {
        extend: true,
        ingest: true,
        mqtt: true,
        shadow: true,
        web: true,
    },
    ingest: {
        files: [
            {path: '/var/log/sys*log', group: 'ioto', stream: '{hostname}' }
        ],
    },
    log: {
        path: 'aws',
        format: '%D %H %A[%P] %T %S %M',
        types: 'error,info',
        sources: 'all',
    },
    limits: {
        stack: '16k',
    },
    profiles: {
        prod: {},
        dev: {
            log: {
                path: 'stdout',
                format: '%S %T:',
                types: 'error,info',
                sources: 'all,!mbedtls',
            }
        }
    }
}

The configuration file defines the following items:

The configuration properties are defined in the Configuration Properties.

© Embedthis Software. All rights reserved.