{ "type": "object", "properties": { "device_options": { "type": "object" }, "homeassistant": { "title": "Home Assistant integration", "type": "boolean", "description": "Home Assistant integration (MQTT discovery)", "default": false }, "permit_join": { "type": "boolean", "default": false, "title": "Permit join", "description": "Allow new devices to join (re-applied at restart)" }, "external_converters": { "type": "array", "title": "External converters", "description": "You can define external converters to e.g. add support for a DiY device", "requiresRestart": true, "items": { "type": "string" }, "examples": ["DIYRuZ_FreePad.js"] }, "mqtt": { "type": "object", "title": "MQTT", "properties": { "base_topic": { "type": "string", "title": "Base topic", "requiresRestart": true, "description": "MQTT base topic for Zigbee2MQTT MQTT messages", "examples": ["zigbee2mqtt"] }, "server": { "type": "string", "title": "MQTT server", "requiresRestart": true, "description": "MQTT server URL (use mqtts:// for SSL/TLS connection)", "examples": ["mqtt://localhost:1883"] }, "keepalive": { "type": "number", "title": "Keepalive", "requiresRestart": true, "description": "MQTT keepalive in second", "default": 60 }, "ca": { "type": "string", "title": "Certificate authority", "requiresRestart": true, "description": "Absolute path to SSL/TLS certificate of CA used to sign server and client certificates", "examples": ["/etc/ssl/mqtt-ca.crt"] }, "key": { "type": "string", "title": "SSL/TLS key", "requiresRestart": true, "description": "Absolute path to SSL/TLS key for client-authentication", "examples": ["/etc/ssl/mqtt-client.key"] }, "cert": { "type": "string", "title": "SSL/TLS certificate", "description": "Absolute path to SSL/TLS certificate for client-authentication", "requiresRestart": true, "examples": ["/etc/ssl/mqtt-client.crt"] }, "user": { "type": "string", "title": "User", "requiresRestart": true, "description": "MQTT server authentication user", "examples": ["johnnysilverhand"] }, "password": { "type": "string", "title": "Password", "requiresRestart": true, "description": "MQTT server authentication password", "examples": ["ILOVEPELMENI"] }, "client_id": { "type": "string", "title": "Client ID", "requiresRestart": true, "description": "MQTT client ID", "examples": ["MY_CLIENT_ID"] }, "reject_unauthorized": { "type": "boolean", "title": "Reject unauthorized", "requiresRestart": true, "description": "Disable self-signed SSL certificate", "default": true }, "include_device_information": { "type": "boolean", "title": "Include device information", "description": "Include device information to mqtt messages", "default": false }, "version": { "type": ["number", "null"], "title": "Version", "requiresRestart": true, "description": "MQTT protocol version", "default": 4, "examples": [4, 5] }, "force_disable_retain": { "type": "boolean", "title": "Force disable retain", "requiresRestart": true, "description": "Disable retain for all send messages. ONLY enable if you MQTT broker doesn't support retained message (e.g. AWS IoT core, Azure IoT Hub, Google Cloud IoT core, IBM Watson IoT Platform). Enabling will break the Home Assistant integration", "default": false } }, "required": ["base_topic", "server"] }, "serial": { "type": "object", "title": "Serial", "properties": { "port": { "type": ["string", "null"], "title": "Port", "requiresRestart": true, "description": "Location of the adapter. To autodetect the port, set null", "examples": ["/dev/ttyACM0"] }, "disable_led": { "type": "boolean", "title": "Disable led", "requiresRestart": true, "description": "Disable LED of the adapter if supported", "default": false }, "adapter": { "type": ["string", "null"], "enum": ["deconz", "zstack", "zigate", "ezsp"], "title": "Adapter", "requiresRestart": true, "description": "Adapter type, not needed unless you are experiencing problems" } } }, "blocklist": { "title": "Blocklist", "requiresRestart": true, "description": "Block devices from the network (by ieeeAddr)", "type": "array", "items": { "type": "string" } }, "passlist": { "title": "Passlist", "requiresRestart": true, "description": "Allow only certain devices to join the network (by ieeeAddr). Note that all devices not on the passlist will be removed from the network!", "type": "array", "items": { "type": "string" } }, "whitelist": { "readOnly": true, "type": "array", "requiresRestart": true, "title": "Whitelist (deprecated, use passlist)", "items": { "type": "string" } }, "ban": { "readOnly": true, "type": "array", "requiresRestart": true, "title": "Ban (deprecated, use blocklist)", "items": { "type": "string" } }, "experimental": { "type": "object", "title": "Experimental", "properties": { "transmit_power": { "type": ["number", "null"], "title": "Transmit power", "requiresRestart": true, "description": "Transmit power of adapter, only available for Z-Stack (CC253*/CC2652/CC1352) adapters, CC2652 = 5dbm, CC1352 max is = 20dbm (5dbm default)" }, "output": { "type": "string", "enum": ["attribute_and_json", "attribute", "json"], "title": "MQTT output type", "description": "Examples when 'state' of a device is published json: topic: 'zigbee2mqtt/my_bulb' payload '{\"state\": \"ON\"}' attribute: topic 'zigbee2mqtt/my_bulb/state' payload 'ON' attribute_and_json: both json and attribute (see above)" } } }, "advanced": { "type": "object", "title": "Advanced", "properties": { "legacy_api": { "type": "boolean", "title": "Legacy API", "requiresRestart": true, "description": "Disables the legacy api (false = disable)", "default": true }, "pan_id": { "oneOf": [{ "type": "string", "title": "Pan ID (string)" }, { "type": "number", "title": "Pan ID (number)" } ], "title": "Pan ID", "requiresRestart": true, "description": "ZigBee pan ID, changing requires repairing all devices!" }, "ext_pan_id": { "type": "array", "items": { "type": "number" }, "title": "Ext Pan ID", "requiresRestart": true, "description": "Zigbee extended pan ID, changing requires repairing all devices!" }, "channel": { "type": "number", "minimum": 11, "maximum": 26, "default": 11, "title": "ZigBee channel", "requiresRestart": true, "description": "Zigbee channel, changing requires repairing all devices! (Note: use a ZLL channel: 11, 15, 20, or 25 to avoid Problems)", "examples": [11, 15, 20, 25] }, "cache_state": { "type": "boolean", "title": "Cache state", "description": "MQTT message payload will contain all attributes, not only changed ones. Has to be true when integrating via Home Assistant", "default": true }, "cache_state_persistent": { "type": "boolean", "title": "Persist cache state", "description": "Persist cached state, only used when cache_state: true", "default": true }, "cache_state_send_on_startup": { "type": "boolean", "title": "Send cached state on startup", "description": "Send cached state on startup, only used when cache_state: true", "default": true }, "log_rotation": { "type": "boolean", "title": "Log rotation", "requiresRestart": true, "description": "Log rotation", "default": true }, "log_level": { "type": "string", "enum": ["info", "warn", "error", "debug"], "title": "Log level", "description": "Logging level", "default": "info" }, "log_output": { "type": "array", "requiresRestart": true, "items": { "type": "string", "enum": ["console", "file", "syslog"] }, "title": "Log output", "description": "Output location of the log, leave empty to supress logging" }, "log_directory": { "type": "string", "title": "Log directory", "requiresRestart": true, "description": "Location of log directory", "examples": ["data/log/%TIMESTAMP%"] }, "log_file": { "type": "string", "title": "Log file", "requiresRestart": true, "description": "Log file name, can also contain timestamp", "examples": ["zigbee2mqtt_%TIMESTAMP%.log"], "default": "log.txt" }, "baudrate": { "type": "number", "title": "Baudrate", "requiresRestart": true, "description": "Baudrate for serial port, default: 115200 for Z-Stack, 38400 for Deconz", "examples": [38400, 115200] }, "rtscts": { "type": "boolean", "title": "RTS / CTS", "requiresRestart": true, "description": "RTS / CTS Hardware Flow Control for serial port" }, "soft_reset_timeout": { "type": "number", "minimum": 0, "requiresRestart": true, "title": "Soft reset timeout (deprecated)", "description": "Soft reset ZNP after timeout", "readOnly": true }, "network_key": { "oneOf": [{ "type": "string", "title": "Network key(string)" }, { "type": "array", "items": { "type": "number" }, "title": "Network key(array)" } ], "title": "Network key", "requiresRestart": true, "description": "Network encryption key, changing requires repairing all devices!" }, "last_seen": { "type": "string", "enum": ["disable", "ISO_8601", "ISO_8601_local", "epoch"], "title": "Last seen", "description": "Add a last_seen attribute to MQTT messages, contains date/time of last Zigbee message", "default": "disable" }, "elapsed": { "type": "boolean", "title": "Elapsed", "description": "Add an elapsed attribute to MQTT messages, contains milliseconds since the previous msg", "default": false }, "availability_timeout": { "type": "number", "minimum": 0, "default": 0, "requiresRestart": true, "title": "Availability Timeout", "description": "Availability timeout in seconds when enabled, devices will be checked if they are still online. Only AC powered routers are checked for availability" }, "availability_blocklist": { "type": "array", "items": { "type": "string" }, "requiresRestart": true, "title": "Availability Blocklist", "description": "Prevent devices from being checked for availability" }, "availability_passlist": { "type": "array", "items": { "type": "string" }, "requiresRestart": true, "title": "Availability passlist", "description": "Only enable availability check for certain devices" }, "availability_blacklist": { "type": "array", "readOnly": true, "requiresRestart": true, "title": "Availability blacklist (deprecated, use availability_blocklist)", "items": { "type": "string" } }, "availability_whitelist": { "type": "array", "readOnly": true, "requiresRestart": true, "items": { "type": "string" }, "title": "Availability whitelist (deprecated, use passlist)" }, "report": { "type": "boolean", "title": "Reporting", "requiresRestart": true, "readOnly": true, "description": "Enables report feature (deprecated)" }, "homeassistant_discovery_topic": { "type": "string", "title": "Homeassistant discovery topic", "description": "Home Assistant discovery topic", "requiresRestart": true, "examples": ["homeassistant"] }, "homeassistant_status_topic": { "type": "string", "title": "Home Assistant status topic", "description": "Home Assistant status topic", "requiresRestart": true, "examples": ["homeassistant/status"] }, "timestamp_format": { "type": "string", "title": "Timestamp format", "requiresRestart": true, "description": "Log timestamp format", "examples": ["YYYY-MM-DD HH:mm:ss"] }, "adapter_concurrent": { "title": "Adapter concurrency", "requiresRestart": true, "type": ["number", "null"], "description": "Adapter concurrency (e.g. 2 for CC2531 or 16 for CC26X2R1) (default: null, uses recommended value)" }, "adapter_delay": { "type": ["number", "null"], "requiresRestart": true, "title": "Adapter delay", "description": "Adapter delay" }, "ikea_ota_use_test_url": { "type": "boolean", "title": "IKEA TRADFRI OTA use test url", "requiresRestart": true, "description": "Use IKEA TRADFRI OTA test server, see OTA updates documentation", "default": false }, "homeassistant_legacy_triggers": { "type": "boolean", "title": "Home Assistant legacy triggers", "description": "Home Assistant legacy triggers, when enabled Zigbee2mqt will send an empty 'action' or 'click' after one has been send. A 'sensor_action' and 'sensor_click' will be discoverd", "default": true }, "log_syslog": { "type": "object", "title": "syslog", "properties": { "host": { "type": "string", "title": "Host", "description": "The host running syslogd, defaults to localhost.", "default": "localhost" }, "port": { "type": "number", "title": "Port", "description": "The port on the host that syslog is running on, defaults to syslogd's default port.", "default": 123 }, "protocol": { "type": "string", "title": "Protocol", "description": "The network protocol to log over (e.g. tcp4, udp4, tls4, unix, unix-connect, etc).", "default": "tcp4", "examples": [ "tcp4", "udp4", "tls4", "unix", "unix-connect" ] }, "path": { "type": "string", "title": "Path", "description": "The path to the syslog dgram socket (i.e. /dev/log or /var/run/syslog for OS X).", "default": "/dev/log", "examples": [ "/dev/log", "/var/run/syslog" ] }, "pid": { "type": "string", "title": "PID", "description": "PID of the process that log messages are coming from (Default process.pid).", "default": "process.pid" }, "localhost": { "type": "string", "title": "Localhost", "description": "Host to indicate that log messages are coming from (Default: localhost).", "default": "localhost" }, "type": { "type": "string", "title": "Type", "description": "The type of the syslog protocol to use (Default: BSD, also valid: 5424).", "default": "5424" }, "app_name": { "type": "string", "title": "Localhost", "description": "The name of the application (Default: Zigbee2MQTT).", "default": "Zigbee2MQTT" }, "eol": { "type": "string", "title": "eol", "description": "The end of line character to be added to the end of the message (Default: Message without modifications).", "default": "/n" } } } } }, "map_options": { "type": "object", "title": "Networkmap", "properties": { "graphviz": { "type": "object", "properties": { "colors": { "type": "object", "properties": { "fill": { "type": "object", "properties": { "enddevice": { "type": "string" }, "coordinator": { "type": "string" }, "router": { "type": "string" } } }, "font": { "type": "object", "properties": { "enddevice": { "type": "string" }, "coordinator": { "type": "string" }, "router": { "type": "string" } } }, "line": { "type": "object", "properties": { "active": { "type": "string" }, "inactive": { "type": "string" } } } } } } } } }, "ota": { "type": "object", "title": "OTA updates", "properties": { "update_check_interval": { "type": "number", "title": "Update check interval", "description": "Your device may request a check for a new firmware update. This value determines how frequently third party servers may actually be contacted to look for firmware updates. The value is set in minutes, and the default is 1 day.", "default": 1440 }, "disable_automatic_update_check": { "type": "boolean", "title": "Disable automatic update check", "description": "Zigbee devices may request a firmware update, and do so frequently, causing Zigbee2MQTT to reach out to third party servers. If you disable these device initiated checks, you can still initiate a firmware update check manually.", "default": false } } }, "devices": { "type": "object", "propertyNames": { "pattern": "^0x[\\d\\w]{16}$" }, "patternProperties": { "^.*$": { "$ref": "#/definitions/device" } } }, "groups": { "type": "object", "propertyNames": { "pattern": "^[\\w].*$" }, "patternProperties": { "^.*$": { "$ref": "#/definitions/group" } } }, "frontend": { "type": "object", "title": "Frontend", "properties": { "port": { "type": "number", "title": "Port", "description": "Frontend binding port", "default": 8080, "requiresRestart": true }, "host": { "type": "string", "title": "Bind host", "description": "Frontend binding host", "default":" 0.0.0.0", "requiresRestart": true }, "auth_token": { "type": ["string", "null"], "title": "Auth token", "description": "Enables authentication, disabled by default", "requiresRestart": true } } } }, "required": ["mqtt"], "definitions": { "device": { "type": "object", "properties": { "friendly_name": { "type": "string", "title": "Friendly name", "description": "Used in the MQTT topic of a device. By default this is the device ID", "readOnly": true }, "retain": { "type": "boolean", "title": "Retain", "description": "Retain MQTT messages of this device" }, "retention": { "type": "number", "title": "Retention", "description": "Sets the MQTT Message Expiry in seconds, Make sure to set mqtt.version to 5" }, "qos": { "type": "number", "title": "QoS", "descritption": "QoS level for MQTT messages of this device" }, "debounce": { "type": "number", "title": "Debounce", "description": "Debounces messages of this device" }, "debounce_ignore": { "type": "array", "items": { "type": "string" }, "examples": ["action"], "title": "Ignore debounce", "description": "Protects unique payload values of specified payload properties from overriding within debounce time" }, "optimistic": { "type": "boolean", "title": "Optimistic", "description": "Publish optimistic state after set (default true)" }, "filtered_attributes": { "type": "array", "items": { "type": "string" }, "examples": ["temperature", "battery", "action"], "title": "Filtered attributes", "description": "Allows to prevent certain attributes from being published" } }, "required": ["friendly_name"] }, "group": { "type": "object", "properties": { "friendly_name": { "type": "string" }, "retain": { "type": "boolean" }, "devices": { "type": "array", "items": { "type": "string" } }, "optimistic": { "type": "boolean" }, "qos": { "type": "number" }, "filtered_attributes": { "type": "array", "items": { "type": "string" } } }, "required": ["friendly_name"] } } }