Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e08e51d
keypad initial commit
marcintyminski Feb 17, 2026
6cb682a
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski Feb 18, 2026
432f4b2
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski Feb 20, 2026
a6b309a
add exitDelay
marcintyminski Feb 20, 2026
2631b82
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski Feb 23, 2026
c131e65
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski Feb 25, 2026
d68ab14
Almost finished, no tests
marcintyminski Feb 25, 2026
0fa9c13
split codes snapshot into chunks if length exceeds 255
marcintyminski Feb 25, 2026
7799081
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski Feb 26, 2026
a9cccce
make rfid unaffected by pin length limitation
marcintyminski Feb 26, 2026
b0788f2
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski Mar 2, 2026
715d6c3
two profiles
marcintyminski Mar 2, 2026
61241a2
Merge branch 'add-support-to-frient-keypad' of https://github.com/mar…
marcintyminski Mar 2, 2026
8cd56c0
WIP
marcintyminski Mar 2, 2026
667d81f
securitySystem tests
marcintyminski Mar 3, 2026
f83970a
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski Mar 3, 2026
3d7e120
Merge branch 'add-support-to-frient-keypad' of https://github.com/mar…
marcintyminski Mar 3, 2026
5ca57a5
WIP
marcintyminski Mar 3, 2026
36e496c
accomodate in one profile
marcintyminski Apr 13, 2026
6bf438c
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski Apr 27, 2026
66391ec
finished driver with tests
marcintyminski Apr 27, 2026
59eb342
remove unnecessary value assignment
marcintyminski Apr 27, 2026
dd1175e
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski May 6, 2026
7074611
Add preference to enable/disable triggering panicAlarm with SOS button
marcintyminski May 6, 2026
f12466e
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski May 8, 2026
8ac266c
Merge branch 'SmartThingsCommunity:main' into add-support-to-frient-k…
marcintyminski May 11, 2026
e2d44b4
Moved the driver to zigbee-lock and address pr comments
marcintyminski May 11, 2026
71f64e6
improve test coverage
marcintyminski May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions drivers/SmartThings/zigbee-lock/fingerprints.yml
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,28 @@ zigbeeManufacturer:
manufacturer: Zhenchen
model: SG20
deviceProfileName: lock-battery
# frient
- id: "frient A/S/KEPZB-110"
deviceLabel: "frient Intelligent Keypad"
manufacturer: "frient A/S"
model: KEPZB-110
deviceProfileName: frient-keypad-security-system
- id: "frient A/S/KEPZB-112"
deviceLabel: "frient Alarm Keypad"
manufacturer: "frient A/S"
model: KEPZB-112
deviceProfileName: frient-keypad-security-system
- id: "frient A/S/KEPZB-120"
deviceLabel: "frient Intelligent Keypad"
manufacturer: "frient A/S"
model: KEPZB-120
deviceProfileName: frient-keypad-security-system
- id: "frient A/S/KEPZB-122"
deviceLabel: "frient Alarm Keypad"
manufacturer: "frient A/S"
model: KEPZB-122
deviceProfileName: frient-keypad-security-system

