UNPKG

homebridge-nest-accfactory

Version:

Homebridge support for Nest/Google devices including HomeKit Secure Video (HKSV) support for doorbells and cameras

416 lines 11.7 kB
{ "pluginAlias": "NestAccfactory", "pluginType": "platform", "singular": true, "schema": { "type": "object", "properties": { "name": { "title": "Name", "type": "string", "default": "NestAccfactory", "condition": "1=2" }, "accounts": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "placeholder": "Account description for configuration" }, "type": { "type": "string", "default": "google", "enum": ["google", "nest"] }, "access_token": { "type": "string", "placeholder": "See https://github.com/n0rt0nthec4t/homebridge-nest-accfactory/#nest-account" }, "issueToken": { "type": "string", "placeholder": "See https://github.com/n0rt0nthec4t/homebridge-nest-accfactory/#google-account" }, "cookie": { "type": "string", "placeholder": "See https://github.com/n0rt0nthec4t/homebridge-nest-accfactory/#google-account" }, "fieldTest": { "type": "boolean", "default": false }, "exclude": { "type": "boolean", "default": false } }, "required": ["name", "type"], "allOf": [ { "if": { "properties": { "type": { "const": "google" } } }, "then": { "required": ["issueToken", "cookie"] } }, { "if": { "properties": { "type": { "const": "nest" } } }, "then": { "required": ["access_token"] } } ] } }, "options": { "type": "object", "properties": { "debug": { "type": "boolean", "default": false }, "eveHistory": { "type": "boolean", "default": true }, "exclude": { "type": "boolean" }, "ffmpegDebug": { "type": "boolean", "default": false }, "ffmpegHWAccel": { "type": "boolean", "default": false }, "ffmpegPath": { "type": "string", "default": "/usr/local/bin/ffmpeg" }, "ffmpegTranscode": { "type": "boolean", "default": false }, "logMotionEvents": { "type": "boolean", "default": true }, "maxStreams": { "type": "number", "default": 2, "minimum": 1, "maximum": 4 }, "supportDump": { "type": "boolean", "default": false }, "useNestAPI": { "type": "boolean" }, "useGoogleAPI": { "type": "boolean" } } }, "devices": { "type": "array", "items": { "title": "Device", "type": "object", "properties": { "serialNumber": { "type": "string", "placeholder": "Device serial number", "required": true }, "name": { "title": "Name", "type": "string", "placeholder": "Device description for configuration" }, "chimeSwitch": { "type": "boolean" }, "doorbellCooldown": { "type": "string" }, "eveHistory": { "type": "boolean" }, "exclude": { "type": "boolean" }, "external": { "type": "string" }, "fanDuration": { "type": "string" }, "ffmpegDebug": { "type": "boolean" }, "ffmpegHWAccel": { "type": "boolean" }, "ffmpegTranscode": { "type": "boolean" }, "hotwaterBoostTime": { "type": "string" }, "hotwaterMaxTemp": { "type": "string" }, "hotwaterMinTemp": { "type": "string" }, "humiditySensor": { "type": "boolean" }, "localAccess": { "type": "boolean" }, "logMotionEvents": { "type": "boolean" }, "motionCooldown": { "type": "string" } } } }, "homes": { "title": "Per Home configuration options", "type": "array", "items": { "title": "Home", "type": "object", "properties": { "name": { "title": "Home name", "type": "string", "required": true }, "elevation": { "type": "number", "minimum": 0, "maximum": 8848 }, "exclude": { "type": "boolean" }, "weather": { "type": "boolean" } } } } } }, "layout": [ { "type": "fieldset", "title": "Accounts", "description": "One or more accounts to connect to Google/Nest services. See plugin documentation for details on obtaining required credentials for each account type.", "expandable": true, "expanded": true, "items": [ { "type": "array", "key": "accounts", "title": " ", "buttonText": "Add Account", "orderable": false, "arrayItemTitle": "{{value.name || 'Account'}}", "items": [ { "key": "accounts[].name", "title": "Name" }, { "key": "accounts[].type", "title": "Type", "enumNames": ["Google", "Nest"], "oneOf": [ { "enum": ["google"] }, { "enum": ["nest"] } ] }, { "key": "accounts[].issueToken", "title": "Issue Token", "condition": { "functionBody": "return model.accounts[arrayIndices] && model.accounts[arrayIndices].type === 'google';" } }, { "key": "accounts[].cookie", "title": "Cookie", "condition": { "functionBody": "return model.accounts[arrayIndices] && model.accounts[arrayIndices].type === 'google';" } }, { "key": "accounts[].access_token", "title": "Access Token", "condition": { "functionBody": "return model.accounts[arrayIndices] && model.accounts[arrayIndices].type === 'nest';" } }, { "key": "accounts[].fieldTest", "title": "Use Field Test API" }, { "key": "accounts[].exclude", "title": "Exclude Account" } ] } ] }, { "type": "fieldset", "title": "Home Settings", "description": "Add and configure settings for specific Nest or Google homes.", "expandable": true, "expanded": false, "items": [ { "type": "array", "title": "Homes", "key": "homes", "description": "Each entry applies to a home. The name must match the home name in the Nest or Google Home apps.", "buttonText": "Add Home", "orderable": false, "items": [ { "key": "homes[].name", "title": "Home Name", "placeholder": "Must match the home name in the Nest or Google Home apps" }, { "key": "homes[].weather", "title": "Enable Weather Station" }, { "key": "homes[].elevation", "title": "Elevation", "condition": { "functionBody": "return (model && model.homes && model.homes[arrayIndices] && model.homes[arrayIndices].weather === true);" } }, { "key": "homes[].exclude", "title": "Exclude All Devices from Home" } ] } ] }, { "type": "fieldset", "title": "Device Settings", "description": "Configure global device settings or override them for specific devices.", "expandable": true, "expanded": false, "items": [ { "key": "options.exclude", "title": "Exclude All Devices" }, { "key": "options.eveHistory", "title": "Enable Eve History for All Devices" }, { "type": "array", "title": "Device Overrides", "key": "devices", "description": "Override settings for specific devices using their serial number. Additional advanced options are available via manual configuration.", "buttonText": "Add Device Override", "orderable": false, "arrayItemTitle": "{{value.name || value.serialNumber || 'Device'}}", "items": [ { "key": "devices[].serialNumber", "title": "Serial Number" }, { "key": "devices[].name", "title": "Name" }, { "key": "devices[].exclude", "title": "Exclude Device" }, { "key": "devices[].eveHistory", "title": "Enable Eve History" } ] } ] }, { "type": "fieldset", "title": "Options", "expandable": true, "expanded": false, "items": [ { "key": "options.ffmpegPath", "title": "FFmpeg Binary Path" }, { "key": "options.ffmpegHWAccel", "title": "Enable Video Hardware Acceleration" }, { "key": "options.ffmpegTranscode", "title": "Enable Video Transcoding" }, { "key": "options.maxStreams", "title": "Simultaneous Live Viewers per Camera" }, { "key": "options.debug", "title": "Enable Verbose Logging" }, { "key": "options.logMotionEvents", "title": "Enable Motion Event Logging" }, { "key": "options.ffmpegDebug", "title": "Enable FFmpeg Debug Logging" }, { "key": "options.supportDump", "title": "Enable Support Dump Logging", "description": "Enable detailed device data logging for troubleshooting. Only enable when requested as it may produce large logs." } ] } ] }