UNPKG

pimatic

Version:

A home automation server and framework for the Raspberry PI running on node.js

557 lines (551 loc) 18.8 kB
# #Configuration options # Lists all configuration options for the pimatic framework itself. # For an example `config.json` file see the `config_default.json` file. module.exports = { title: "pimatic config" type: "object" properties: settings: type: "object" properties: locale: description: "The default language" type: "string" enum: ['en', 'de', "es", "nl", "fr", "ru"] default: "en" debug: description: "Turn on debug checks. Set the logLevel to debug to additional outputs" type: "boolean" default: false authentication: type: "object" properties: enabled: description: "Disable http-basic-authentication" type: "boolean" default: true secret: description: "Secret string used for cookie signing. Should be kept secret! If it is not set, then a secret string will be generated for you, at first start. The secret string must be at least 32 characters long. " secret: yes loginTime: description: """The time in milliseconds to keep the session cookie if rememberMe is checked. If 0 then the cookie will be deleted on browser close. """ type: "integer" default: 10 * 365 * 24 * 60 * 60 * 1000 #ten years required: false logLevel: description: "The log level: debug, info, warn, error" type: "string" default: "info" httpServer: type: "object" properties: enabled: description: "Should the HTTP-server be started" type: "boolean" default: true port: description: "The port of the HTTP-server" type: "integer" format: "port" default: 80 minimum: 0 hostname: description: "The hostname of the HTTP-server" type: "string" default: "" # If is empty then listen to all ip4 addresses socket: description: "The UNIX Socket of the HTTP-server" type: "string" default: "" # If empty use hostname + port instead httpsServer: type: "object" properties: enabled: description: "Should the HTTPS-server be started" type: "boolean" default: false port: description: "The port of the HTTPS-server" type: "integer" format: "port" default: 443 minimum: 0 hostname: description: "The hostname of the HTTPS-server" type: "string" default: "" # If is empty then listen to all ip4Addresses ### Download https://raw.githubusercontent.com/pimatic/pimatic/master/install/ssl-setup and run ssl-setup in you pimatic-app dir to generate the necessary key and certificate files: wget https://raw.githubusercontent.com/pimatic/pimatic/master/install/ssl-setup chmod +x ssl-setup ./ssl-setup ### keyFile: description: "Private-Key file" type: "string" default: "ca/pimatic-ssl/private/privkey.pem" certFile: description: "Public certification file in pem-format" type: "string" default: "ca/pimatic-ssl/public/cert.pem" rootCertFile: description: "The public root certificate file of your own CA if you are using a self signed certificate. This is optional. It's just for the frontend, so that it can provide a link to the the root certificate for easy importing in mobile devices. " type: "string" default: "ca/certs/cacert.crt" required: false cors: type: "object" required: false properties: allowedOrigin: description: """The origin allowed for cross-origin accesses. The item "*" is used to accept all origins. The empty string is used to deny all cross-origin accesses. """ type: "string" default: "" database: type: "object" properties: client: description: "The database client to use" type: "string" enum: ["sqlite3", "mysql", "pg"] default: "sqlite3" ### The connection setting depends on database client. Some examples: __sqlite3:__ { filename: "pimatic-database.sqlite" } __mysql:__ { host : '127.0.0.1', user : 'your_database_user', password : 'your_database_password', database : 'myapp_test' } ### connection: description: "The connection settings for the database client" type: "object" default: { filename: "pimatic-database.sqlite" } deviceAttributeLogging: description: """ Defines time constraints on how attribute value changes of logged devices shall be kept in the database. Constraints will be evaluated sequentially where a subsequent constraint may override the previous one. A constraint can be defined by device id, attribute name, and attribute type. See also <a href='https://forum.pimatic.org/topic/44/database-configuration-howto'> Database configuration howto</a> """ type: "array" default: [ { deviceId: '*', attributeName: '*', type: "*", interval: "0", expire: '7d' } { deviceId: '*', attributeName: '*', type: "continuous", interval: "5min", expire: '7d' } { deviceId: '*', attributeName: 'temperature', type: "number", expire: '1y' } { deviceId: '*', attributeName: 'humidity', type: "number", expire: '1y' } ] items: type: "object" properties: deviceId: description: """ The deviceId of the logged device or "*" for all devices in the matching context """ type: "string" attributeName: description: """ The name of the attribute or "*" for all attributes in the matching context """ type: "string" type: description: """ The type of the attribute mapping, one of: "number", "string", "boolean", "date", "discrete", "continuous", "*". The default, "*" is used for all applicable attribute types in the matching context """ type: "string" default: "*" interval: description: """ A time duration constraint on the minmum time interval between attribute value changes stored in database. If absent all attribute value changes will stored in the database. The duration is provided in miliseconds if no unit is provided. Supported units are: ms, second, seconds, s, minute, minutes, m, hour, hours, h, day, days, d, year, years, y """ type: "string" required: false expire: description: """ A time duration constraint on how long attribute values shall be kept in the database. The duration is provided in miliseconds if no unit is provided. Supported units are: ms, second, seconds, s, minute, minutes, m, hour, hours, h, day, days, d, year, years, y """ type: "string" required: false messageLogging: description: "Time to keep logged messages in database" type: "array" default: [ { level: '*', tags: [], expire: '7d' } { level: 'debug', tags: [], expire: '0' } ] deleteExpiredInterval: description: "Interval for deleting expired entries from the database" type: "string" default: "2h" diskSyncInterval: description: " Interval for writing logged entries to disk. If this value is smaller than the deleteExpiredInterval setting, then the value of this setting is used instead. Should be a multiple of deleteExpiredInterval. " type: "string" default: "4h" debug: description: "Enable to show database queries and some additional outputs" type: "boolean" default: false gui: type: "object" properties: hideRuleName: description: "Don't show the name of rules on the rules page" type: "boolean" default: false hideRuleText: description: "Don't show the text of rules on the rules page" type: "boolean" default: false demo: doc: """Show edit pages also if the user has no permissions, like at demo.pimatic.org:8080 """ type: "boolean" default: false required: false defaultMaxListeners: description: """ The number of listeners which can be registered for any single event (soft limit) """ type: "number" default: 200 pages: description: "Array of GUI pages" type: "array" default: [] items: type: "object" properties: id: type: "string" name: type: "string" allowedRoles: description: """ The roles allowed for accessing the page. If absent roles are granted access. """ type: "array" required: false devices: type: "array" default: [] items: type: "object" properties: deviceId: type: "string" groups: description: "Array of groups" type: "array" default: [] items: type: "object" properties: id: type: "string" name: type: "string" devices: type: "array" default: [] items: type: "string" rules: type: "array" default: [] items: type: "string" variables: type: "array" default: [] items: type: "string" plugins: description: "Array of plugins to load" type: "array" default: [] items: type: "object" properties: plugin: type: "string" additionalProperties: true devices: description: "Array of device definitions" type: "array" default: [] items: type: "object" properties: id: type: "string" name: type: "string" class: type: "string" additionalProperties: true rules: description: "Array of rules" type: "array" default: [] items: type: "object" properties: id: type: "string" name: type: "string" rule: type: "string" active: type: "boolean" logging: type: "boolean" variables: description: "Array of variables" type: "array" default: [] items: anyOf: [ { type: "object" properties: name: type: "string" value: type: "string" unit: type: "string" }, { type: "object" properties: name: type: "string" expression: type: "string" unit: type: "string" } ] users: description: "Array of users" type: "array" default: [ { username: "admin" password: "" role: "admin" } ] items: type: "object" properties: username: description: "The login name of the user" type: "string" password: description: "The password of the user" type: "string" secret: yes role: description: "The role of the user" type: "string" roles: description: "Array of user roles" type: "array" default: [ { name: "admin" permissions: pages: "write" rules: "write" variables: "write" messages: "write" events: "write" devices: "write" groups: "write" plugins: "write" updates: "write" config: "write" controlDevices: true restart: true }, { name: "resident" permissions: pages: "read" rules: "read" variables: "read" messages: "read" events: "read" devices: "none" groups: "none" plugins: "none" updates: "none" config: "none" controlDevices: true restart: false } ] items: type: "object" properties: name: type: "string" permissions: type: "object" properties: pages: description: " Allow to list all pages with its devices (read) or edit existing pages (write) " type: "string" default: "none" enum: ["none", "read", "write"] rules: description: """ Allow to list all rules (read) or edit existing rules (write) """ type: "string" default: "none" enum: ["none", "read", "write"] variables: description: """ Allow to list all variables (read) or edit existing variables (write) """ type: "string" default: "none" enum: ["none", "read", "write"] messages: description: """ Allow to list all messages (read) or delete existing messages (write) """ type: "string" default: "none" enum: ["none", "read", "write"] events: description: """ Allow to list all events (read) or delete existing events (write) """ type: "string" default: "none" enum: ["none", "read", "write"] devices: description: """ Allow to list all devices (read) or edit existing devices (write) """ type: "string" default: "none" enum: ["none", "read", "write"] groups: description: """ Allow to list all groups (read) or edit existing groups (write) """ type: "string" default: "none" enum: ["none", "read", "write"] users: description: """ Allow to list all users (read) or edit existing users (write) """ type: "string" default: "none" enum: ["none", "read", "write"] plugins: description: """ Allow to list all plugins (read) or edit existing plugins (write) """ type: "string" default: "none" enum: ["none", "read", "write"] updates: description: """ Allow to search for updates or additional do updating """ type: "string" default: "none" enum: ["none", "read", "write"] config: description: """ Allow to show the config (read) or edit existing config (write) """ type: "string" default: "none" enum: ["none", "read", "write"] database: description: """ Allow read and or write to the database """ type: "string" default: "none" enum: ["none", "read", "write"] controlDevices: description: """ Allow to control devices (switches, buttons, ...) """ type: "boolean" default: false restart: description: """ Allow to restart pimatic """ type: "boolean" default: false patternProperties: '//.*': { description: "Comments" type: "string" } }