A capability is a descriptor plus what the endpoint declares (device/Capability.ts), and its discovery object is
generated from the two. The new API is bridge.addDevice({ endpointId, name, categories, ... }) and
device.add(PowerController, options): both throw a DeclarationError that names the endpoint, the interface and
the instance (device/validate.ts), and leave the bridge and the device as they were. AlexaInterface is the same
Capability with the 1.x methods on it; it, ActionMapping and the enums moved to src/compat/, Device to src/device/.
What a 1.x caller can observe:
- every endpoint ends with { type: "AlexaInterface", interface: "Alexa", version: "3" } (alexa-interface.html);
new Alex2MQTT(..., { alexaInterface: false }) leaves it out
- the fields of a capability object come in the order of Amazon's examples; their content is unchanged
- addCapability() with a name that is not an interface throws (1.5.2 announced it with the version "UNKNOWN")
- ActionMapping takes the payload as an object; a JSON string is parsed (1.5.2 sent the string), any other throws
- what Alexa would reject in a 1.x declaration is not refused: device.check() lists it and the bridge logs each
line once, as "warning: ..." through the log hook, when it answers a discovery
- a device whose JSON cannot be built is left out of the answer and reported as an error event
- PowerController and EndpointHealth are the descriptors and keep ON/OFF and OK/UNREACHABLE; PowerState is new
Tests: six zoo devices declared the 1.x way give the JSON that Alexa accepted from 1.5.2 on 2026-09-28, plus the
Alexa capability. npm test: 85 pass (was 57) in 10-12 s, also on Node 18.20.8 and 20.20.2.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1098 lines
No EOL
28 KiB
JSON
1098 lines
No EOL
28 KiB
JSON
[
|
|
{
|
|
"endpointId": "zoo-light",
|
|
"friendlyName": "Zoo Light",
|
|
"description": "Alex2Node zoo: PowerController, proactivelyReported: flips + ChangeReport every --changereport-min minutes",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"LIGHT"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-dimmer",
|
|
"friendlyName": "Zoo Dimmer",
|
|
"description": "Alex2Node zoo: PowerController + BrightnessController (SetBrightness / AdjustBrightness; 0 % = off)",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"LIGHT"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.BrightnessController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "brightness"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-thermostat",
|
|
"friendlyName": "Zoo Thermostat",
|
|
"description": "Alex2Node zoo: ThermostatController 3.2 (HEAT/COOL/AUTO/OFF, 50-90 F, AUTO reports lower+upper) + TemperatureSensor; the library",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"THERMOSTAT",
|
|
"TEMPERATURE_SENSOR"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.ThermostatController",
|
|
"version": "3.2",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "targetSetpoint"
|
|
},
|
|
{
|
|
"name": "lowerSetpoint"
|
|
},
|
|
{
|
|
"name": "upperSetpoint"
|
|
},
|
|
{
|
|
"name": "thermostatMode"
|
|
}
|
|
]
|
|
},
|
|
"configuration": {
|
|
"supportedModes": [
|
|
"HEAT",
|
|
"COOL",
|
|
"AUTO",
|
|
"OFF"
|
|
],
|
|
"supportsScheduling": false
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.TemperatureSensor",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "temperature"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-thermometer",
|
|
"friendlyName": "Zoo Thermometer",
|
|
"description": "Alex2Node zoo: TemperatureSensor alone (72.5 F; a ChangeReport adds one degree)",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"TEMPERATURE_SENSOR"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.TemperatureSensor",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "temperature"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-blinds",
|
|
"friendlyName": "Zoo Blinds",
|
|
"description": "Alex2Node zoo: RangeController 0-100 (asset Alexa.Setting.Opening) with open/close/raise/lower action mappings + open/closed sta",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"INTERIOR_BLIND"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.RangeController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "rangeValue"
|
|
}
|
|
]
|
|
},
|
|
"instance": "Blind.Lift",
|
|
"capabilityResources": {
|
|
"friendlyNames": [
|
|
{
|
|
"@type": "asset",
|
|
"value": {
|
|
"assetId": "Alexa.Setting.Opening"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"configuration": {
|
|
"supportedRange": {
|
|
"minimumValue": 0,
|
|
"maximumValue": 100,
|
|
"precision": 1
|
|
},
|
|
"unitOfMeasure": "Alexa.Unit.Percent"
|
|
},
|
|
"semantics": {
|
|
"actionMappings": [
|
|
{
|
|
"@type": "ActionsToDirective",
|
|
"actions": [
|
|
"Alexa.Actions.Close"
|
|
],
|
|
"directive": {
|
|
"name": "SetRangeValue",
|
|
"payload": {
|
|
"rangeValue": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"@type": "ActionsToDirective",
|
|
"actions": [
|
|
"Alexa.Actions.Open"
|
|
],
|
|
"directive": {
|
|
"name": "SetRangeValue",
|
|
"payload": {
|
|
"rangeValue": 100
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"@type": "ActionsToDirective",
|
|
"actions": [
|
|
"Alexa.Actions.Lower"
|
|
],
|
|
"directive": {
|
|
"name": "AdjustRangeValue",
|
|
"payload": {
|
|
"rangeValueDelta": -10,
|
|
"rangeValueDeltaDefault": false
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"@type": "ActionsToDirective",
|
|
"actions": [
|
|
"Alexa.Actions.Raise"
|
|
],
|
|
"directive": {
|
|
"name": "AdjustRangeValue",
|
|
"payload": {
|
|
"rangeValueDelta": 10,
|
|
"rangeValueDeltaDefault": false
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"stateMappings": [
|
|
{
|
|
"@type": "StatesToValue",
|
|
"states": [
|
|
"Alexa.States.Closed"
|
|
],
|
|
"value": 0
|
|
},
|
|
{
|
|
"@type": "StatesToRange",
|
|
"states": [
|
|
"Alexa.States.Open"
|
|
],
|
|
"range": {
|
|
"minimumValue": 1,
|
|
"maximumValue": 100
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-curtain",
|
|
"friendlyName": "Zoo Curtain",
|
|
"description": "Alex2Node zoo: the library's own BlindControl example: PowerController + ToggleController 'Shade' with ActionMapping Close->Turn",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"INTERIOR_BLIND"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.ToggleController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "toggleState"
|
|
}
|
|
]
|
|
},
|
|
"instance": "Zoo.Shade",
|
|
"capabilityResources": {
|
|
"friendlyNames": [
|
|
{
|
|
"@type": "text",
|
|
"value": {
|
|
"text": "Shade",
|
|
"locale": "en-US"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"semantics": {
|
|
"actionMappings": [
|
|
{
|
|
"@type": "ActionsToDirective",
|
|
"actions": [
|
|
"Alexa.Actions.Close"
|
|
],
|
|
"directive": {
|
|
"name": "TurnOn"
|
|
}
|
|
},
|
|
{
|
|
"@type": "ActionsToDirective",
|
|
"actions": [
|
|
"Alexa.Actions.Open"
|
|
],
|
|
"directive": {
|
|
"name": "TurnOff"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-fan",
|
|
"friendlyName": "Zoo Fan",
|
|
"description": "Alex2Node zoo: ModeController 'Speed' (Low/Medium/High, ordered -> AdjustMode) like ExampleModeController, + PowerController",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"FAN"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.ModeController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "mode"
|
|
}
|
|
]
|
|
},
|
|
"configuration": {
|
|
"ordered": true,
|
|
"supportedModes": [
|
|
{
|
|
"value": "Speed.Low",
|
|
"modeResources": {
|
|
"friendlyNames": [
|
|
{
|
|
"@type": "text",
|
|
"value": {
|
|
"text": "Low",
|
|
"locale": "en-US"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"value": "Speed.Medium",
|
|
"modeResources": {
|
|
"friendlyNames": [
|
|
{
|
|
"@type": "text",
|
|
"value": {
|
|
"text": "Medium",
|
|
"locale": "en-US"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"value": "Speed.High",
|
|
"modeResources": {
|
|
"friendlyNames": [
|
|
{
|
|
"@type": "text",
|
|
"value": {
|
|
"text": "High",
|
|
"locale": "en-US"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"instance": "Fan.Speed",
|
|
"capabilityResources": {
|
|
"friendlyNames": [
|
|
{
|
|
"@type": "text",
|
|
"value": {
|
|
"text": "Speed",
|
|
"locale": "en-US"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-switch",
|
|
"friendlyName": "Zoo Switch",
|
|
"description": "Alex2Node zoo: ToggleController alone: instance 'Oscillation' (Alexa's canonical toggle example)",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"SWITCH"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.ToggleController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "toggleState"
|
|
}
|
|
]
|
|
},
|
|
"instance": "Zoo.Oscillation",
|
|
"capabilityResources": {
|
|
"friendlyNames": [
|
|
{
|
|
"@type": "text",
|
|
"value": {
|
|
"text": "Oscillation",
|
|
"locale": "en-US"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-scene",
|
|
"friendlyName": "Zoo Scene",
|
|
"description": "Alex2Node zoo: SceneController, DEFERRED: DeferredResponse on alexaResponce, then ActivationStarted via sendSceneResponse(..., s",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"SCENE_TRIGGER"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.SceneController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"supportsDeactivation": true,
|
|
"proactivelyReported": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-fast-scene",
|
|
"friendlyName": "Zoo Fast Scene",
|
|
"description": "Alex2Node zoo: SceneController answering synchronously with ActivationStarted / DeactivationStarted",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"ACTIVITY_TRIGGER"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.SceneController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"supportsDeactivation": true,
|
|
"proactivelyReported": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-slow-lamp",
|
|
"friendlyName": "Zoo Slow Lamp",
|
|
"description": "Alex2Node zoo: PowerController answering DeferredResponse first, then the Response / StateReport on deferredResponse 4 s later (",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"LIGHT"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-broken-lamp",
|
|
"friendlyName": "Zoo Broken Lamp",
|
|
"description": "Alex2Node zoo: PowerController that answers every directive with ErrorResponse ENDPOINT_UNREACHABLE and ReportState with connect",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"LIGHT"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": false,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-health-lamp",
|
|
"friendlyName": "Zoo Health Lamp",
|
|
"description": "Alex2Node zoo: PowerController + an explicitly declared Alexa.EndpointHealth capability (the library emits version 3.3; insteonD",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"LIGHT"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.EndpointHealth",
|
|
"version": "3.3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "connectivity"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-health-lamp-31",
|
|
"friendlyName": "Zoo Health Lamp Two",
|
|
"description": "Alex2Node zoo: Zoo Health Lamp's twin with Alexa.EndpointHealth declared at the DOCUMENTED version 3.1 (patched; the library emi",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"LIGHT"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.EndpointHealth",
|
|
"version": "3.1",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "connectivity"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-color-lamp",
|
|
"friendlyName": "Zoo Color Lamp",
|
|
"description": "Alex2Node zoo: ColorController (SetColor {hue, saturation, brightness}) on a Power + Brightness light",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"LIGHT"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.BrightnessController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "brightness"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.ColorController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "color"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-warm-lamp",
|
|
"friendlyName": "Zoo Warm Lamp",
|
|
"description": "Alex2Node zoo: ColorTemperatureController (SetColorTemperature / IncreaseColorTemperature / DecreaseColorTemperature, 2200-7000 ",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"LIGHT"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.ColorTemperatureController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "colorTemperatureInKelvin"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-blower",
|
|
"friendlyName": "Zoo Blower",
|
|
"description": "Alex2Node zoo: PercentageController (SetPercentage / AdjustPercentage; 0 % = off) + PowerController - property list added here (",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"FAN"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.PercentageController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "percentage"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-heater",
|
|
"friendlyName": "Zoo Heater",
|
|
"description": "Alex2Node zoo: PowerLevelController (SetPowerLevel / AdjustPowerLevel 0-100) + PowerController - property list added here (the l",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"OTHER"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.PowerLevelController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerLevel"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-lock",
|
|
"friendlyName": "Zoo Lock",
|
|
"description": "Alex2Node zoo: LockController (Lock / Unlock -> lockState LOCKED / UNLOCKED) - property list added here (the library has none); ",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"SMARTLOCK"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.LockController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "lockState"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-door",
|
|
"friendlyName": "Zoo Door",
|
|
"description": "Alex2Node zoo: ContactSensor (detectionState NOT_DETECTED = closed; a ChangeReport flips it)",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"CONTACT_SENSOR"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.ContactSensor",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "detectionState"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-motion",
|
|
"friendlyName": "Zoo Motion",
|
|
"description": "Alex2Node zoo: MotionSensor (detectionState; a ChangeReport flips it) - property list added here (the library has none)",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"MOTION_SENSOR"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.MotionSensor",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "detectionState"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"endpointId": "zoo-tv",
|
|
"friendlyName": "Zoo TV",
|
|
"description": "Alex2Node zoo: ChannelController (ChangeChannel / SkipChannels -> channel {number, callSign, affiliateCallSign}) + PowerControll",
|
|
"manufacturerName": "Alex2Node zoo",
|
|
"displayCategories": [
|
|
"TV"
|
|
],
|
|
"additionalAttributes": {
|
|
"manufacturer": "Alex2Node zoo",
|
|
"model": "zoo-1.0",
|
|
"serialNumber": "Alex2Node",
|
|
"firmwareVersion": "1.0.0",
|
|
"softwareVersion": "1.0.0",
|
|
"customIdentifier": "Alex2Node"
|
|
},
|
|
"capabilities": [
|
|
{
|
|
"interface": "Alexa.PowerController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "powerState"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"interface": "Alexa.ChannelController",
|
|
"version": "3",
|
|
"type": "AlexaInterface",
|
|
"properties": {
|
|
"retrievable": true,
|
|
"proactivelyReported": true,
|
|
"supported": [
|
|
{
|
|
"name": "channel"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
] |