@@ -68,6 +68,9 @@ local function device_init(self, device)
6868 LockAlarm .supportedAlarmValues (SUPPORTED_ALARM_VALUES , { visibility = { displayed = false } })
6969 )
7070 end
71+ device :emit_event (capabilities .lock .supportedUnlockDirections ({" fromInside" , " fromOutside" }, {visibility = {displayed = false }}))
72+ device :emit_event (capabilities .battery .type (" AA" ))
73+ device :emit_event (capabilities .battery .quantity (8 ))
7174end
7275
7376local function device_added (self , device )
@@ -107,23 +110,33 @@ local function event_lock_handler(driver, device, evt_name, evt_value)
107110 end
108111end
109112
110- local function event_unlock_handler (driver , device , evt_name , evt_value )
111- local id , label
112- if evt_name == METHOD .RF447 then
113- evt_name = nil
114- id = nil
115- label = nil
116- elseif evt_name == METHOD .BLUETOOTH and evt_value == 2 then
117- evt_name = nil
118- id = nil
119- label = nil
120- elseif evt_value == 0x80020000 then -- one-time password
121- id = " OTP_STANDALONE"
122- label = nil
123- else
124- id , label = credential_utils .find_userLabel (driver , device , evt_value )
125- end
126- device :emit_event (Lock .lock .unlocked ({ data = { method = evt_name , codeId = id , codeName = label } }))
113+ local function event_unlock_indoor_handler (driver , device , evt_name , evt_value )
114+ device :emit_event (Lock .lock .unlocked ({ data = { method = evt_name , codeId = nil , codeName = nil , unlockDirection = " fromInside" } }))
115+ device :emit_event (remoteControlStatus .remoteControlEnabled (' false' , { visibility = { displayed = false } }))
116+ device :emit_event (LockAlarm .alarm .clear ({ visibility = { displayed = false }}))
117+ end
118+
119+ local function event_unlock_outdoor_handler (driver , device , evt_name , evt_value )
120+ local id , label = credential_utils .find_userLabel (driver , device , evt_value )
121+ device :emit_event (Lock .lock .unlocked ({ data = { method = evt_name , codeId = id , codeName = label , unlockDirection = " fromOutside" } }))
122+ device :emit_event (remoteControlStatus .remoteControlEnabled (' false' , { visibility = { displayed = false } }))
123+ device :emit_event (LockAlarm .alarm .clear ({ visibility = { displayed = false }}))
124+ end
125+
126+ local function event_unlock_rf447_handler (driver , device , evt_name , evt_value )
127+ device :emit_event (Lock .lock .unlocked ({ data = { method = evt_name , codeId = nil , codeName = nil , unlockDirection = nil } }))
128+ device :emit_event (remoteControlStatus .remoteControlEnabled (' false' , { visibility = { displayed = false } }))
129+ device :emit_event (LockAlarm .alarm .clear ({ visibility = { displayed = false }}))
130+ end
131+
132+ local function event_unlock_remote_handler (driver , device , evt_name , evt_value )
133+ device :emit_event (Lock .lock .unlocked ({ data = { method = evt_name , codeId = nil , codeName = nil , unlockDirection = nil } }))
134+ device :emit_event (remoteControlStatus .remoteControlEnabled (' false' , { visibility = { displayed = false } }))
135+ device :emit_event (LockAlarm .alarm .clear ({ visibility = { displayed = false }}))
136+ end
137+
138+ local function event_unlock_otp_handler (driver , device , evt_name , evt_value )
139+ device :emit_event (Lock .lock .unlocked ({ data = { method = evt_name , codeId = " OTP_STANDALONE" , codeName = nil , unlockDirection = " fromOutside" } }))
127140 device :emit_event (remoteControlStatus .remoteControlEnabled (' false' , { visibility = { displayed = false } }))
128141 device :emit_event (LockAlarm .alarm .clear ({ visibility = { displayed = false }}))
129142end
@@ -163,16 +176,16 @@ end
163176
164177local resource_id = {
165178 [" 13.31.85" ] = { event_name = METHOD .LOCKED , event_handler = event_lock_handler },
179+ [" 13.48.85" ] = { event_name = METHOD .MANUAL , event_handler = event_unlock_indoor_handler },
180+ [" 13.51.85" ] = { event_name = METHOD .MANUAL , event_handler = event_unlock_indoor_handler },
181+ [" 13.42.85" ] = { event_name = METHOD .FINGERPRINT , event_handler = event_unlock_outdoor_handler },
182+ [" 13.43.85" ] = { event_name = METHOD .KEYPAD , event_handler = event_unlock_outdoor_handler },
183+ [" 13.44.85" ] = { event_name = METHOD .RFID , event_handler = event_unlock_outdoor_handler },
184+ [" 13.151.85" ] = { event_name = METHOD .RF447 , event_handler = event_unlock_rf447_handler },
185+ [" 13.45.85" ] = { event_name = METHOD .BLUETOOTH , event_handler = event_unlock_remote_handler },
186+ [" 13.90.85" ] = { event_name = METHOD .COMMAND , event_handler = event_unlock_remote_handler },
187+ [" 13.46.85" ] = { event_name = METHOD .KEYPAD , event_handler = event_unlock_otp_handler },
166188 [" 13.17.85" ] = { event_name = METHOD .NO_USE , event_handler = event_door_handler },
167- [" 13.48.85" ] = { event_name = METHOD .MANUAL , event_handler = event_unlock_handler },
168- [" 13.51.85" ] = { event_name = METHOD .MANUAL , event_handler = event_unlock_handler },
169- [" 13.42.85" ] = { event_name = METHOD .FINGERPRINT , event_handler = event_unlock_handler },
170- [" 13.43.85" ] = { event_name = METHOD .KEYPAD , event_handler = event_unlock_handler },
171- [" 13.44.85" ] = { event_name = METHOD .RFID , event_handler = event_unlock_handler },
172- [" 13.151.85" ] = { event_name = METHOD .RF447 , event_handler = event_unlock_handler },
173- [" 13.45.85" ] = { event_name = METHOD .BLUETOOTH , event_handler = event_unlock_handler },
174- [" 13.90.85" ] = { event_name = METHOD .COMMAND , event_handler = event_unlock_handler },
175- [" 13.46.85" ] = { event_name = METHOD .KEYPAD , event_handler = event_unlock_handler },
176189 [" 13.56.85" ] = { event_name = METHOD .NO_USE , event_handler = event_battery_handler },
177190 [" 13.32.85" ] = { event_name = METHOD .NO_USE , event_handler = event_abnormal_status_handler },
178191 [" 13.33.85" ] = { event_name = METHOD .NO_USE , event_handler = event_anti_lock_handler },
0 commit comments