Hi guys,
I was trying to add the Osram Zigbee 3.0 DALI Converter to my Homey. As it was only recognized as an Unknown Zigbee Device and I was hoping to get the Tunable White feature enabled as well I tried to create my own App / Device for my Homey Pro.
I was able to add the device to my Homey and add the onoff and dim capability but I’m looking for the “light_temperature” capability on the cluster but I’m unable to find the correct equivalent.
I’ve currently added the following code to my device.js :
const { ZigBeeDevice } = require("homey-zigbeedriver");
const { CLUSTER } = require("zigbee-clusters");
class OsramZigbeeDALIConverter extends ZigBeeDevice {
async onNodeInit({ zclNode }) {
this.registerCapability("onoff", CLUSTER.ON_OFF);
this.registerCapability("dim", CLUSTER.LEVEL_CONTROL);
}
}
module.exports = OsramZigbeeDALIConverter;
My driver.compose.json looks like this :
{
"name": {
"en": "Osram Zigbee DALI Converter"
},
"class": "light",
"capabilities": [
"light_temperature",
"dim",
"onoff"
],
"zigbee": {
"manufacturerName": "Osram Sylvania",
"productId": ["Zigbee 3.0 DALI CONV LI"],
"endpoints": {
"10": {
"clusters": [0,3,4,5,6,8,769,4096]
}
}
},
"images": {
"small": "{{driverAssetsPath}}/images/small.png",
"large": "{{driverAssetsPath}}/images/large.png",
"xlarge": "{{driverAssetsPath}}/images/xlarge.png"
},
"settings": [
]
}
And the interview of the device looks like this:
"ids": {
"modelId": "Zigbee 3.0 DALI CONV LI",
"manufacturerName": "Osram Sylvania"
},
"endpoints": {
"endpointDescriptors": [
{
"endpointId": 10,
"applicationProfileId": 260,
"applicationDeviceId": 257,
"applicationDeviceVersion": 0,
"_reserved1": 1,
"inputClusters": [
0,
3,
4,
5,
6,
8,
769,
4096
],
"outputClusters": [
25
]
},
{
"endpointId": 242,
"applicationProfileId": 41440,
"applicationDeviceId": 97,
"applicationDeviceVersion": 0,
"_reserved1": 1,
"inputClusters": [],
"outputClusters": [
33
]
}
],
"endpoints": {
"10": {
"clusters": {
"basic": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "zclVersion",
"value": 3,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 1,
"name": "appVersion",
"value": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 2,
"name": "stackVersion",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 3,
"name": "hwVersion",
"value": 5,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 4,
"name": "manufacturerName",
"value": "Osram Sylvania",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 5,
"name": "modelId",
"value": "Zigbee 3.0 DALI CONV LI",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 6,
"name": "dateCode",
"value": "",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 7,
"name": "powerSource",
"value": "unknown",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 8,
"name": "appProfileVersion",
"value": 255,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 9,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 10,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 11,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 16384,
"name": "swBuildId",
"value": "1.0.0.4-6.5.5.b",
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": [],
"commandsReceived": []
},
"identify": {
"attributes": [
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": [
0
],
"commandsReceived": [
0,
1,
64
]
},
"groups": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "nameSupport",
"value": {
"type": "Buffer",
"data": [
0
]
},
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": [
"addGroup.response",
"viewGroup.response",
"getGroupMembership.response",
"removeGroup.response"
],
"commandsReceived": [
"addGroup",
"viewGroup",
"getGroupMembership",
"removeGroup",
"removeAllGroups",
"addGroupIfIdentify"
]
},
"scenes": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 2,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 3,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 4,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": [
0,
1,
2,
3,
4,
6
],
"commandsReceived": [
0,
1,
2,
3,
4,
5,
6,
64
]
},
"onOff": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "onOff",
"value": true,
"reportingConfiguration": {
"direction": "reported",
"attributeDataType": 16,
"minInterval": 1,
"maxInterval": 65534,
"status": "SUCCESS"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": [],
"commandsReceived": [
"setOff",
"setOn",
"toggle",
"offWithEffect"
]
},
"levelControl": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "currentLevel",
"value": 207,
"reportingConfiguration": {
"direction": "reported",
"attributeDataType": 32,
"minInterval": 1,
"maxInterval": 65534,
"minChange": 1,
"status": "SUCCESS"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 15,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 17,
"name": "onLevel",
"value": 255,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": [],
"commandsReceived": [
"moveToLevel",
"move",
"step",
"stop",
"moveToLevelWithOnOff",
"moveWithOnOff",
"stepWithOnOff",
"stopWithOnOff"
]
},
"ballastConfiguration": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 0,
"name": "physicalMinLevel",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 1,
"name": "physicalMaxLevel",
"value": 254,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 2,
"name": "ballastStatus",
"value": {
"type": "Buffer",
"data": [
0
]
},
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 16,
"name": "minLevel",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 17,
"name": "maxLevel",
"value": 254,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 18,
"name": "powerOnLevel",
"value": 254,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 19,
"name": "powerOnFadeTime",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"writable",
"reportable"
],
"id": 51,
"name": "lampBurnHours",
"value": 0,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
},
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": [],
"commandsReceived": []
},
"touchlink": {
"attributes": [
{
"acl": [
"readable",
"reportable"
],
"id": 65533,
"name": "clusterRevision",
"value": 1,
"reportingConfiguration": {
"status": "NOT_FOUND",
"direction": "reported"
}
}
],
"commandsGenerated": [
"scanResponse",
3,
17,
"networkJoinRouterResponse",
"networkJoinEndDeviceResponse",
64,
"getGroups.response",
66
],
"commandsReceived": [
"getGroups",
66
]
}
},
"bindings": {
"ota": {
"attributes": [],
"commandsGenerated": [],
"commandsReceived": []
}
}
},
"242": {
"clusters": {},
"bindings": {}
}
}
}
Can anyone help how to implement the light_temperature? I’m totally new to the whole custom app development so a lot of this was scraped by looking at the documentation / forums.