UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge.

772 lines (771 loc) • 20.7 kB
{ "pluginAlias": "config", "pluginType": "platform", "singular": true, "strictValidation": true, "schema": { "type": "object", "properties": { "name": { "title": "Name", "type": "string", "default": "Homebridge UI", "minLength": 1, "required": true, "description": "The name of the Homebridge instance." }, "port": { "title": "Port", "type": "integer", "default": 8080, "maximum": 65535, "required": true, "description": "The port number to run the Homebridge UI on." }, "auth": { "title": "Homebridge UI Authentication", "type": "string", "default": "form", "description": "The type of authentication to use for the Homebridge UI.", "oneOf": [ { "title": "Require Authentication", "enum": [ "form" ] }, { "title": "None", "enum": [ "none" ] } ], "required": true }, "theme": { "title": "UI Theme", "description": "The theme used for the UI.", "type": "string", "default": "orange", "oneOf": [ { "title": "Orange", "enum": [ "orange" ] }, { "title": "Red", "enum": [ "red" ] }, { "title": "Pink", "enum": [ "pink" ] }, { "title": "Purple", "enum": [ "purple" ] }, { "title": "Deep Purple", "enum": [ "deep-purple" ] }, { "title": "Indigo", "enum": [ "indigo" ] }, { "title": "Blue", "enum": [ "blue" ] }, { "title": "Blue Grey", "enum": [ "blue-grey" ] }, { "title": "Cyan", "enum": [ "cyan" ] }, { "title": "Green", "enum": [ "green" ] }, { "title": "Teal", "enum": [ "teal" ] }, { "title": "Grey", "enum": [ "grey" ] }, { "title": "Brown", "enum": [ "brown" ] } ], "required": true }, "lightingMode": { "title": "UI Lighting Mode", "description": "The lighting mode used for the UI.", "type": "string", "default": "auto", "oneOf": [ { "title": "Auto", "enum": [ "auto" ] }, { "title": "Light", "enum": [ "light" ] }, { "title": "Dark", "enum": [ "dark" ] } ] }, "menuMode": { "title": "Menu Mode", "description": "Modes for the UI side menu.", "type": "string", "default": "default", "oneOf": [ { "title": "Default", "enum": [ "default" ] }, { "title": "Freeze", "enum": [ "freeze" ] } ] }, "restart": { "title": "Custom Restart Command", "type": "string", "description": "If no restart command is set the process will terminate with a non-zero exit code.", "placeholder": "eg. sudo systemctl restart homebridge" }, "temp": { "title": "OS Temp File Path", "type": "string", "placeholder": "eg. /sys/class/thermal/thermal_zone0/temp", "description": "If you are running Homebridge on a Raspberry Pi, you can enter the path to the OS temp file here. This will display the current temperature on the Homebridge status page." }, "tempUnits": { "title": "Temperature Display Units", "description": "The units used to display the temperature.", "type": "string", "required": true, "default": "c", "oneOf": [ { "title": "Celsius", "enum": [ "c" ] }, { "title": "Fahrenheit", "enum": [ "f" ] } ] }, "lang": { "title": "Language", "type": "string", "default": "auto", "description": "The language used for the UI.", "required": true, "oneOf": [ { "title": "Automatic (Use Browser Settings)", "enum": [ "auto" ] }, { "title": "Bulgarian (bg)", "enum": [ "bg" ] }, { "title": "Catalan (ca)", "enum": [ "ca" ] }, { "title": "Chinese - Simplified (zh-CN)", "enum": [ "zh-CN" ] }, { "title": "Chinese - Traditional (zh-TW)", "enum": [ "zh-TW" ] }, { "title": "Czech (cs)", "enum": [ "cs" ] }, { "title": "Dutch (nl)", "enum": [ "nl" ] }, { "title": "English (en)", "enum": [ "en" ] }, { "title": "Finnish (fi)", "enum": [ "fi" ] }, { "title": "French (fr)", "enum": [ "fr" ] }, { "title": "German (de)", "enum": [ "de" ] }, { "title": "Hebrew (he)", "enum": [ "he" ] }, { "title": "Hungarian (hu)", "enum": [ "hu" ] }, { "title": "Indonesian (id)", "enum": [ "id" ] }, { "title": "Italian (it)", "enum": [ "it" ] }, { "title": "Japanese (ja)", "enum": [ "ja" ] }, { "title": "Korean (ko)", "enum": [ "ko" ] }, { "title": "Macedonian (mk)", "enum": [ "mk" ] }, { "title": "Norwegian (no)", "enum": [ "no" ] }, { "title": "Polish (pl)", "enum": [ "pl" ] }, { "title": "Portuguese (Brazil)", "enum": [ "pt-BR" ] }, { "title": "Portuguese (Portugal)", "enum": [ "pt" ] }, { "title": "Russian (ru)", "enum": [ "ru" ] }, { "title": "Slovenian (sl)", "enum": [ "sl" ] }, { "title": "Spanish (es)", "enum": [ "es" ] }, { "title": "Swedish (sv)", "enum": [ "sv" ] }, { "title": "Thai (th)", "enum": [ "th" ] }, { "title": "Turkish (tr)", "enum": [ "tr" ] }, { "title": "Ukrainian (uk)", "enum": [ "uk" ] } ] }, "loginWallpaper": { "title": "Login Wallpaper Path", "description": "The full path to the .jpg file.", "type": "string", "placeholder": "eg. /home/pi/mywallpaper.jpg" }, "sudo": { "title": "Use Sudo", "type": "boolean", "description": "If you are running Homebridge as root, you may need to enable this option." }, "homebridgePackagePath": { "title": "Path To Homebridge Module", "type": "string", "description": "If you have multiple versions of Homebridge installed, you can specify the path to the version you want to use here.", "placeholder": "eg. /usr/local/lib/node_modules/homebridge" }, "noFork": { "title": "Do not run the UI server in a separate process/thread", "type": "boolean", "description": "If you are running Homebridge in a container, you may need to enable this option." }, "host": { "title": "Host IP Address", "type": "string", "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$", "description": "The host IP address to listen on. In most cases this will be '::' or '0.0.0.0'.", "placeholder": "eg. 0.0.0.0" }, "debug": { "title": "Enable Debug Logging", "type": "boolean", "description": "If enabled, the Homebridge UI will log debug level messages to the console." }, "standalone": { "title": "Tell Homebridge the plugin is operating in standalone mode", "type": "boolean", "description": "If you are running Homebridge in a container, you may need to enable this option." }, "sessionTimeout": { "title": "Session Timeout (Seconds)", "type": "integer", "placeholder": 28800, "minimum": 600, "maximum": 86400000, "description": "The number of seconds before a user session will timeout. Defaults to 8 hours.", "condition": { "functionBody": "return model.auth === 'form'" } }, "log": { "type": "object", "title": "Log Settings", "description": "The log settings for the Homebridge UI.", "properties": { "method": { "title": "Log Method", "type": "string", "default": "", "description": "The method used to read the Homebridge log file.", "oneOf": [ { "title": "Default", "enum": [ "" ] }, { "title": "From File", "enum": [ "file" ] }, { "title": "Systemd", "enum": [ "systemd" ] }, { "title": "Custom Command", "enum": [ "custom" ] } ] }, "path": { "title": "Log File Path", "type": "string", "description": "Enter the full file path to your log file.", "placeholder": "/var/log/homebridge.log", "condition": { "functionBody": "return (model.log && model.log.method==='file')" } }, "service": { "title": "Systemd Service", "type": "string", "description": "Enter the systemd service name. Defaults to 'homebridge'.", "placeholder": "homebridge", "condition": { "functionBody": "return (model.log && model.log.method==='systemd')" } }, "command": { "title": "Custom Command", "description": "This command should stream the logs to stdout.", "type": "string", "placeholder": "journalctl -f -n 100 -u homebridge", "condition": { "functionBody": "return (model.log && model.log.method==='custom')" } }, "tail": { "type": "string", "description": "Deprecated.", "condition": { "functionBody": "return (model.log && (model.log.method==='custom' || model.log.method==='systemd' || model.log.method==='file'))" } }, "systemd": { "type": "string", "description": "Deprecated.", "condition": { "functionBody": "return (model.log && (model.log.method==='custom' || model.log.method==='systemd' || model.log.method==='file'))" } }, "maxSize": { "type": "integer", "description": "The max log size (bytes). Set to -1 to disable log truncation.", "minimum": -1 }, "truncateSize": { "type": "integer", "description": "The size (bytes) to truncate the log to once it goes over the max size specified above.", "minimum": 0, "condition": { "functionBody": "return (model.log && model.log.maxSize > 0)" } } } }, "ssl": { "title": "SSL Setup", "type": "object", "description": "The SSL settings for the Homebridge UI.", "properties": { "key": { "title": "Private Key Path", "type": "string", "description": "The full path to the private key file.", "placeholder": "eg. /Users/homebridge/.homebridge/certs/server.key" }, "cert": { "title": "Certificate Path", "type": "string", "description": "The full path to the certificate file.", "placeholder": "eg. /Users/homebridge/.homebridge/certs/server.crt" }, "pfx": { "title": "PKCS#12 Certificate Path", "type": "string", "description": "The full path to the PKCS#12 certificate file.", "placeholder": "eg. /Users/homebridge/.homebridge/certs/server.pfx" }, "passphrase": { "title": "PKCS#12 Certificate Passphrase", "type": "string", "description": "The passphrase for the PKCS#12 certificate file.", "placeholder": "eg. mypassphrase" } } }, "accessoryControl": { "title": "Accessory Control Setup", "type": "object", "description": "The accessory control settings for the Homebridge UI.", "properties": { "debug": { "title": "Enable Accessory Control Debug Logging", "type": "boolean", "description": "If enabled, the Homebridge UI will log debug level messages to the console." }, "instanceBlacklist": { "title": "Blacklisted Bridges/Instances", "type": "array", "description": "A list of instances (or bridge usernames) that should not be controlled via the web UI.", "placeholder": "eg. 00:00:00:00:00:00", "items": { "title": "Instance Username", "type": "string", "pattern": "^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$" } } } }, "linux": { "title": "Linux Server Commands", "type": "object", "description": "The Linux server commands for the Homebridge UI.", "properties": { "shutdown": { "title": "Shutdown Command", "type": "string", "placeholder": "eg. shutdown", "description": "If no shutdown command is set the process will terminate with a non-zero exit code." }, "restart": { "title": "Restart Command", "type": "string", "placeholder": "eg. reboot", "description": "If no restart command is set the process will terminate with a non-zero exit code." } } }, "proxyHost": { "title": "Reverse Proxy Hostname", "type": "string", "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$", "placeholder": "eg. example.com:8443", "description": "When running behind a reverse proxy you may need to enter the hostname you use to access the UI." }, "scheduledBackupPath": { "title": "Scheduled Backup Destination", "description": "The full path to where the service should save daily scheduled backups archives.", "type": "string", "placeholder": "eg. /home/pi/homebridge-backups", "condition": { "functionBody": "return !model.scheduledBackupDisable" } }, "scheduledBackupDisable": { "title": "Disable Scheduled Backups", "type": "boolean", "description": "When enabled, the Homebridge UI will not create daily scheduled backups." }, "disableServerMetricsMonitoring": { "title": "Disable Server Metrics Monitoring", "type": "boolean", "description": "When enabled, the Homebridge UI will not collect or report CPU or memory stats." } } }, "layout": [ { "ref": "login", "type": "fieldset", "expandable": true, "title": "Login Settings", "items": [ "auth", { "key": "sessionTimeout", "type": "number" } ] }, { "ref": "log", "type": "fieldset", "expandable": true, "title": "Log Settings", "items": [ "debug", "log.method", "log.path", "log.service", "log.command", "log.tail", "log.systemd" ] }, { "ref": "logRetention", "type": "fieldset", "expandable": true, "title": "Log Retention Settings", "items": [ "log.maxSize", "log.truncateSize" ] }, { "ref": "accessoryControl", "type": "fieldset", "expandable": true, "title": "Accessory Control", "items": [ "accessoryControl.debug", { "key": "accessoryControl.instanceBlacklist", "type": "array", "items": { "key": "accessoryControl.instanceBlacklist[]", "type": "string", "pattern": "^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$", "title": "Instance Username" } } ] }, { "ref": "hostname", "type": "fieldset", "expandable": true, "title": "Hostname Settings", "items": [ "proxyHost", "host" ] }, { "ref": "ssl", "type": "fieldset", "expandable": true, "title": "SSL Settings", "items": [ "ssl.key", "ssl.cert", "ssl.pfx", "ssl.passphrase" ] }, { "ref": "homebridge", "type": "fieldset", "expandable": true, "title": "Homebridge Settings", "items": [ "sudo", "restart", "homebridgePackagePath" ] }, { "ref": "operatingSystem", "type": "fieldset", "expandable": true, "title": "Operating System Specific Settings", "items": [ "disableServerMetricsMonitoring", { "ref": "linux", "type": "fieldset", "expandable": true, "title": "Linux Settings", "items": [ "linux.shutdown", "linux.restart", "temp" ] }, { "ref": "container", "type": "fieldset", "expandable": true, "title": "Container Settings", "items": [ "standalone", "noFork" ] } ] }, { "ref": "scheduledBackup", "type": "fieldset", "expandable": true, "title": "Scheduled Backup Settings", "items": [ "scheduledBackupDisable", "scheduledBackupPath" ] } ] }