Keypad for Hubitat HSM?

If you don't like the beeping from them it's relatively easy to pop open the case and clip the beeper off the board if you want to go completely silent. Or you can fill in the piezo with a little silicone calk to quiet it down. I did that with the beeper on my cheap electric safe and it made it a just very dull beep. Cutting the beeper off also eliminates the key beeps and the delay arming beeps though. You also then can't use it as door open beeper either. So, when I say silent, i mean COMPLETELY SILENT. :slight_smile:

You can adjust the beep volume up and down with the 2 and 5 keys respectively but it doesn't go nearly quiet enough IMHO.

And I am speaking specifically about the Iris gen2 keypads....I haven't figured a way to open my Gen 3 without totally destroying it yet. :wink:

I got my gen 3 keypads apart, but I mangled the case of one of them pretty good. :man_shrugging: Probably wasn't patient enough.

I worked out the resistor value I needed to solder in across the piezo to get it quieter but ended up not wanting to damage it too much, since it's in my Living Room. However, i was thinking while looking at it today, i might try using clear silicone on the slits on the side. It gets some of it's volume from echoing inside the case so that should deaden the sound somewhat.

Yeah, that would probably knock it down quite a bit. And easy enough to do.

I will test it out tonight or tomorrow and report back. :slight_smile:

More importantly, easy enough to remove if it totally wonks it up.

Okay, I scarificed mine to the HA gods.
Not hard to open if you know where the tabs are. I got mine open by prying near the bottom of battery comparment, with an oyster knife(excellent prying tool BTW)

Here's some intimate pictures

1 Like

So, I tried the caulking on the slits on the side of the Gen 3 so I wouldn't have to crack the case....yeah, after 3 layers of caulk so you couldn't even see the holes anymore it was just as loud. Didn't do anything to muffle the sound.
:cry:

I might have to bit the bullet and crack the sucker open. Soldering a 10 or 20 ohm resistor across the contacts fort the piezo would totally bring the volume down and keep the functionality of the volume buttons if it lowers it too much.

I just stumbled upon Develco.com

They seem to have standard Zigbee components and are based in Denmark (as I) . Prices seem a bit on the high side - but what the h... it’s security :smiley:

I will check with them tomorrow for HE support.

1 Like

I just stumbled across the Devalco myself. I have a Centralite 3400 from before (works nicely) but I might consider upgrading as the Devalco has RFID. I would be really interested if you find a HE driver that works for the Devalco.

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": []
}
}]
}
]
}

Hi

Any update on this ?

I have initially bought Samsung Smartthings to act as an alarm system, but find it slow and inconsistent in responsetime when arming and disarming the alarm. So I am very interesting in moving to Hubitat as it executes locally instead of in the cloud (as far as I understand :slight_smile:) .
And I am also very interested in this keypad from Develco that seems of high quality and that offers the possibility to use RFID tags to arm/disarm the alarm. How long delivery time was there on the keypad from Develco ?

1 Like

Not exactly the answer you're looking for I suspect, but I use a cheap 12v rfid keypad to arm/disarm.

Works a treat.

1 Like

Hi Hjorthen

Delivery on the keypad was one day. As they - I am based in DK - so that's pretty easy.

I agree - the device seems high quality and quite nice. The recognition of RFID works out of the box - I have a couple of Yale Doorman RFID tags and just moved the tag to the device which lead to a short 'beep' on the device ...

But still I have no device driver for Hubitat and I don't know how to create one which will suit the device :frowning:

Currently I am using a Zigbee button to arm/disarm the alarm but that's too easy for burlars to press and disable alarm.

I'd really like to crack the device driver but sadly don't know where to start (even though I have the Develco driver)

Regards Jan

Thx, djh_wolf - you're right ... Any suggestions?

/jan

You can't pair it alone. It's not zigbee etc. Need to connect the dry contacts to something like a nodemcu/konnected.

1 Like

I bought a Climax 3400-D zigbee keypad here in Norway on a good deal. Iris v3 driver works, it gives limited control but it arm/disarm HSM so I'm happy.

1 Like

Hi
Can you link the site of this device?
Thanks

I'm using the Ring Keypad Gen 2 for this.
Z-wave, works briliantly and seems to be rock steady.
Productlink (Dutch Amazon site) https://www.amazon.nl/ring-alarm-bedieningspaneel/dp/B08J66XTLJ

2 Likes

@roberto.grosso.rgr

1 Like