I’m testing a direct-connected device with a custom capability, which is working from the device standpoint (I’m able to return a handle for the device components and update the custom attributes, etc.) But despite my best efforts, the device components associated with the custom capability won’t show up in the UI.
Most of the references I can find on similar issues are specific to DTH based devices, I’m not sure I’ve found any references to this scenario specifically, all the examples use platform provided capabilities. As best I can tell everything is there, but the device only shows attributes associated with the built-in types.
I’ll include some of the configs here, and just out of sheer bewilderment, I’ve tried both ios and android clients. Any suggestions would be much appreciated…
CAPABILITY
{
"id": "nightpeace33800.force",
"version": 1,
"status": "proposed",
"name": "Force",
"attributes": {
"fullForce": {
"schema": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 5000
},
"unit": {
"type": "string",
"enum": [
"grams"
],
"default": "grams"
}
},
"additionalProperties": false,
"required": [
"value"
]
},
"setter": "setFullForce",
"enumCommands": []
},
"force": {
"schema": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 5000
},
"unit": {
"type": "string",
"enum": [
"grams"
],
"default": "grams"
}
},
"additionalProperties": false,
"required": [
"value"
]
},
"enumCommands": []
}
},
"commands": {
"setFullForce": {
"name": "setFullForce",
"arguments": [
{
"name": "grams",
"optional": false,
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 5000
}
}
]
}
}
}
CAPABILITY_PRESENTATION
{
"dashboard": {
"states": [
{
"label": "{{force.value}} {{force.unit}}",
"alternatives": null
}
],
"actions": [],
"basicPlus": []
},
"detailView": [
{
"label": "Force",
"displayType": "slider",
"slider": {
"range": [
0,
5000
],
"step": null,
"unit": "force.unit",
"value": "force.value",
"valueType": "integer"
},
"state": null
},
{
"label": "Set As Full",
"displayType": "pushButton",
"pushButton": {
"command": "setFullForce",
"argument": "{{force.value}}",
"argumentType": "integer"
},
"state": null
}
],
"automation": {
"conditions": [
{
"label": "Force",
"displayType": "slider",
"slider": {
"range": [
0,
5000
],
"step": 1,
"unit": "force.unit",
"value": "force.value",
"valueType": "integer"
}
}
],
"actions": []
},
"id": "nightpeace33800.force",
"version": 1
}
DEVICE_PROFILE
{
"id": "20d5e3ff-9985-46a4-b78c-bb21b2c535c3",
"name": "Containers",
"components": [
{
"label": "main",
"id": "main",
"capabilities": [
{
"id": "healthCheck",
"version": 1
}
],
"categories": []
},
{
"label": "Container1",
"id": "Container1",
"capabilities": [
{
"id": "presenceSensor",
"version": 1
},
{
"id": "battery",
"version": 1
},
{
"id": "nightpeace33800.force",
"version": 1
}
],
"categories": []
},
{
"label": "Container2",
"id": "Container2",
"capabilities": [
{
"id": "presenceSensor",
"version": 1
},
{
"id": "battery",
"version": 1
},
{
"id": "nightpeace33800.force",
"version": 1
}
],
"categories": []
},
{
"label": "Container3",
"id": "Container3",
"capabilities": [
{
"id": "presenceSensor",
"version": 1
},
{
"id": "battery",
"version": 1
},
{
"id": "nightpeace33800.force",
"version": 1
}
],
"categories": []
},
{
"label": "Container4",
"id": "Container4",
"capabilities": [
{
"id": "presenceSensor",
"version": 1
},
{
"id": "battery",
"version": 1
},
{
"id": "nightpeace33800.force",
"version": 1
}
],
"categories": []
}
],
"metadata": {
"vid": "98a50b8a-9907-323f-bc4b-9a199b444f76",
"deviceType": "Others",
"mnmn": "0ATj",
"ocfDeviceType": "oic.d.others",
"deviceTypeId": "Others",
"ocfSpecVer": "core 1.1.0",
"mnid": "0ATj",
"mnId": "0ATj"
},
"status": "DEVELOPMENT",
"preferences": []
}
DEVICE_CONFIG
{
"mnmn": "0ATj",
"vid": "98a50b8a-9907-323f-bc4b-9a199b444f76",
"version": "0.0.1",
"type": "profile",
"dashboard": {
"states": [
{
"component": "main",
"capability": "healthCheck",
"version": 1,
"idx": 0,
"group": "main",
"values": [],
"composite": false
}
],
"actions": [
{
"component": "main",
"capability": "healthCheck",
"version": 1,
"idx": 0,
"group": "main"
}
]
},
"detailView": [
{
"component": "main",
"capability": "healthCheck",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container1",
"capability": "presenceSensor",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container1",
"capability": "battery",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container1",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container2",
"capability": "presenceSensor",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container2",
"capability": "battery",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container2",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container3",
"capability": "presenceSensor",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container3",
"capability": "battery",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container3",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container4",
"capability": "presenceSensor",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container4",
"capability": "battery",
"version": 1,
"values": [],
"patch": []
},
{
"component": "Container4",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": []
}
],
"automation": {
"conditions": [
{
"component": "main",
"capability": "healthCheck",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container1",
"capability": "presenceSensor",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container1",
"capability": "battery",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container1",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container2",
"capability": "presenceSensor",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container2",
"capability": "battery",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container2",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container3",
"capability": "presenceSensor",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container3",
"capability": "battery",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container3",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container4",
"capability": "presenceSensor",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container4",
"capability": "battery",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container4",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
}
],
"actions": [
{
"component": "main",
"capability": "healthCheck",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container1",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container2",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container3",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
},
{
"component": "Container4",
"capability": "nightpeace33800.force",
"version": 1,
"values": [],
"patch": [],
"exclusion": []
}
]
},
"presentationId": "98a50b8a-9907-323f-bc4b-9a199b444f76",
"manufacturerName": "0ATj"
}