homebridge-meross
Version:
Homebridge plugin to control Meross devices.
1,180 lines (1,179 loc) • 62.8 kB
JSON
{
"pluginAlias": "Meross",
"pluginType": "platform",
"singular": true,
"customUi": true,
"customUiPath": "./lib/homebridge-ui",
"headerDisplay": "<p align=\"center\"><img width=\"60%\" src=\"https://user-images.githubusercontent.com/43026681/127397024-8b15fc07-f31b-44bd-89e3-51d738d2609a.png\"></p><p align=\"center\">For help and support please visit our <a href=\"https://github.com/bwp91/homebridge-meross/wiki\">GitHub Wiki</a>. We hope you find this plugin useful!</p>",
"schema": {
"name": {
"type": "string",
"title": "Plugin Name",
"default": "Meross"
},
"username": {
"title": "Meross Username",
"type": "string",
"placeholder": "email@email.com",
"description": "Enter your Meross username to enable cloud devices."
},
"password": {
"title": "Meross Password",
"type": "string",
"description": "Enter your Meross password to enable cloud devices."
},
"userkey": {
"title": "Meross Key",
"type": "string",
"description": "Enter your Meross key to enable local devices. You don't need to enter this if you have entered your username and password above, even for local devices. For help with obtaining this value see <a href=\"https://github.com/bwp91/homebridge-meross/wiki/Local-Control\" target=\"_blank\">the wiki</a>.",
"condition": {
"functionBody": "return !(model.username && model.password);"
}
},
"cloudRefreshRate": {
"title": "Cloud Refresh Rate",
"type": "integer",
"description": "Number of seconds between polls to devices using cloud connection. Should not be needed since the plugin supports real-time updates. Leave at 0 to disable polling, otherwise must be 30 or more.",
"placeholder": 0,
"minimum": 0,
"condition": {
"functionBody": "return (model.username && model.password);"
}
},
"refreshRate": {
"title": "Local Refresh Rate",
"type": "integer",
"description": "Number of seconds between polls to local Meross devices. Set to 0 to disable polling, otherwise must be 5 or more.",
"placeholder": 5,
"minimum": 0
},
"disableDeviceLogging": {
"type": "boolean",
"title": "Disable Device Logging",
"description": "Global logging setting for accessory status changes. If true then accessory status changes will not be logged. This can also be set per accessory later in the config."
},
"debug": {
"title": "Debug Logging",
"type": "boolean",
"description": "Global logging setting for the plugin. If true then debug information will be added to the log. This can also be set per accessory later in the config."
},
"disablePlugin": {
"title": "Disable Plugin",
"type": "boolean",
"description": "If true, the plugin will remove all accessories and not load the plugin on restart."
},
"singleDevices": {
"type": "array",
"title": "Single-Channel Devices",
"description": "Optional settings for single-channel Meross switches/outlets.",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "A label for this device, will be used as the HomeKit name if setting up a local device.",
"type": "string",
"required": true
},
"serialNumber": {
"title": "Serial Number (UUID)",
"type": "string",
"placeholder": "Serial Number",
"minLength": 32,
"maxLength": 32,
"required": true,
"condition": {
"functionBody": "return (model.singleDevices && model.singleDevices[arrayIndices] && model.singleDevices[arrayIndices].name);"
}
},
"deviceUrl": {
"title": "Connection Type",
"description": "Leave this field blank for cloud connection or enter the IP address of this device for local connection.",
"type": "string",
"format": "ipv4",
"placeholder": "192.168.1.1",
"condition": {
"functionBody": "return (model.singleDevices && model.singleDevices[arrayIndices] && model.singleDevices[arrayIndices].serialNumber && model.singleDevices[arrayIndices].serialNumber.length === 32);"
}
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.singleDevices && model.singleDevices[arrayIndices] && model.singleDevices[arrayIndices].serialNumber && model.singleDevices[arrayIndices].serialNumber.length === 32 && !model.singleDevices[arrayIndices].deviceUrl);"
}
},
"model": {
"title": "Model",
"description": "The model of this device.",
"type": "string",
"required": true,
"oneOf": [
{
"title": "HP110A",
"enum": ["HP110A"]
},
{
"title": "MSS110",
"enum": ["MSS110"]
},
{
"title": "MSS1101",
"enum": ["MSS1101"]
},
{
"title": "MSS1102",
"enum": ["MSS1102"]
},
{
"title": "MSS210",
"enum": ["MSS210"]
},
{
"title": "MSS210N",
"enum": ["MSS210N"]
},
{
"title": "MSS310",
"enum": ["MSS310"]
},
{
"title": "MSS310H",
"enum": ["MSS310H"]
},
{
"title": "MSS310R",
"enum": ["MSS310R"]
},
{
"title": "MSS510",
"enum": ["MSS510"]
},
{
"title": "MSS510M",
"enum": ["MSS510M"]
},
{
"title": "MSS510X",
"enum": ["MSS510X"]
},
{
"title": "MSS550",
"enum": ["MSS550"]
},
{
"title": "MSS550L",
"enum": ["MSS550L"]
},
{
"title": "MSS550X",
"enum": ["MSS550X"]
},
{
"title": "MSS5X0",
"enum": ["MSS5X0"]
},
{
"title": "MSS710",
"enum": ["MSS710"]
},
{
"title": "MSS810",
"enum": ["MSS810"]
}
],
"condition": {
"functionBody": "return (model.singleDevices && model.singleDevices[arrayIndices] && model.singleDevices[arrayIndices].serialNumber && model.singleDevices[arrayIndices].serialNumber.length === 32 && !model.singleDevices[arrayIndices].ignoreDevice);"
}
},
"showAs": {
"type": "string",
"title": "Show As",
"oneOf": [
{
"title": "Switch (Default)",
"enum": ["default"]
},
{
"title": "Outlet",
"enum": ["outlet"]
},
{
"title": "Air Purifier",
"enum": ["purifier"]
}
],
"condition": {
"functionBody": "return (model.singleDevices && model.singleDevices[arrayIndices] && model.singleDevices[arrayIndices].serialNumber && model.singleDevices[arrayIndices].serialNumber.length === 32 && !model.singleDevices[arrayIndices].ignoreDevice && model.singleDevices[arrayIndices].model);"
}
},
"inUsePowerThreshold": {
"type": "integer",
"title": "'In Use' Threshold",
"description": "HomeKit will set the 'In Use' status of outlet devices to true when the wattage is above this number. Only applies to models that support power readings. Must be 0 or more.",
"placeholder": 0,
"minimum": 0,
"condition": {
"functionBody": "return (model.singleDevices && model.singleDevices[arrayIndices] && model.singleDevices[arrayIndices].serialNumber && model.singleDevices[arrayIndices].serialNumber.length === 32 && !model.singleDevices[arrayIndices].ignoreDevice && model.singleDevices[arrayIndices].model);"
}
},
"firmwareRevision": {
"title": "Firmware Version",
"placeholder": "Firmware Version",
"type": "string",
"description": "Optionally override the firmware version for this device. Can be used to override firmware to hide HomeKit firmware update available messages.",
"condition": {
"functionBody": "return (model.singleDevices && model.singleDevices[arrayIndices] && model.singleDevices[arrayIndices].serialNumber && model.singleDevices[arrayIndices].serialNumber.length === 32 && !model.singleDevices[arrayIndices].ignoreDevice && model.singleDevices[arrayIndices].model);"
}
},
"overrideLogging": {
"type": "string",
"title": "Override Logging Setting",
"description": "Override global logging setting for this device.",
"oneOf": [
{
"title": "Default (Use Global Setting)",
"enum": ["default"]
},
{
"title": "Enable Standard Logging",
"enum": ["standard"]
},
{
"title": "Enable Debug Logging",
"enum": ["debug"]
},
{
"title": "Disable All Logging",
"enum": ["disable"]
}
],
"condition": {
"functionBody": "return (model.singleDevices && model.singleDevices[arrayIndices] && model.singleDevices[arrayIndices].serialNumber && model.singleDevices[arrayIndices].serialNumber.length === 32 && !model.singleDevices[arrayIndices].ignoreDevice && model.singleDevices[arrayIndices].model);"
}
}
}
}
},
"multiDevices": {
"type": "array",
"title": "Device Settings",
"description": "Optional settings for multi-channel Meross switches and outlets.",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "A label for this device, will be used as the HomeKit name if setting up a local device.",
"type": "string",
"required": true
},
"serialNumber": {
"title": "Serial Number (UUID)",
"type": "string",
"placeholder": "Serial Number",
"minLength": 32,
"maxLength": 32,
"required": true,
"condition": {
"functionBody": "return (model.multiDevices && model.multiDevices[arrayIndices] && model.multiDevices[arrayIndices].name);"
}
},
"deviceUrl": {
"title": "Connection Type",
"description": "Leave this field blank for cloud connection or enter the IP address of this device for local connection.",
"type": "string",
"format": "ipv4",
"placeholder": "192.168.1.1",
"condition": {
"functionBody": "return (model.multiDevices && model.multiDevices[arrayIndices] && model.multiDevices[arrayIndices].serialNumber && model.multiDevices[arrayIndices].serialNumber.length === 32);"
}
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.multiDevices && model.multiDevices[arrayIndices] && model.multiDevices[arrayIndices].serialNumber && model.multiDevices[arrayIndices].serialNumber.length === 32 && !model.multiDevices[arrayIndices].deviceUrl);"
}
},
"model": {
"title": "Model",
"description": "The model of this device.",
"type": "string",
"required": true,
"oneOf": [
{
"title": "MSS420",
"enum": ["MSS420"]
},
{
"title": "MSS420F",
"enum": ["MSS420F"]
},
{
"title": "MSS425",
"enum": ["MSS425"]
},
{
"title": "MSS425E",
"enum": ["MSS425E"]
},
{
"title": "MSS425F",
"enum": ["MSS425F"]
},
{
"title": "MSS530",
"enum": ["MSS530"]
},
{
"title": "MSS530H",
"enum": ["MSS530H"]
},
{
"title": "MSS620",
"enum": ["MSS620"]
},
{
"title": "MSS620B",
"enum": ["MSS620B"]
},
{
"title": "MSS620S",
"enum": ["MSS620S"]
},
{
"title": "MSS630",
"enum": ["MSS630"]
}
],
"condition": {
"functionBody": "return (model.multiDevices && model.multiDevices[arrayIndices] && model.multiDevices[arrayIndices].serialNumber && model.multiDevices[arrayIndices].serialNumber.length === 32 && !model.multiDevices[arrayIndices].ignoreDevice);"
}
},
"showAs": {
"type": "string",
"title": "Show As",
"oneOf": [
{
"title": "Switches (Default)",
"enum": ["default"]
},
{
"title": "Outlets",
"enum": ["outlet"]
}
],
"condition": {
"functionBody": "return (model.multiDevices && model.multiDevices[arrayIndices] && model.multiDevices[arrayIndices].serialNumber && model.multiDevices[arrayIndices].serialNumber.length === 32 && !model.multiDevices[arrayIndices].ignoreDevice && model.multiDevices[arrayIndices].model);"
}
},
"hideChannels": {
"type": "string",
"title": "Hide Channels",
"description": "A comma separated list of channels to hide for this device. Use '0' to hide the 'All On/Off' accessory. For example '0' or '0,1,2'.",
"condition": {
"functionBody": "return (model.multiDevices && model.multiDevices[arrayIndices] && model.multiDevices[arrayIndices].serialNumber && model.multiDevices[arrayIndices].serialNumber.length === 32 && !model.multiDevices[arrayIndices].ignoreDevice && model.multiDevices[arrayIndices].model);"
}
},
"firmwareRevision": {
"title": "Firmware Version",
"placeholder": "Firmware Version",
"type": "string",
"description": "Optionally override the firmware version for this device. Can be used to override firmware to hide HomeKit firmware update available messages.",
"condition": {
"functionBody": "return (model.multiDevices && model.multiDevices[arrayIndices] && model.multiDevices[arrayIndices].serialNumber && model.multiDevices[arrayIndices].serialNumber.length === 32 && !model.multiDevices[arrayIndices].ignoreDevice && model.multiDevices[arrayIndices].model);"
}
},
"overrideLogging": {
"type": "string",
"title": "Override Logging Setting",
"description": "Override global logging setting for this device.",
"oneOf": [
{
"title": "Default (Use Global Setting)",
"enum": ["default"]
},
{
"title": "Enable Standard Logging",
"enum": ["standard"]
},
{
"title": "Enable Debug Logging",
"enum": ["debug"]
},
{
"title": "Disable All Logging",
"enum": ["disable"]
}
],
"condition": {
"functionBody": "return (model.multiDevices && model.multiDevices[arrayIndices] && model.multiDevices[arrayIndices].serialNumber && model.multiDevices[arrayIndices].serialNumber.length === 32 && !model.multiDevices[arrayIndices].ignoreDevice && model.multiDevices[arrayIndices].model);"
}
}
}
}
},
"lightDevices": {
"type": "array",
"title": "Light Devices",
"description": "Optional settings for Meross light dimmers/bulbs/strips.",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "A label for this device, will be used as the HomeKit name if setting up a local device.",
"type": "string",
"required": true
},
"serialNumber": {
"title": "Serial Number (UUID)",
"type": "string",
"placeholder": "Serial Number",
"minLength": 32,
"maxLength": 32,
"required": true,
"condition": {
"functionBody": "return (model.lightDevices && model.lightDevices[arrayIndices] && model.lightDevices[arrayIndices].name);"
}
},
"deviceUrl": {
"title": "Connection Type",
"description": "Leave this field blank for cloud connection or enter the IP address of this device for local connection.",
"type": "string",
"format": "ipv4",
"placeholder": "192.168.1.1",
"condition": {
"functionBody": "return (model.lightDevices && model.lightDevices[arrayIndices] && model.lightDevices[arrayIndices].serialNumber && model.lightDevices[arrayIndices].serialNumber.length === 32);"
}
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.lightDevices && model.lightDevices[arrayIndices] && model.lightDevices[arrayIndices].serialNumber && model.lightDevices[arrayIndices].serialNumber.length === 32 && !model.lightDevices[arrayIndices].deviceUrl);"
}
},
"model": {
"title": "Model",
"description": "The model of this device.",
"type": "string",
"required": true,
"oneOf": [
{
"title": "MPD100",
"enum": ["MPD100"]
},
{
"title": "MSL100",
"enum": ["MSL-100"]
},
{
"title": "MSL100D",
"enum": ["MSL-100D"]
},
{
"title": "MSL120",
"enum": ["MSL-120"]
},
{
"title": "MSL120B",
"enum": ["MSL-120B"]
},
{
"title": "MSL120D",
"enum": ["MSL-120D"]
},
{
"title": "MSL320",
"enum": ["MSL-320"]
},
{
"title": "MSL320M",
"enum": ["MSL-320M"]
},
{
"title": "MSL420",
"enum": ["MSL-420"]
},
{
"title": "MSL430",
"enum": ["MSL-430"]
},
{
"title": "MSS560",
"enum": ["MSS560"]
},
{
"title": "MSS565",
"enum": ["MSS565"]
},
{
"title": "MSS570",
"enum": ["MSS570"]
},
{
"title": "MSS570X",
"enum": ["MSS570x"]
}
],
"condition": {
"functionBody": "return (model.lightDevices && model.lightDevices[arrayIndices] && model.lightDevices[arrayIndices].serialNumber && model.lightDevices[arrayIndices].serialNumber.length === 32 && !model.lightDevices[arrayIndices].ignoreDevice);"
}
},
"brightnessStep": {
"title": "Brightness Step",
"type": "integer",
"description": "A minimum step for the brightness slider in the Home app. Must be 1 or more.",
"placeholder": 1,
"minimum": 1,
"condition": {
"functionBody": "return (model.lightDevices && model.lightDevices[arrayIndices] && model.lightDevices[arrayIndices].serialNumber && model.lightDevices[arrayIndices].serialNumber.length === 32 && !model.lightDevices[arrayIndices].ignoreDevice && model.lightDevices[arrayIndices].model);"
}
},
"adaptiveLightingShift": {
"title": "Adaptive Lighting Shift",
"type": "integer",
"description": "The mired for each Adaptive Lighting update will be increased by this value, making the light appear warmer. Set to -1 to remove Adaptive Lighting feature. Must be -1 or more.",
"placeholder": 0,
"minimum": -1,
"condition": {
"functionBody": "return (model.lightDevices && model.lightDevices[arrayIndices] && model.lightDevices[arrayIndices].serialNumber && model.lightDevices[arrayIndices].serialNumber.length === 32 && !model.lightDevices[arrayIndices].ignoreDevice && model.lightDevices[arrayIndices].model);"
}
},
"firmwareRevision": {
"title": "Firmware Version",
"placeholder": "Firmware Version",
"type": "string",
"description": "Optionally override the firmware version for this device. Can be used to override firmware to hide HomeKit firmware update available messages.",
"condition": {
"functionBody": "return (model.lightDevices && model.lightDevices[arrayIndices] && model.lightDevices[arrayIndices].serialNumber && model.lightDevices[arrayIndices].serialNumber.length === 32 && !model.lightDevices[arrayIndices].ignoreDevice && model.lightDevices[arrayIndices].model);"
}
},
"overrideLogging": {
"type": "string",
"title": "Override Logging Setting",
"description": "Override global logging setting for this device.",
"oneOf": [
{
"title": "Default (Use Global Setting)",
"enum": ["default"]
},
{
"title": "Enable Standard Logging",
"enum": ["standard"]
},
{
"title": "Enable Debug Logging",
"enum": ["debug"]
},
{
"title": "Disable All Logging",
"enum": ["disable"]
}
],
"condition": {
"functionBody": "return (model.lightDevices && model.lightDevices[arrayIndices] && model.lightDevices[arrayIndices].serialNumber && model.lightDevices[arrayIndices].serialNumber.length === 32 && !model.lightDevices[arrayIndices].ignoreDevice && model.lightDevices[arrayIndices].model);"
}
}
}
}
},
"diffuserDevices": {
"type": "array",
"title": "Device Settings",
"description": "Optional settings for Meross diffuser devices.",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "A label for this device, will be used as the HomeKit name if setting up a local device.",
"type": "string",
"required": true
},
"serialNumber": {
"title": "Serial Number (UUID)",
"type": "string",
"placeholder": "Serial Number",
"minLength": 32,
"maxLength": 32,
"required": true,
"condition": {
"functionBody": "return (model.diffuserDevices && model.diffuserDevices[arrayIndices] && model.diffuserDevices[arrayIndices].name);"
}
},
"deviceUrl": {
"title": "Connection Type",
"description": "Leave this field blank for cloud connection or enter the IP address of this device for local connection.",
"type": "string",
"format": "ipv4",
"placeholder": "192.168.1.1",
"condition": {
"functionBody": "return (model.diffuserDevices && model.diffuserDevices[arrayIndices] && model.diffuserDevices[arrayIndices].serialNumber && model.diffuserDevices[arrayIndices].serialNumber.length === 32);"
}
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.diffuserDevices && model.diffuserDevices[arrayIndices] && model.diffuserDevices[arrayIndices].serialNumber && model.diffuserDevices[arrayIndices].serialNumber.length === 32 && !model.diffuserDevices[arrayIndices].deviceUrl);"
}
},
"model": {
"title": "Model",
"description": "The model of this device.",
"type": "string",
"required": true,
"oneOf": [
{
"title": "MOD100",
"enum": ["MOD100"]
}
],
"condition": {
"functionBody": "return (model.diffuserDevices && model.diffuserDevices[arrayIndices] && model.diffuserDevices[arrayIndices].serialNumber && model.diffuserDevices[arrayIndices].serialNumber.length === 32 && !model.diffuserDevices[arrayIndices].ignoreDevice);"
}
},
"brightnessStep": {
"title": "Brightness Step",
"type": "integer",
"description": "A minimum step for the brightness slider in the Home app. Must be 1 or more.",
"placeholder": 1,
"minimum": 1,
"condition": {
"functionBody": "return (model.diffuserDevices && model.diffuserDevices[arrayIndices] && model.diffuserDevices[arrayIndices].serialNumber && model.diffuserDevices[arrayIndices].serialNumber.length === 32 && !model.diffuserDevices[arrayIndices].ignoreDevice && model.diffuserDevices[arrayIndices].model);"
}
},
"firmwareRevision": {
"title": "Firmware Version",
"placeholder": "Firmware Version",
"type": "string",
"description": "Optionally override the firmware version for this device. Can be used to override firmware to hide HomeKit firmware update available messages.",
"condition": {
"functionBody": "return (model.diffuserDevices && model.diffuserDevices[arrayIndices] && model.diffuserDevices[arrayIndices].serialNumber && model.diffuserDevices[arrayIndices].serialNumber.length === 32 && !model.diffuserDevices[arrayIndices].ignoreDevice && model.diffuserDevices[arrayIndices].model);"
}
},
"overrideLogging": {
"type": "string",
"title": "Override Logging Setting",
"description": "Override global logging setting for this device.",
"oneOf": [
{
"title": "Default (Use Global Setting)",
"enum": ["default"]
},
{
"title": "Enable Standard Logging",
"enum": ["standard"]
},
{
"title": "Enable Debug Logging",
"enum": ["debug"]
},
{
"title": "Disable All Logging",
"enum": ["disable"]
}
],
"condition": {
"functionBody": "return (model.diffuserDevices && model.diffuserDevices[arrayIndices] && model.diffuserDevices[arrayIndices].serialNumber && model.diffuserDevices[arrayIndices].serialNumber.length === 32 && !model.diffuserDevices[arrayIndices].ignoreDevice && model.diffuserDevices[arrayIndices].model);"
}
}
}
}
},
"garageDevices": {
"type": "array",
"title": "Garage Devices",
"description": "Optional settings for Meross garage devices.",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "A label for this device, will be used as the HomeKit name if setting up a local device.",
"type": "string",
"required": true
},
"serialNumber": {
"title": "Serial Number (UUID)",
"type": "string",
"placeholder": "Serial Number",
"minLength": 32,
"maxLength": 32,
"required": true,
"condition": {
"functionBody": "return (model.garageDevices && model.garageDevices[arrayIndices] && model.garageDevices[arrayIndices].name);"
}
},
"deviceUrl": {
"title": "Connection Type",
"description": "Leave this field blank for cloud connection or enter the IP address of this device for local connection.",
"type": "string",
"format": "ipv4",
"placeholder": "192.168.1.1",
"condition": {
"functionBody": "return (model.garageDevices && model.garageDevices[arrayIndices] && model.garageDevices[arrayIndices].serialNumber && model.garageDevices[arrayIndices].serialNumber.length === 32);"
}
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.garageDevices && model.garageDevices[arrayIndices] && model.garageDevices[arrayIndices].serialNumber && model.garageDevices[arrayIndices].serialNumber.length === 32 && !model.garageDevices[arrayIndices].deviceUrl);"
}
},
"model": {
"title": "Model",
"description": "The model of this device.",
"type": "string",
"required": true,
"oneOf": [
{
"title": "MSG100",
"enum": ["MSG100"]
},
{
"title": "MSG200",
"enum": ["MSG200"]
}
],
"condition": {
"functionBody": "return (model.garageDevices && model.garageDevices[arrayIndices] && model.garageDevices[arrayIndices].serialNumber && model.garageDevices[arrayIndices].serialNumber.length === 32 && !model.garageDevices[arrayIndices].ignoreDevice);"
}
},
"garageDoorOpeningTime": {
"title": "Operation Time",
"description": "The number of seconds for which it takes the garage door to open/close.",
"type": "integer",
"placeholder": "20",
"minimum": 1,
"condition": {
"functionBody": "return (model.garageDevices && model.garageDevices[arrayIndices] && model.garageDevices[arrayIndices].serialNumber && model.garageDevices[arrayIndices].serialNumber.length === 32 && ['MSG100', 'MSG200'].includes(model.garageDevices[arrayIndices].model) && !model.garageDevices[arrayIndices].ignoreDevice);"
}
},
"firmwareRevision": {
"title": "Firmware Version",
"placeholder": "Firmware Version",
"type": "string",
"description": "Optionally override the firmware version for this device. Can be used to override firmware to hide HomeKit firmware update available messages.",
"condition": {
"functionBody": "return (model.garageDevices && model.garageDevices[arrayIndices] && model.garageDevices[arrayIndices].serialNumber && model.garageDevices[arrayIndices].serialNumber.length === 32 && !model.garageDevices[arrayIndices].ignoreDevice && model.garageDevices[arrayIndices].model);"
}
},
"overrideLogging": {
"type": "string",
"title": "Override Logging Setting",
"description": "Override global logging setting for this device.",
"oneOf": [
{
"title": "Default (Use Global Setting)",
"enum": ["default"]
},
{
"title": "Enable Standard Logging",
"enum": ["standard"]
},
{
"title": "Enable Debug Logging",
"enum": ["debug"]
},
{
"title": "Disable All Logging",
"enum": ["disable"]
}
],
"condition": {
"functionBody": "return (model.garageDevices && model.garageDevices[arrayIndices] && model.garageDevices[arrayIndices].serialNumber && model.garageDevices[arrayIndices].serialNumber.length === 32 && !model.garageDevices[arrayIndices].ignoreDevice && model.garageDevices[arrayIndices].model);"
}
}
}
}
},
"rollerDevices": {
"type": "array",
"title": "Roller Devices",
"description": "Optional settings for Meross rolling motor devices.",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "A label for this device, will be used as the HomeKit name if setting up a local device.",
"type": "string",
"required": true
},
"serialNumber": {
"title": "Serial Number (UUID)",
"type": "string",
"placeholder": "Serial Number",
"minLength": 32,
"maxLength": 32,
"required": true,
"condition": {
"functionBody": "return (model.rollerDevices && model.rollerDevices[arrayIndices] && model.rollerDevices[arrayIndices].name);"
}
},
"deviceUrl": {
"title": "Connection Type",
"description": "Leave this field blank for cloud connection or enter the IP address of this device for local connection.",
"type": "string",
"format": "ipv4",
"placeholder": "192.168.1.1",
"condition": {
"functionBody": "return (model.rollerDevices && model.rollerDevices[arrayIndices] && model.rollerDevices[arrayIndices].serialNumber && model.rollerDevices[arrayIndices].serialNumber.length === 32);"
}
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.rollerDevices && model.rollerDevices[arrayIndices] && model.rollerDevices[arrayIndices].serialNumber && model.rollerDevices[arrayIndices].serialNumber.length === 32 && !model.rollerDevices[arrayIndices].deviceUrl);"
}
},
"model": {
"title": "Model",
"description": "The model of this device.",
"type": "string",
"required": true,
"oneOf": [
{
"title": "MRS100",
"enum": ["MRS100"]
}
],
"condition": {
"functionBody": "return (model.rollerDevices && model.rollerDevices[arrayIndices] && model.rollerDevices[arrayIndices].serialNumber && model.rollerDevices[arrayIndices].serialNumber.length === 32 && !model.rollerDevices[arrayIndices].ignoreDevice);"
}
},
"reversePolarity": {
"type": "boolean",
"title": "Reverse Polarity",
"description": "If true, the plugin will reverse the open/close commands that it sends.",
"condition": {
"functionBody": "return (model.rollerDevices && model.rollerDevices[arrayIndices] && model.rollerDevices[arrayIndices].serialNumber && model.rollerDevices[arrayIndices].serialNumber.length === 32 && model.rollerDevices[arrayIndices].model === 'MRS100' && !model.rollerDevices[arrayIndices].ignoreDevice);"
}
},
"firmwareRevision": {
"title": "Firmware Version",
"placeholder": "Firmware Version",
"type": "string",
"description": "Optionally override the firmware version for this device. Can be used to override firmware to hide HomeKit firmware update available messages.",
"condition": {
"functionBody": "return (model.rollerDevices && model.rollerDevices[arrayIndices] && model.rollerDevices[arrayIndices].serialNumber && model.rollerDevices[arrayIndices].serialNumber.length === 32 && !model.rollerDevices[arrayIndices].ignoreDevice && model.rollerDevices[arrayIndices].model);"
}
},
"overrideLogging": {
"type": "string",
"title": "Override Logging Setting",
"description": "Override global logging setting for this device.",
"oneOf": [
{
"title": "Default (Use Global Setting)",
"enum": ["default"]
},
{
"title": "Enable Standard Logging",
"enum": ["standard"]
},
{
"title": "Enable Debug Logging",
"enum": ["debug"]
},
{
"title": "Disable All Logging",
"enum": ["disable"]
}
],
"condition": {
"functionBody": "return (model.rollerDevices && model.rollerDevices[arrayIndices] && model.rollerDevices[arrayIndices].serialNumber && model.rollerDevices[arrayIndices].serialNumber.length === 32 && !model.rollerDevices[arrayIndices].ignoreDevice && model.rollerDevices[arrayIndices].model);"
}
}
}
}
},
"sensorDevices": {
"type": "array",
"title": "Sensor Devices",
"description": "Optional settings for Meross sensor hubs and subdevices.",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "A label for this device, will be used as the HomeKit name if setting up a local device.",
"type": "string",
"required": true
},
"serialNumber": {
"title": "Serial Number (UUID)",
"type": "string",
"placeholder": "Serial Number",
"minLength": 32,
"maxLength": 32,
"required": true,
"condition": {
"functionBody": "return (model.sensorDevices && model.sensorDevices[arrayIndices] && model.sensorDevices[arrayIndices].name);"
}
},
"deviceUrl": {
"title": "Connection Type",
"description": "Leave this field blank for cloud connection or enter the IP address of this device for local connection.",
"type": "string",
"format": "ipv4",
"placeholder": "192.168.1.1",
"condition": {
"functionBody": "return (model.sensorDevices && model.sensorDevices[arrayIndices] && model.sensorDevices[arrayIndices].serialNumber && model.sensorDevices[arrayIndices].serialNumber.length === 32);"
}
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.sensorDevices && model.sensorDevices[arrayIndices] && model.sensorDevices[arrayIndices].serialNumber && model.sensorDevices[arrayIndices].serialNumber.length === 32 && !model.sensorDevices[arrayIndices].deviceUrl);"
}
},
"model": {
"title": "Model",
"description": "The model of this device.",
"type": "string",
"required": true,
"oneOf": [
{
"title": "MSH300",
"enum": ["MSH300"]
}
],
"condition": {
"functionBody": "return (model.sensorDevices && model.sensorDevices[arrayIndices] && model.sensorDevices[arrayIndices].serialNumber && model.sensorDevices[arrayIndices].serialNumber.length === 32 && !model.sensorDevices[arrayIndices].ignoreDevice);"
}
},
"lowBattThreshold": {
"type": "integer",
"title": "Low Battery Threshold",
"description": "HomeKit will set the low battery status for a subdevices when its battery reaches this percentage level. Must be 1 or more.",
"placeholder": 20,
"minimum": 1,
"condition": {
"functionBody": "return (model.sensorDevices && model.sensorDevices[arrayIndices] && model.sensorDevices[arrayIndices].serialNumber && model.sensorDevices[arrayIndices].serialNumber.length === 32 && !model.sensorDevices[arrayIndices].ignoreDevice && model.sensorDevices[arrayIndices].model);"
}
},
"firmwareRevision": {
"title": "Firmware Version",
"placeholder": "Firmware Version",
"type": "string",
"description": "Optionally override the firmware version for this device. Can be used to override firmware to hide HomeKit firmware update available messages.",
"condition": {
"functionBody": "return (model.sensorDevices && model.sensorDevices[arrayIndices] && model.sensorDevices[arrayIndices].serialNumber && model.sensorDevices[arrayIndices].serialNumber.length === 32 && !model.sensorDevices[arrayIndices].ignoreDevice && model.sensorDevices[arrayIndices].model);"
}
},
"overrideLogging": {
"type": "string",
"title": "Override Logging Setting",
"description": "Override global logging setting for this device.",
"oneOf": [
{
"title": "Default (Use Global Setting)",
"enum": ["default"]
},
{
"title": "Enable Standard Logging",
"enum": ["standard"]
},
{
"title": "Enable Debug Logging",
"enum": ["debug"]
},
{
"title": "Disable All Logging",
"enum": ["disable"]
}
],
"condition": {
"functionBody": "return (model.sensorDevices && model.sensorDevices[arrayIndices] && model.sensorDevices[arrayIndices].serialNumber && model.sensorDevices[arrayIndices].serialNumber.length === 32 && !model.sensorDevices[arrayIndices].ignoreDevice && model.sensorDevices[arrayIndices].model);"
}
}
}
}
},
"devices": {
"type": "array",
"title": "Device Settings (Deprecated)",
"description": "You should not use this section to add new entries. Move your existing entries from here to the appropriate section above.",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "A label for this device, will be used as the HomeKit name if setting up a local device.",
"type": "string",
"required": true
},
"serialNumber": {
"title": "Serial Number (UUID)",
"type": "string",
"placeholder": "Serial Number",
"minLength": 32,
"maxLength": 32,
"required": true,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices] && model.devices[arrayIndices].name);"
}
},
"deviceUrl": {
"title": "Connection Type",
"description": "Leave this field blank for cloud connection or enter the IP address of this device for local connection.",
"type": "string",
"format": "ipv4",
"placeholder": "192.168.1.1",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices] && model.devices[arrayIndices].serialNumber && model.devices[arrayIndices].serialNumber.length === 32);"
}
},
"ignoreDevice": {
"type": "boolean",
"title": "Hide From HomeKit",
"description": "If true, this accessory will be removed and ignored from HomeKit.",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices] && model.devices[arrayIndices].serialNumber && model.devices[arrayIndices].serialNumber.length === 32 && !model.devices[arrayIndices].deviceUrl);"
}
},
"model": {
"title": "Model",
"description": "The model of this device.",
"type": "string",
"required": true,
"oneOf": [
{
"title": "MOD100",
"enum": ["MOD100"]
},
{
"title": "MPD100",
"enum": ["MPD100"]
},
{
"title": "MRS100",
"enum": ["MRS100"]
},
{
"title": "MSG100",
"enum": ["MSG100"]
},
{
"title": "MSG200",
"enum": ["MSG200"]
},
{
"title": "MSL100",
"enum": ["MSL-100"]
},
{
"title": "MSL100D",
"enum": ["MSL-100D"]
},
{
"title": "MSL120",
"enum": ["MSL-120"]
},
{
"title": "MSL120B",
"enum": ["MSL-120B"]
},
{
"title": "MSL120D",
"enum": ["MSL-120D"]
},
{
"title": "MSL320",
"enum": ["MSL-320"]
},
{
"title": "MSL320M",
"enum": ["MSL-320M"]
},
{
"title": "MSL420",
"enum": ["MSL-420"]
},
{
"title": "MSL430",
"enum": ["MSL-430"]
},
{
"title": "MSS110",
"enum": ["MSS110"]
},
{
"title": "MSS210",
"enum": ["MSS210"]
},
{
"title": "MSS210N",
"enum": ["MSS210N"]
},
{
"title": "MSS310",
"enum": ["MSS310"]
},
{
"title": "MSS310H",
"enum": ["MSS310"]
},
{
"title": "MSS310R",
"enum": ["MSS310"]
},
{
"title": "MSS420",
"enum": ["MSS420"]
},
{
"title": "MSS420F",
"enum": ["MSS420F"]
},
{
"title": "MSS425",
"enum": ["MSS425"]
},
{
"title": "MSS425E",
"enum": ["MSS425E"]
},
{
"title": "MSS425F",
"enum": ["MSS425F"]
},
{
"title": "MSS510",
"enum": ["MSS510"]
},
{
"title": "MSS510M",
"enum": ["MSS510M"]
},
{
"title": "MSS510X",
"enum": ["MSS510X"]
},
{
"title": "MSS530",
"enum": ["MSS530"]
},
{
"title": "MSS530H",
"enum": ["MSS530H"]
},
{
"title": "MSS550",
"enum": ["MSS550"]
},