759 lines
18 KiB
JSON
759 lines
18 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft-07/schema",
|
|
"type": "object",
|
|
"properties": {
|
|
"$import": { "$ref": "#/definitions/import" },
|
|
"manufacturer": {
|
|
"$ref": "#/definitions/conditionalString2",
|
|
"description": "The full name of the manufacturer"
|
|
},
|
|
"manufacturerId": {
|
|
"type": "string",
|
|
"description": "The manufacturer ID as assigned by the Z-Wave Alliance",
|
|
"pattern": "^0x[0-9a-f]{4}$"
|
|
},
|
|
"label": {
|
|
"$ref": "#/definitions/conditionalString2",
|
|
"description": "The device label that will be displayed by applications. Should usually be short."
|
|
},
|
|
"description": {
|
|
"$ref": "#/definitions/conditionalString2",
|
|
"description": "A slightly more detailed description of this device, explaining what kind of device this is"
|
|
},
|
|
"devices": {
|
|
"type": "array",
|
|
"description": "An array of product type and product ID combinations",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"productType": {
|
|
"type": "string",
|
|
"description": "The product type of this device as a 4-digit hex string",
|
|
"pattern": "^0x[0-9a-f]{4}$"
|
|
},
|
|
"productId": {
|
|
"type": "string",
|
|
"description": "The product ID of this device as a 4-digit hex string",
|
|
"pattern": "^0x[0-9a-f]{4}$"
|
|
},
|
|
"zwaveAllianceId": {
|
|
"description": "The IDs of the Z-Wave Alliance product database belonging to this device",
|
|
"oneOf": [
|
|
{ "type": "integer" },
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": { "type": "integer" },
|
|
"uniqueItems": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": ["productType", "productId"],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"firmwareVersion": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "string",
|
|
"description": "The minimum firmware version this config file targets",
|
|
"pattern": "^[0-9]|[1-9][0-9]|[1-2][0-9][0-9]\\.[0-9]|[1-9][0-9]|[1-2][0-9][0-9](\\.[0-9]|[1-9][0-9]|[1-2][0-9][0-9])?$"
|
|
},
|
|
"max": {
|
|
"type": "string",
|
|
"description": "The maximum firmware version this config file targets",
|
|
"pattern": "^[0-9]|[1-9][0-9]|[1-2][0-9][0-9]\\.[0-9]|[1-9][0-9]|[1-2][0-9][0-9](\\.[0-9]|[1-9][0-9]|[1-2][0-9][0-9])?$"
|
|
}
|
|
},
|
|
"required": ["min", "max"],
|
|
"additionalProperties": false
|
|
},
|
|
"preferred": {
|
|
"const": true,
|
|
"description": "Mark this configuration file as preferred over others with overlapping firmware version ranges"
|
|
},
|
|
"supportsZWavePlus": {
|
|
"const": true
|
|
},
|
|
"endpoints": { "$ref": "#/definitions/endpoints" },
|
|
"associations": { "$ref": "#/definitions/associations" },
|
|
"paramInformation": { "$ref": "#/definitions/paramInformation" },
|
|
"proprietary": {
|
|
"type": "object",
|
|
"description": "A dictionary of settings for the proprietary CC. The settings depend on each proprietary CC implementation."
|
|
},
|
|
"compat": {
|
|
"anyOf": [
|
|
{ "$ref": "#/definitions/compatFlags" },
|
|
{
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/compatFlags" },
|
|
"minItems": 1,
|
|
"additionalItems": false
|
|
}
|
|
]
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"$import": { "$ref": "#/definitions/import" },
|
|
"wakeup": {
|
|
"$ref": "#/definitions/conditionalString",
|
|
"description": "How to wake up the device manually"
|
|
},
|
|
"inclusion": {
|
|
"$ref": "#/definitions/conditionalString",
|
|
"description": "Inclusion instructions for this device"
|
|
},
|
|
"exclusion": {
|
|
"$ref": "#/definitions/conditionalString",
|
|
"description": "Exclusion instructions for this device"
|
|
},
|
|
"reset": {
|
|
"$ref": "#/definitions/conditionalString",
|
|
"description": "Instructions for resetting the device to factory defaults"
|
|
},
|
|
"manual": {
|
|
"$ref": "#/definitions/conditionalString",
|
|
"description": "A link to the device manual"
|
|
},
|
|
"comments": {
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/comment"
|
|
},
|
|
"minItems": 1
|
|
},
|
|
{
|
|
"$ref": "#/definitions/comment"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"minProperties": 1
|
|
}
|
|
},
|
|
"anyOf": [
|
|
{
|
|
"required": [
|
|
"manufacturer",
|
|
"manufacturerId",
|
|
"label",
|
|
"description",
|
|
"devices",
|
|
"firmwareVersion"
|
|
]
|
|
},
|
|
{
|
|
"required": ["$import"]
|
|
}
|
|
],
|
|
"additionalProperties": false,
|
|
"definitions": {
|
|
"import": {
|
|
"type": "string",
|
|
"description": "Used to import another config file or parts thereof",
|
|
"pattern": "^((?<dir>((?:~/)?[\\w\\d_\\.-]+/)+)?(?<filename>[\\w\\d_-]+\\.json))?(?<selector>#([\\w\\d\\[\\]_-]+/)*[\\w\\d\\[\\]_-]+)?$"
|
|
},
|
|
"condition": {
|
|
"type": "string",
|
|
"description": "A condition that must be fulfilled for this entry to exit."
|
|
},
|
|
"conditionalString": {
|
|
"anyOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"anyOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"$if": {
|
|
"$ref": "#/definitions/condition"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["value"],
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"conditionalString2": {
|
|
"anyOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "array",
|
|
"minItems": 2,
|
|
"items": {
|
|
"anyOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"$if": {
|
|
"$ref": "#/definitions/condition"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["value"],
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"endpoints": {
|
|
"type": "object",
|
|
"description": "Endpoint-specific configuration",
|
|
"patternProperties": {
|
|
"^\\d+$": {
|
|
"type": "object",
|
|
"properties": {
|
|
"$import": { "$ref": "#/definitions/import" },
|
|
"$if": { "$ref": "#/definitions/condition" },
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"associations": {
|
|
"$ref": "#/definitions/associations"
|
|
},
|
|
"paramInformation": {
|
|
"$ref": "#/definitions/paramInformation"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"associations": {
|
|
"type": "object",
|
|
"description": "Define association groups for devices that don't support Z-Wave+ or modify the reported associations for devices that do.",
|
|
"properties": {
|
|
"$import": { "$ref": "#/definitions/import" }
|
|
},
|
|
"patternProperties": {
|
|
"^\\d+$": {
|
|
"type": "object",
|
|
"properties": {
|
|
"$import": { "$ref": "#/definitions/import" },
|
|
"$if": { "$ref": "#/definitions/condition" },
|
|
"label": {
|
|
"type": "string",
|
|
"description": "How this association group is called"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "What this association group does"
|
|
},
|
|
"maxNodes": {
|
|
"type": "number",
|
|
"description": "How many nodes may be assigned to this group",
|
|
"minimum": 1
|
|
},
|
|
"isLifeline": {
|
|
"type": "boolean",
|
|
"description": "Whether this is a Lifeline group. SHOULD exist exactly once, some nodes require more groups to report everything."
|
|
},
|
|
"multiChannel": {
|
|
"type": "boolean",
|
|
"description": "`true`: Force a multi channel association (if possible); `false`: Force a node association (if possible)"
|
|
}
|
|
},
|
|
"anyOf": [
|
|
{
|
|
"required": ["label", "maxNodes"]
|
|
},
|
|
{
|
|
"required": ["$import"]
|
|
}
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"paramInformation": {
|
|
"type": "array",
|
|
"description": "Defines all the existing configuration parameters",
|
|
"items": { "$ref": "#/definitions/param" },
|
|
"minItems": 1,
|
|
"additionalItems": false
|
|
},
|
|
"ccInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"isSupported": {
|
|
"type": "boolean"
|
|
},
|
|
"isControlled": {
|
|
"type": "boolean"
|
|
},
|
|
"secure": {
|
|
"type": "boolean"
|
|
},
|
|
"version": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ccInfoAndEndpoints": {
|
|
"type": "object",
|
|
"properties": {
|
|
"isSupported": {
|
|
"type": "boolean"
|
|
},
|
|
"isControlled": {
|
|
"type": "boolean"
|
|
},
|
|
"secure": {
|
|
"type": "boolean"
|
|
},
|
|
"version": {
|
|
"type": "number"
|
|
},
|
|
"endpoints": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^\\d+$": {
|
|
"$ref": "#/definitions/ccInfo"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"param": {
|
|
"type": "object",
|
|
"properties": {
|
|
"#": {
|
|
"type": "string",
|
|
"pattern": "^\\d+(\\[0x[0-9a-f]{1,8}\\])?$"
|
|
},
|
|
"$import": { "$ref": "#/definitions/import" },
|
|
"$if": { "$ref": "#/definitions/condition" },
|
|
"label": {
|
|
"type": "string",
|
|
"description": "A short name for the parameter"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "A longer description what the parameter does"
|
|
},
|
|
"valueSize": {
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 4,
|
|
"description": "How many bytes the device uses for this value"
|
|
},
|
|
"minValue": {
|
|
"type": "number",
|
|
"description": "The minimum allowed value for this parameter"
|
|
},
|
|
"maxValue": {
|
|
"type": "number",
|
|
"description": "The maximum allowed value for this parameter"
|
|
},
|
|
"unit": {
|
|
"type": "string",
|
|
"description": "In which unit the value is interpreted"
|
|
},
|
|
"unsigned": {
|
|
"type": "boolean",
|
|
"description": "Whether this parameter is interpreted as an unsigned value by the device (default: false). This simplifies usage for the end user."
|
|
},
|
|
"defaultValue": {
|
|
"type": "number",
|
|
"description": "The factory default value of this parameter."
|
|
},
|
|
"readOnly": {
|
|
"const": true,
|
|
"description": "Whether this parameter can only be read"
|
|
},
|
|
"writeOnly": {
|
|
"const": true,
|
|
"description": "Whether this parameter can only be written"
|
|
},
|
|
"allowManualEntry": {
|
|
"const": false,
|
|
"description": "Whether this parameter accepts any value between minValue and maxValue. If false, minValue and maxValue are optional, but options must be used to specify the allowed values."
|
|
},
|
|
"options": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"$import": {
|
|
"$ref": "#/definitions/import"
|
|
},
|
|
"$if": {
|
|
"$ref": "#/definitions/condition"
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"description": "The option label to display"
|
|
},
|
|
"value": {
|
|
"type": "number",
|
|
"description": "Which value this option represents"
|
|
}
|
|
},
|
|
"anyOf": [
|
|
{
|
|
"required": ["label", "value"]
|
|
},
|
|
{
|
|
"required": ["$import"]
|
|
}
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"anyOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"readOnly": {
|
|
"const": true
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": ["#", "label", "valueSize"]
|
|
},
|
|
"else": {
|
|
"required": ["#", "label", "valueSize", "defaultValue"]
|
|
}
|
|
},
|
|
{
|
|
"required": ["#", "$import"]
|
|
}
|
|
]
|
|
},
|
|
"compatFlags": {
|
|
"type": "object",
|
|
"properties": {
|
|
"$if": { "$ref": "#/definitions/condition" },
|
|
"$import": { "$ref": "#/definitions/import" },
|
|
"alarmMapping": {
|
|
"description": "Is used to map legacy V1 alarm values to V2+ Notification events",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"$import": { "$ref": "#/definitions/import" },
|
|
"from": {
|
|
"type": "object",
|
|
"properties": {
|
|
"alarmType": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 255
|
|
},
|
|
"alarmLevel": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 255
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": ["alarmType"]
|
|
},
|
|
"to": {
|
|
"type": "object",
|
|
"properties": {
|
|
"notificationType": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 255
|
|
},
|
|
"notificationEvent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 255
|
|
},
|
|
"eventParameters": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"enum": ["alarmLevel"]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"notificationType",
|
|
"notificationEvent"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"anyOf": [
|
|
{
|
|
"required": ["from", "to"]
|
|
},
|
|
{
|
|
"required": ["$import"]
|
|
}
|
|
]
|
|
},
|
|
"minItems": 1,
|
|
"additionalItems": false
|
|
},
|
|
"commandClasses": {
|
|
"type": "object",
|
|
"properties": {
|
|
"add": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/ccInfoAndEndpoints"
|
|
}
|
|
},
|
|
"remove": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"endpoints": {
|
|
"anyOf": [
|
|
{ "const": "*" },
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"minItems": 1
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"disableAutoRefresh": {
|
|
"const": true
|
|
},
|
|
"disableCallbackFunctionTypeCheck": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"minItems": 1
|
|
},
|
|
"disableStrictEntryControlDataValidation": {
|
|
"const": true
|
|
},
|
|
"disableStrictMeasurementValidation": {
|
|
"const": true
|
|
},
|
|
"encodeCCsUsingTargetVersion": {
|
|
"const": true
|
|
},
|
|
"forceNotificationIdleReset": {
|
|
"const": true
|
|
},
|
|
"forceSceneControllerGroupCount": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 255
|
|
},
|
|
"manualValueRefreshDelayMs": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"mapBasicReport": {
|
|
"oneOf": [
|
|
{
|
|
"const": false
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": ["auto", "Binary Sensor"]
|
|
}
|
|
]
|
|
},
|
|
"mapBasicSet": {
|
|
"type": "string",
|
|
"enum": ["event", "report", "auto", "Binary Sensor"]
|
|
},
|
|
"mapRootReportsToEndpoint": {
|
|
"type": "number",
|
|
"minimum": 1
|
|
},
|
|
"overrideFloatEncoding": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 4
|
|
},
|
|
"precision": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
}
|
|
},
|
|
"minProperties": 1,
|
|
"additionalProperties": false
|
|
},
|
|
"overrideQueries": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"endpoint": { "type": "integer", "minimum": 0 },
|
|
"method": { "type": "string" },
|
|
"matchArgs": { "type": "array" },
|
|
"result": true,
|
|
"persistValues": { "type": "object" },
|
|
"extendMetadata": { "type": "object" }
|
|
},
|
|
"required": ["method", "result"],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"preserveEndpoints": {
|
|
"oneOf": [
|
|
{
|
|
"const": "*"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"preserveRootApplicationCCValueIDs": {
|
|
"const": true
|
|
},
|
|
"queryOnWakeup": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "array",
|
|
"items": [{ "type": "string" }, { "type": "string" }],
|
|
"additionalItems": {
|
|
"anyOf": [
|
|
{ "type": "string" },
|
|
{ "type": "number" },
|
|
{ "type": "boolean" }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"removeEndpoints": {
|
|
"oneOf": [
|
|
{
|
|
"const": "*"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"reportTimeout": {
|
|
"type": "number",
|
|
"minimum": 1000,
|
|
"maximum": 10000
|
|
},
|
|
"skipConfigurationNameQuery": {
|
|
"const": true
|
|
},
|
|
"skipConfigurationInfoQuery": {
|
|
"const": true
|
|
},
|
|
"treatMultilevelSwitchSetAsEvent": {
|
|
"const": true
|
|
},
|
|
"treatSetAsReport": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"treatDestinationEndpointAsSource": {
|
|
"const": true
|
|
},
|
|
"useUTCInTimeParametersCC": {
|
|
"const": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"comment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"$if": {
|
|
"$ref": "#/definitions/condition"
|
|
},
|
|
"$import": { "$ref": "#/definitions/import" },
|
|
"level": {
|
|
"type": "string",
|
|
"enum": ["info", "warning", "error"]
|
|
},
|
|
"text": {
|
|
"type": "string",
|
|
"description": "The actual comment"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"anyOf": [
|
|
{
|
|
"required": ["level", "text"]
|
|
},
|
|
{
|
|
"required": ["$import"]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|