UNPKG

homebridge-tsvesync

Version:

Homebridge plugin for VeSync devices including Levoit air purifiers, humidifiers, and Etekcity smart outlets

271 lines (270 loc) 10.1 kB
{ "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" } } } } } }