zigbeeGeneric:
- id: "genericLock"
deviceLabel: Zigbee Lock
Expand All @@ -220,3 +242,4 @@ zigbeeGeneric:
- 0x0101 #Door Lock
- 0x0001 #Power Configuration
deviceProfileName: lock-battery

Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: frient-keypad-security-system
components:
- id: main
capabilities:
- id: securitySystem
version: 1
- id: lockCodes
version: 1
- id: battery
version: 1
- id: tamperAlert
version: 1
- id: refresh
version: 1
- id: mode
version: 1
- id: panicAlarm
version: 1
categories:
- name: SecurityPanel
preferences:
Comment thread
KKlimczukS marked this conversation as resolved.
- name: mode
title: Control Security System or Mode
description: "Choose whether to use the keypad to control Security System Status (Arm/Disarm) or Mode Status (Lock/Unlock)."
required: false
preferenceType: enumeration
definition:
options:
0: "Security System Status"
1: "Mode Status"
default: 0
- name: pinMap
title: Add PIN code(s)
description: "Format: 1234:Alice,4321:Bob (other format will not be accepted). Only PIN(s) present in this setting are recognized. PINs that are shorter than current minimal length or longer than current maximal length will be displayed in the settings, but will not be added to the list."
required: false
preferenceType: string
definition:
stringType: text
default: ""
- name: rfidMap
title: Add RFID(s)
description: "Format: +ABCD1234:Alice,+EFGH5678:Bob (other format will not be accepted, the + prefix is required). Only RFID(s) present in this setting are recognized."
required: false
preferenceType: string
definition:
stringType: text
default: ""
- name: panicAlarmActive
title: Panic Alarm Active
description: "When enabled, the SOS button will trigger the alarm. When disabled, the SOS button will be ignored."
required: false
preferenceType: boolean
definition:
default: true
- name: showPinSnapshot
title: Show PIN Snapshot
description: "Display the current PIN/RFID list in the device history after adding them (sensitive)."
required: false
preferenceType: boolean
definition:
default: false
- name: minCodeLength
title: Minimal PIN Length
description: "Minimal allowed PIN length."
required: false
preferenceType: integer
definition:
minimum: 4
maximum: 32
default: 4
- name: maxCodeLength
title: Maximal PIN Length
description: "Maximal allowed PIN length."
required: false
preferenceType: integer
definition:
minimum: 4
maximum: 32
default: 32
- name: exitDelay
title: Exit Delay
description: "Turn on exit delay when arming away. Duration in seconds can be set in the 'Exit Delay Duration' setting."
required: false
preferenceType: boolean
definition:
default: false
- name: duration
title: Exit Delay Duration
description: "Exit delay duration in seconds."
required: false
preferenceType: integer
definition:
minimum: 0
maximum: 30
default: 5
- name: autoArmDisarmMode
title: Auto Arm/Disarm Mode
description: "Automatically arm/disarm (lock/unlock) without pressing a function button on a keypad. Options: 'Disabled', 'RFID', 'PIN'."
required: false
preferenceType: enumeration
definition:
options:
0: "Disabled"
1: "RFID"
2: "PIN"
default: 0
- name: autoDisarmModeSetting
title: Auto Disarm/Unlock Mode Setting
description: "When Auto Arm/Disarm Mode is set to 'PIN' or 'RFID', automatically disarm when a valid PIN/RFID is used."
required: false
preferenceType: boolean
definition:
default: false
- name: autoArmModeSetting
title: Auto Arm/Lock Mode Setting
description: "When Auto Arm/Disarm Mode is set to 'PIN' or 'RFID', automatically arm in one of the following modes: 'Disabled', 'Arm Stay', 'Arm Away'. Any option other than 'Disabled' allows to lock while controlling Mode Status. "
required: false
preferenceType: enumeration
definition:
options:
0: "Disabled"
1: "Arm Away"
3: "Arm Stay"
default: 0
- name: pinLengthSetting
title: PIN length to auto arm/disarm
description: "When Auto Arm/Disarm Mode is set to 'PIN', the length of PINs that will trigger auto arm/disarm (lock/unlock)."
required: false
preferenceType: integer
definition:
minimum: 4
maximum: 32
default: 4
metadata:
mnmn: SmartThings
vid: SmartThings-smartthings-frient_Keypad
14 changes: 14 additions & 0 deletions drivers/SmartThings/zigbee-lock/src/frient-keypad/can_handle.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-- Copyright 2026 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0

local function frient_keypad_can_handle(opts, driver, device, ...)
local FINGERPRINTS = require("frient-keypad.fingerprints")
for _, fingerprint in ipairs(FINGERPRINTS) do
if device:get_manufacturer() == fingerprint.mfr and device:get_model() == fingerprint.model then
return true, require("frient-keypad")
end
end
return false
end

return frient_keypad_can_handle
11 changes: 11 additions & 0 deletions drivers/SmartThings/zigbee-lock/src/frient-keypad/fingerprints.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
-- Copyright 2026 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0

local FRIENT_DEVICE_FINGERPRINTS = {
{ mfr = "frient A/S", model = "KEPZB-110"},
{ mfr = "frient A/S", model = "KEPZB-112"},
{ mfr = "frient A/S", model = "KEPZB-120"},
{ mfr = "frient A/S", model = "KEPZB-122"},
}

return FRIENT_DEVICE_FINGERPRINTS
Loading
Loading