I have the device - but am struggeli find a driver. I received the enclosed from Develco - but when pasting it into the driver section of HE it fails. Do you have any experience in creating / modifying drivers?
{
"tplVersion": "1.1.0",
"name":"keypad",
"technology": "zigbee",
"sendIndirect": false,
"offlineThresholdTimeS": 960,
"identifiers": [
{
/* device type /
"eui": "0015BC0043",
"displayName": "Keypad"
},
{
"model": "KEPZB-110",
"manufacturer": "Develco Products*",
"displayName": "Keypad",
"metadata": {
"imgUrl": "product_icons/keypad",
"namingSchema": {
"separator": "/",
"useLocale": false,
"fields": [
{"name": "Room", "placeholder": "Hallway"},
{"name": "Location", "placeholder": "Wall"},
{"name": "Device Name", "placeholder": "Keypad"}
]
}
}
}
],
"logicalDevices": [
{
"key": "panel",
"displayName": "Key panel",
"actions": {
"configActions": [],
"deconfigActions": [],
"scheduleActions": [
{"zigbeeCmd": "0x2C:IAS_Zone:ReadAttributes:ZoneStatus<>"}
],
"addToGroupActions": [],
"removeFromGroupActions": [],
"storeSceneActions": [],
"recallSceneActions": [],
"removeSceneActions": []
},
"datapoints": [
{
"key": "tamper",
"displayName": "Tamper",
"type": "boolean",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_Zone:ZoneStatusChangeNotification<ZONE_STATUS:TAMPER>"},
{"zigbeeFlt": "0x2C:IAS_Zone:ReadAttributesResponse<ATTRIBUTE_ID=ZoneStatus,VALUE:TAMPER>"}
],
"write": []
}
}, {
"key": "battery",
"displayName": "Battery",
"type": "boolean",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_Zone:ZoneStatusChangeNotification<ZONE_STATUS:BATTERY>"},
{"zigbeeFlt": "0x2C:IAS_Zone:ReadAttributesResponse<ATTRIBUTE_ID=ZoneStatus,VALUE:BATTERY>"}
],
"write": []
}
}, {
"key": "supervision",
"displayName": "Supervision Reports",
"type": "boolean",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_Zone:ZoneStatusChangeNotification<ZONE_STATUS:SUPERVISION_REPORTS>"},
{"zigbeeFlt": "0x2C:IAS_Zone:ReadAttributesResponse<ATTRIBUTE_ID=ZoneStatus,VALUE:SUPERVISION_REPORTS>"}
],
"write": []
}
}
]
},
{
"key": "report",
"displayName": "Key panel lock/unlock event",
"actions": {
"configActions": [],
"deconfigActions": [],
"scheduleActions": [],
"addToGroupActions": [],
"removeFromGroupActions": [],
"storeSceneActions": [],
"recallSceneActions": [],
"removeSceneActions": []
},
"datapoints": [
{
"key": "event",
"displayName": "event",
"type": "string",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Arm<ARM_MODE>",
"conversion":[{"rule":"false"}]},
{"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Arm<ARM_MODE=0x00,ARM_DISARM_CODE>",
"conversion":[{"expression":"'Unlock:##INVAL##'"}]},
{"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Arm<ARM_MODE=0x03,ARM_DISARM_CODE>",
"conversion":[{"expression":"'Lock:##INVAL##'"}]}
],
"write": []
}
}
]
},
{
"key": "armevent",
"displayName": "Key panel arm disarm event",
"actions": {
"configActions": [],
"deconfigActions": [],
"scheduleActions": [],
"addToGroupActions": [],
"removeFromGroupActions": [],
"storeSceneActions": [],
"recallSceneActions": [],
"removeSceneActions": []
},
"datapoints": [
{
"key": "code",
"displayName": "Arm code",
"type": "string",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Arm<ARM_MODE>", "conversion":[{"rule":"false"}]}, /* uses ARM_MODE to ensure code is cleared even if it is not included (Arm without code) */
{"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Arm<ARM_DISARM_CODE>", "conversion":[{"expression":"'##INVAL##'"}]}
],
"write": []
}
},
{
"key": "armmode",
"displayName": "Arm Mode",
"type": "string",
"dataMapping": {
"read": [
{
"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Arm<ARM_MODE>",
"type": "integer",
"conversion":[
{"expression":"''", "rule":"false"}
]
},
{
"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Arm<ARM_MODE>",
"type": "integer",
"conversion":[
{"expression":"'Disarm'", "rule":"##INVAL## == 0"},
{"expression":"'ArmDay_HomeZonesOnly'", "rule":"##INVAL## == 1"},
{"expression":"'ArmNight_SleepZonesOnly'", "rule":"##INVAL## == 2"},
{"expression":"'ArmAllZones'", "rule":"##INVAL## == 3"}
]
}
],
"write": []
}
},
{
"key": "armresp",
"displayName": "IAS ACE arm response",
"type": "string",
"dataMapping": {
"read": [],
"write": [
{ "zigbeeCmd": "0x2C:IAS_ACE:IAS_ACE_ArmResponse<ARM_NOTIFICATION=0>", "rule":"str_is_equal('##INVAL##', 'AllZonesDisarmed') "},
{ "zigbeeCmd": "0x2C:IAS_ACE:IAS_ACE_ArmResponse<ARM_NOTIFICATION=1>", "rule":"str_is_equal('##INVAL##', 'OnlyDay_HomeZonesArmed') "},
{ "zigbeeCmd": "0x2C:IAS_ACE:IAS_ACE_ArmResponse<ARM_NOTIFICATION=2>", "rule":"str_is_equal('##INVAL##', 'OnlyNight_SleepZonesArmed') "},
{ "zigbeeCmd": "0x2C:IAS_ACE:IAS_ACE_ArmResponse<ARM_NOTIFICATION=3>", "rule":"str_is_equal('##INVAL##', 'AllZonesArmed') "},
{ "zigbeeCmd": "0x2C:IAS_ACE:IAS_ACE_ArmResponse<ARM_NOTIFICATION=4>", "rule":"str_is_equal('##INVAL##', 'InvalidArmOrDisarmCode') "},
{ "zigbeeCmd": "0x2C:IAS_ACE:IAS_ACE_ArmResponse<ARM_NOTIFICATION=5>", "rule":"str_is_equal('##INVAL##', 'NotReadyToArm') "},
{ "zigbeeCmd": "0x2C:IAS_ACE:IAS_ACE_ArmResponse<ARM_NOTIFICATION=6>", "rule":"str_is_equal('##INVAL##', 'AlreadyDisarmed') "}
]
}
},
{
"key": "panicevent",
"displayName": "Panic event",
"type": "none",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Panic<>"}
],
"write": []
}
}, {
"key": "fireevent",
"displayName": "Fire event",
"type": "none",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Fire<>"}
],
"write": []
}
}, {
"key": "proprietaryevent",
"displayName": "Proprietary event",
"type": "none",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_ACE:0xFF<>"}
],
"write": []
}
}, {
"key": "emergencyevent",
"displayName": "Emergency event",
"type": "none",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_ACE:IAS_ACE_Emergency<>"}
],
"write": []
}
}
]
},
{
"key": "battery",
"displayName": "Battery",
"actions": {
"configActions": [
{"zigbeeCmd":"0:Bind_req<SOURCE_ADDRESS=##DEVICE_EUI##,SOURCE_ENDPOINT=0x2C,CLUSTER_ID=0x0001,DESTINATION_ADDRESS_MODE=3,DESTINATION_ADDRESS=##GATEWAY_EUI##,DESTINATION_ENDPOINT=0x20>"},
{"zigbeeCmd":"0x2C:PowerConfiguration:ConfigureReporting:BatteryVoltage<DIRECTION=0,MIN_REPORTING_INTERVAL=0,MAX_REPORTING_INTERVAL=3600,REPORTABLE_CHANGE=1>"}
],
"deconfigActions": [
{"zigbeeCmd": "0:Unbind_req<SOURCE_ADDRESS=##DEVICE_EUI##,SOURCE_ENDPOINT=0x2C,CLUSTER_ID=0x0001,DESTINATION_ADDRESS_MODE=3,DESTINATION_ADDRESS=##GATEWAY_EUI##,DESTINATION_ENDPOINT=0x20>"}
],
"scheduleActions": [
{"zigbeeCmd": "0x2C:PowerConfiguration:ReadAttributes:BatteryVoltage<>"}
],
"addToGroupActions": [],
"removeFromGroupActions": [],
"storeSceneActions": [],
"recallSceneActions": [],
"removeSceneActions": []
},
"datapoints": [{
"key": "low",
"displayName": "Low Battery",
"type": "boolean",
"dataMapping": {
"read": [
{"zigbeeFlt": "0x2C:IAS_Zone:ZoneStatusChangeNotification<ZONE_STATUS:BATTERY>"},
{"zigbeeFlt": "0x2C:IAS_Zone:ReadAttributesResponse<ATTRIBUTE_ID=ZoneStatus,VALUE:BATTERY>"}
],
"write": []
}
}, {
"key": "voltage",
"displayName": "Battery Voltage",
"type": "double",
"unit": "V",
"dataMapping": {
"read": [
{
"zigbeeFlt": "0x2C:PowerConfiguration:ReadAttributesResponse<ATTRIBUTE_ID=BatteryVoltage,STATUS=Success,VALUE>",
"conversion": [{
"expression": "##INVAL##/10"
}]
},
{
"zigbeeFlt": "0x2C:PowerConfiguration:ReportAttributes<ATTRIBUTE_ID=BatteryVoltage,VALUE>",
"conversion": [{
"expression": "##INVAL##/10"
}]
}
],
"write": []
}
}]
},{
"key": "identify",
"displayName": "Identify",
"actions": {
"configActions": [],
"deconfigActions": [],
"scheduleActions": [],
"addToGroupActions": [],
"removeFromGroupActions": [],
"storeSceneActions": [],
"recallSceneActions": [],
"removeSceneActions": []
},
"datapoints": [{
"key": "identify",
"displayName": "Identify",
"type": "integer",
"unit": "s",
"dataMapping": {
"read": [],
"write": [
{"zigbeeCmd": "0x2C:Identify:Identify<IDENTIFY_TIME>"}
]
}
}]
}, {
"key": "diagnostic",
"displayName": "Diagnostic",
"actions" :{
"configActions":[
{"zigbeeCmd":"0:Bind_req<SOURCE_ADDRESS=##DEVICE_EUI##,SOURCE_ENDPOINT=1,CLUSTER_ID=0x0005,DESTINATION_ADDRESS_MODE=3,DESTINATION_ADDRESS=##GATEWAY_EUI##,DESTINATION_ENDPOINT=0x01>"},
{"zigbeeCmd":"1:NetworkDiagnosticsCluster:ConfigureReporting:NetworkLinkRssi<DIRECTION=0,MIN_REPORTING_INTERVAL=600,MAX_REPORTING_INTERVAL=3600,REPORTABLE_CHANGE=10>"},
{"zigbeeCmd":"1:NetworkDiagnosticsCluster:ConfigureReporting:NetworkLinkAddress<DIRECTION=0,MIN_REPORTING_INTERVAL=600,MAX_REPORTING_INTERVAL=3600,REPORTABLE_CHANGE=0>"},
{"zigbeeCmd":"1:NetworkDiagnosticsCluster:ConfigureReporting:NetworkLinkFer<DIRECTION=0,MIN_REPORTING_INTERVAL=600,MAX_REPORTING_INTERVAL=3600,REPORTABLE_CHANGE=10>"},
{"zigbeeCmd":"1:NetworkDiagnosticsCluster:ConfigureReporting:NetworkLinkPer<DIRECTION=0,MIN_REPORTING_INTERVAL=0xFFFF,MAX_REPORTING_INTERVAL=0xFFFF,REPORTABLE_CHANGE=0>"}
],
"deconfigActions":[
{"zigbeeCmd":"0:Unbind_req<SOURCE_ADDRESS=##DEVICE_EUI##,SOURCE_ENDPOINT=1,CLUSTER_ID=0x0005,DESTINATION_ADDRESS_MODE=3,DESTINATION_ADDRESS=##GATEWAY_EUI##,DESTINATION_ENDPOINT=0x01>"}
],
"scheduleActions":[
{"zigbeeCmd": "1:NetworkDiagnosticsCluster:ReadAttributes:NetworkLinkRssi<>"},
{"zigbeeCmd": "1:NetworkDiagnosticsCluster:ReadAttributes:NetworkLinkAddress<>"},
{"zigbeeCmd": "1:NetworkDiagnosticsCluster:ReadAttributes:NetworkLinkFer<>"}
]
},
"datapoints": [
{
"key": "networklinkrssi",
"displayName": "NetworkLinkRssi",
"type": "integer",
"unit": "dBm",
"dataMapping": {
"read": [
{
"zigbeeFlt": "1:NetworkDiagnosticsCluster:ReadAttributesResponse<ATTRIBUTE_ID=NetworkLinkRssi,STATUS=Success,VALUE>",
"conversion": [
{ "expression": "((##INVAL## & 0xFF) - 0xFF) / 2", "rule": "##INVAL## != 0x00 && ##INVAL## != 0xFF" }
]
},{
"zigbeeFlt": "1:NetworkDiagnosticsCluster:ReportAttributes<ATTRIBUTE_ID=NetworkLinkRssi,VALUE>",
"conversion": [
{ "expression": "((##INVAL## & 0xFF) - 0xFF) / 2", "rule": "##INVAL## != 0x00 && ##INVAL## != 0xFF" }
]
}
],
"write": []
}
},{
"key": "networklinkstrength",
"displayName": "NetworkLinkStrength",
"type": "integer",
"unit": "%",
"dataMapping": {
"read": [{
"zigbeeFlt": "1:NetworkDiagnosticsCluster:ReadAttributesResponse<ATTRIBUTE_ID=NetworkLinkFer,STATUS=Success,VALUE>",
"conversion": [
{"expression":"round(100-(##INVAL##*2))" ,"rule":"##INVAL## <= 5 && $$dp.diagnostic.networklinkrssi:-128$$ > -80 "},
{"expression":"round(90-((##INVAL##-5)*15/10))" ,"rule":"##INVAL## <= 15 "},
{"expression":"round(75-((##INVAL##-15)*25/5))" ,"rule":"##INVAL## <= 20 "},
{"expression":"round(50-((##INVAL##-20)*35/10))","rule":"##INVAL## <= 30 "},
{"expression":"round(15-((##INVAL##-30)*15/20))","rule":"##INVAL## <= 50 "},
{"expression":"0" ,"rule":"##INVAL## > 50 && ##INVAL## != 0xFF"}
]
},{
"zigbeeFlt": "1:NetworkDiagnosticsCluster:ReportAttributes<ATTRIBUTE_ID=NetworkLinkFer,VALUE>",
"conversion": [
{"expression":"round(100-(##INVAL##*2))" ,"rule":"##INVAL## <= 5 && $$dp.diagnostic.networklinkrssi:-128$$ > -80 "},
{"expression":"round(90-((##INVAL##-5)*15/10))" ,"rule":"##INVAL## <= 15 "},
{"expression":"round(75-((##INVAL##-15)*25/5))" ,"rule":"##INVAL## <= 20 "},
{"expression":"round(50-((##INVAL##-20)*35/10))","rule":"##INVAL## <= 30 "},
{"expression":"round(15-((##INVAL##-30)*15/20))","rule":"##INVAL## <= 50 "},
{"expression":"0" ,"rule":"##INVAL## > 50 && ##INVAL## != 0xFF"}
]
}
],
"write": []
}
},{
"key": "networklinkstate",
"displayName": "NetworkLinkState",
"type": "string",
"unit": " [ Excellent, Good, Fair, Poor, Bad ]",
"dataMapping": {
"read": [
{
"zigbeeFlt": "1:NetworkDiagnosticsCluster:ReadAttributesResponse<ATTRIBUTE_ID=NetworkLinkFer,STATUS=Success,VALUE>",
"type":"integer",
"conversion": [
{"expression":"Excellent", "rule":"##INVAL## < 5 && $$dp.diagnostic.networklinkrssi:-128$$ > -80 "},
{"expression":"Good" , "rule":"##INVAL## < 15 "},
{"expression":"Fair" , "rule":"##INVAL## < 20 "},
{"expression":"Poor" , "rule":"##INVAL## < 50 "},
{"expression":"Bad" , "rule":"##INVAL## >= 50 && ##INVAL## != 0xFF"}
]
},{
"zigbeeFlt": "1:NetworkDiagnosticsCluster:ReportAttributes<ATTRIBUTE_ID=NetworkLinkFer,VALUE>",
"type":"integer",
"conversion": [
{"expression":"Excellent", "rule":"##INVAL## < 5 && $$dp.diagnostic.networklinkrssi:-128$$ > -80 "},
{"expression":"Good" , "rule":"##INVAL## < 15 "},
{"expression":"Fair" , "rule":"##INVAL## < 20 "},
{"expression":"Poor" , "rule":"##INVAL## < 50 "},
{"expression":"Bad" , "rule":"##INVAL## >= 50 && ##INVAL## != 0xFF"}
]
}
],
"write": []
}
},{
"key": "networklinkaddress",
"displayName": "NetworkLinkAddress",
"type": "string",
"unit": "",
"dataMapping": {
"read": [
{
"zigbeeFlt": "1:NetworkDiagnosticsCluster:ReadAttributesResponse<ATTRIBUTE_ID=NetworkLinkAddress,STATUS=Success,VALUE>","type": "raw_msb",
"conversion": [
{ "expression": "'##INVAL##'", "rule":"0x##INVAL## != 0xFFFFFFFFFFFFFFFF"}
]
},
{
"zigbeeFlt": "1:NetworkDiagnosticsCluster:ReportAttributes<ATTRIBUTE_ID=NetworkLinkAddress,VALUE>","type": "raw_msb",
"conversion": [
{ "expression": "'##INVAL##'", "rule":"0x##INVAL## != 0xFFFFFFFFFFFFFFFF"}
]
}
],
"write": []
}
}]
}
]
}