homebridge-tsvesync
Version:
Homebridge plugin for VeSync devices including Levoit air purifiers, humidifiers, and Etekcity smart outlets
271 lines (270 loc) • 10.1 kB
JSON
{
"pluginAlias": "TSVESyncPlatform",
"pluginType": "platform",
"singular": true,
"headerDisplay": "Homebridge plugin for VeSync devices including Levoit air purifiers humidifiers and Etekcity smart outlets.",
"footerDisplay": "For help please visit the [GitHub repository](https://github.com/mickgiles/homebridge-tsvesync).",
"schema": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"default": "TSVESync",
"required": true
},
"username": {
"title": "VeSync Username",
"type": "string",
"required": true,
"description": "Your VeSync account email address"
},
"password": {
"title": "VeSync Password",
"type": "string",
"required": true,
"description": "Your VeSync account password"
},
"updateInterval": {
"title": "Update Interval",
"type": "integer",
"default": 30,
"minimum": 10,
"maximum": 600,
"description": "How often to update device status (in seconds)"
},
"debug": {
"title": "Debug Mode",
"type": "boolean",
"default": false,
"description": "Enable debug logging"
},
"apiUrl": {
"title": "API URL",
"type": "string",
"description": "Custom VeSync API URL (advanced users only)"
},
"countryCode": {
"title": "Country Code",
"type": "string",
"default": "US",
"description": "Your country code (required for proper authentication). Select your actual country.",
"enum": [
"DZ", "AR", "AU", "AT", "BH", "BY", "BE", "BO", "BR", "BG", "CA", "CL", "CN", "CO", "HR", "CZ", "DK", "EC", "EG", "EE", "FI", "FR", "DE", "GR", "HK", "HU", "IS", "IN", "ID", "IE", "IL", "IT", "JP", "JO", "KZ", "KE", "KW", "LV", "LB", "LT", "MY", "MX", "MA", "NL", "NZ", "NG", "NO", "OM", "PY", "PE", "PH", "PL", "PT", "QA", "RO", "RU", "SA", "SG", "SK", "SI", "ZA", "KR", "ES", "SE", "CH", "TW", "TH", "TN", "TR", "UA", "AE", "GB", "US", "UY", "UZ", "VE", "VN"
],
"x-schema-form": {
"type": "select",
"titleMap": [
{ "value": "DZ", "name": "Algeria" },
{ "value": "AR", "name": "Argentina" },
{ "value": "AU", "name": "Australia" },
{ "value": "AT", "name": "Austria" },
{ "value": "BH", "name": "Bahrain" },
{ "value": "BY", "name": "Belarus" },
{ "value": "BE", "name": "Belgium" },
{ "value": "BO", "name": "Bolivia" },
{ "value": "BR", "name": "Brazil" },
{ "value": "BG", "name": "Bulgaria" },
{ "value": "CA", "name": "Canada" },
{ "value": "CL", "name": "Chile" },
{ "value": "CN", "name": "China" },
{ "value": "CO", "name": "Colombia" },
{ "value": "HR", "name": "Croatia" },
{ "value": "CZ", "name": "Czech Republic" },
{ "value": "DK", "name": "Denmark" },
{ "value": "EC", "name": "Ecuador" },
{ "value": "EG", "name": "Egypt" },
{ "value": "EE", "name": "Estonia" },
{ "value": "FI", "name": "Finland" },
{ "value": "FR", "name": "France" },
{ "value": "DE", "name": "Germany" },
{ "value": "GR", "name": "Greece" },
{ "value": "HK", "name": "Hong Kong" },
{ "value": "HU", "name": "Hungary" },
{ "value": "IS", "name": "Iceland" },
{ "value": "IN", "name": "India" },
{ "value": "ID", "name": "Indonesia" },
{ "value": "IE", "name": "Ireland" },
{ "value": "IL", "name": "Israel" },
{ "value": "IT", "name": "Italy" },
{ "value": "JP", "name": "Japan" },
{ "value": "JO", "name": "Jordan" },
{ "value": "KZ", "name": "Kazakhstan" },
{ "value": "KE", "name": "Kenya" },
{ "value": "KW", "name": "Kuwait" },
{ "value": "LV", "name": "Latvia" },
{ "value": "LB", "name": "Lebanon" },
{ "value": "LT", "name": "Lithuania" },
{ "value": "MY", "name": "Malaysia" },
{ "value": "MX", "name": "Mexico" },
{ "value": "MA", "name": "Morocco" },
{ "value": "NL", "name": "Netherlands" },
{ "value": "NZ", "name": "New Zealand" },
{ "value": "NG", "name": "Nigeria" },
{ "value": "NO", "name": "Norway" },
{ "value": "OM", "name": "Oman" },
{ "value": "PY", "name": "Paraguay" },
{ "value": "PE", "name": "Peru" },
{ "value": "PH", "name": "Philippines" },
{ "value": "PL", "name": "Poland" },
{ "value": "PT", "name": "Portugal" },
{ "value": "QA", "name": "Qatar" },
{ "value": "RO", "name": "Romania" },
{ "value": "RU", "name": "Russia" },
{ "value": "SA", "name": "Saudi Arabia" },
{ "value": "SG", "name": "Singapore" },
{ "value": "SK", "name": "Slovakia" },
{ "value": "SI", "name": "Slovenia" },
{ "value": "ZA", "name": "South Africa" },
{ "value": "KR", "name": "South Korea" },
{ "value": "ES", "name": "Spain" },
{ "value": "SE", "name": "Sweden" },
{ "value": "CH", "name": "Switzerland" },
{ "value": "TW", "name": "Taiwan" },
{ "value": "TH", "name": "Thailand" },
{ "value": "TN", "name": "Tunisia" },
{ "value": "TR", "name": "Turkey" },
{ "value": "UA", "name": "Ukraine" },
{ "value": "AE", "name": "United Arab Emirates" },
{ "value": "GB", "name": "United Kingdom" },
{ "value": "US", "name": "United States" },
{ "value": "UY", "name": "Uruguay" },
{ "value": "UZ", "name": "Uzbekistan" },
{ "value": "VE", "name": "Venezuela" },
{ "value": "VN", "name": "Vietnam" }
]
}
},
"exclude": {
"title": "Exclude Devices",
"type": "object",
"properties": {
"type": {
"title": "Exclude by Type",
"type": "array",
"items": {
"type": "string",
"enum": [
"fan",
"outlet",
"switch",
"bulb",
"humidifier",
"purifier"
]
},
"uniqueItems": true,
"description": "Exclude devices by type"
},
"model": {
"title": "Exclude by Model",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Exclude devices by model (e.g., 'Core300S', 'LV600S')"
},
"name": {
"title": "Exclude by Name",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Exclude devices by exact name match"
},
"namePattern": {
"title": "Exclude by Name Pattern",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Exclude devices by name pattern (regex)"
},
"id": {
"title": "Exclude by ID",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Exclude devices by ID (cid/uuid)"
}
}
},
"retry": {
"title": "Retry Configuration",
"type": "object",
"properties": {
"maxRetries": {
"title": "Maximum Retries",
"type": "integer",
"default": 3,
"minimum": 1,
"maximum": 10,
"description": "Maximum number of retry attempts for failed operations"
},
"initialDelay": {
"title": "Initial Delay",
"type": "integer",
"default": 2000,
"minimum": 500,
"maximum": 10000,
"description": "Initial delay before first retry (in milliseconds)"
},
"maxDelay": {
"title": "Maximum Delay",
"type": "integer",
"default": 10000,
"minimum": 1000,
"maximum": 60000,
"description": "Maximum delay between retries (in milliseconds)"
}
}
},
"quotaManagement": {
"title": "API Quota Management",
"type": "object",
"properties": {
"enabled": {
"title": "Enable Quota Management",
"type": "boolean",
"default": true,
"description": "Enable API quota management to prevent exceeding VeSync's daily limits"
},
"bufferPercentage": {
"title": "Buffer Percentage",
"type": "integer",
"default": 95,
"minimum": 50,
"maximum": 100,
"description": "Percentage of the calculated quota to use (lower values provide more safety margin)"
},
"priorityMethods": {
"title": "Priority Methods",
"type": "array",
"items": {
"type": "string"
},
"default": [
"turnOn",
"turnOff",
"setMode",
"setTargetHumidity",
"setBrightness",
"setColorTemperature",
"setColor",
"changeFanSpeed",
"setOscillation",
"setChildLock"
],
"uniqueItems": true,
"description": "API methods that will be allowed even when quota is exceeded"
}
}
}
}
}
}