Bluetooth Smart Lock

Last Updated on : 2023-06-29 03:03:37download

Functional description

Class name Description
TuyaSmartBLELockDevice Bluetooth lock operation class, inherited from TuyaSmartDevice
TuyaSmartBLELockDeviceDelegate Bluetooth lock protocol delegate, extended from TuyaSmartDeviceDelegate

Terms

Term Description
Locks that support duress alarms The duress alarm feature allows users to enroll a password or fingerprint as a duress code. If they are coerced by hostile persons, unlocking with the duress code can trigger alarms to be sent to a list of contacts.
Lock members Lock members are classified into home members and non-home members.
  • Home member: the same as that defined in the Smart Life App SDK. The Smart Lock SDK can be used to associate a lock password ID with a home member account. For more information, see Home Management.
  • Non-home members: an individual member of a smart lock, only associated with the device. This member can be created and assigned. The Smart Lock SDK can be used to associate a lock password ID with this member.
lockUserId A lockUserId is a firmware member ID that the cloud assigns to a lock when you create a lock member. Each lockUserId indicates the member ID that is recorded in the firmware.
userId A userId is the ID that the cloud assigns to a lock member when you create the member. Each userId is a unique ID of each user and is recorded in a database.
dpCode An identifier of a data point (DP) for a device. Each data point is assigned a name and a dpCode. For more information, see the List of Bluetooth lock DPs.

Lock members

This section describes the operations regarding non-home members.

Query a list of lock members

API description

- (void)getMemberListWithSuccess:(nullable void(^)(NSArray<TuyaSmartBLELockMemberModel *> *members))success
                         failure:(TYFailureError)failure;

Parameters

Parameter Description
success The success callback. A list of members is returned.
failure The failure callback.

Data model of TuyaSmartBLELockMemberModel

Field Type Description
userId NSString The member ID.
userContact NSString The contact method.
avatarUrl NSString The URL of the avatar.
nickName NSString The name of the member.
userTimeSet NSString The validity data of the member.
phase NSUInteger The freezing status. Valid values:
  • 0: frozen
  • 1: unfrozen
status NSUInteger The status of the user.
lockUserId int The user ID.
userType NSUInteger The type of user. Valid values:
  • 10: administrator
  • 20: common member
  • 30: anonymous member
supportOpenType NSArray The supported unlocking methods.
shareUser NSString The user account that receives the sharing invitation.
productAttribute NSUInteger The attribute of the lock.

Example

ObjC:

[self.lock getMemberListWithSuccess:^(NSArray<TuyaSmartBLELockMemberModel *> * _Nonnull list) {
    NSLog(@"Member list %@", list);
} failure:^(NSError *error) {
    NSLog(@"Failed to get a list of members, error: %@", error);
}];

Swift:

self.lock?.getMemberList(success: { (list) in
    print("Member list \(list)")
}, failure: { (error) in
    if let e = error {
        print("Failed to get a list of members, error: \(e)")
    }
})

Create a lock member

Creates a non-home member to be associated with an unlocking method in later operations.

Bluetooth Smart Lock

API description

- (void)addMemberWithUserName:(NSString *)userName
                  allowUnlock:(BOOL)allowUnlock
                     timeType:(TYMemberTimeType)timeType
                effectiveDate:(NSDate *)effectiveDate
                  invalidDate:(NSDate *)invalidDate
                      success:(nullable TYSuccessBOOL)success
                      failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
userName The name of the member.
allowUnlock Specifies whether the member can unlock over Bluetooth.
timeType The validity period of the member. Valid values:
  • TYMemberTimeTypePermanent: valid permanently
  • TYMemberTimeTypePhase: valid in certain periods
effectiveDate The time when the unlocking access starts.
invalidDate The time when the unlocking access ends.
success The success callback.
failure The failure callback.

Example

ObjC:

[self.lock addMemberWithUserName:#<Member name># allowUnlock:YES timeType:TYMemberTimeTypePhase effectiveDate:[NSDate date] invalidDate:[[NSDate date] dateByAddingTimeInterval:60 * 60 * 8] success:^(BOOL result) {
    NSLog(@"Member created successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to create the member, error: %@", error);
}];

Swift:

self.lock?.addMember(withUserName: "name", allowUnlock: true, timeType: .phase, effectiveDate: Date(), invalidDate: Date().addingTimeInterval(60 * 60 * 8), success: { (result) in
    print("Member created successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to create the member, error: \(e)")
    }
})

Modify member information

Modifies a lock member. This feature requires communication between your app and a Bluetooth lock. Your app must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)updateMemberWithUserName:(NSString *)userName
                        memberId:(NSString *)memberId
                     allowUnlock:(BOOL)allowUnlock
                        timeType:(TYMemberTimeType)timeType
                   effectiveDate:(NSDate *)effectiveDate
                     invalidDate:(NSDate *)invalidDate
                         success:(nullable TYSuccessBOOL)success
                         failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
userName The name of the member.
memberId The member ID.
allowUnlock Specifies whether the member can unlock over Bluetooth.
timeType The validity period of the member’s unlocking permission. Valid values:
  • TYMemberTimeTypePermanent: valid permanently
  • TYMemberTimeTypePhase: valid in certain periods
effectiveDate The time when the unlocking access starts.
invalidDate The time when the unlocking access ends.
success The success callback.
failure The failure callback.

Example

ObjC:

[self.lock updateMemberWithUserName:@"new name" memberId:@"0000008byw" allowUnlock:YES timeType:TYMemberTimeTypePermanent effectiveDate:[NSDate date] invalidDate:[[NSDate date] dateByAddingTimeInterval:60 * 60 * 8] success:^(BOOL result) {
    NSLog(@"Member modified successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to create the member, error: %@", error);
}];

Swift:

self.lock?.updateMember(withUserName: "new name", memberId: "0000008byw", allowUnlock: true, timeType: .phase, effectiveDate: Date(), invalidDate: Date().addingTimeInterval(60 * 60 * 8), success: { (result) in
        print("Member modified successfully.")
    }, failure: { (error) in
        if let e = error {
            print("Failed to modify member information, error: \(e)")
        }
    })

Delete a lock member

You can call this operation to delete a lock member. This feature requires communication between your app and a Bluetooth lock. Your app must be connected to the lock over Bluetooth during the operation. After a lock member is deleted, all unlocking methods and passwords that are associated with the member are deleted.

Bluetooth Smart Lock

API description

- (void)removeMemberWithMemberId:(NSString *)memberId
                         success:(nullable TYSuccessBOOL)success
                         failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
memberId The member ID.
success The success callback.
failure The failure callback.

Example

ObjC:

[self.lock removeMemberWithMemberId:@"000000747d" success:^(BOOL result) {
    NSLog(@"Member deleted successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to delete the member, error: %@", error);
}];

Swift:

self.lock?.removeMember(withMemberId: "", success: { (result) in
    print("Member deleted successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to delete the member, error: \(e)")
    }
})

Query Bluetooth connection status

To use certain features of a Bluetooth lock, you must enable the Bluetooth feature on your app. The SDK can be used to enable an automatic connection with the lock over Bluetooth. The following API methods can be called to create a connection and query the connection status.

API description

/// Creates a Bluetooth connection in case the connection attempt failed or the connection is interrupted.
- (void)autoConnect;

/// Checks whether a Bluetooth connection is created between the lock and the mobile phone. If `NO` is returned, you can call `autoConnect` to try again.
- (BOOL)isBLEConnected;

Dynamic passwords

Returns a dynamic password.

API description

- (void)getLockDynamicPasswordWithSuccess:(nullable TYSuccessString)success
                                  failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
success The success callback. The dynamic password is returned.
failure The failure callback.

Example

ObjC:

TuyaSmartBLELockDevice *lock = [TuyaSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
[lock getLockDynamicPasswordWithSuccess:^(NSString *result) {
    NSLog(@"Result of querying a dynamic password %@", result);
} failure:^(NSError *error) {
    NSLog(@"error %@", error);
}];

Swift:

let lockDevice = TuyaSmartBLELockDevice(deviceId: "your_lock_device_id")
lockDevice?.getLockDynamicPassword(success: { (pwd) in
    print("Result of querying a dynamic password \(pwd)")
}, failure: { (error) in
    if let e = error {
        print("error \(e)")
    }
})

Unlock and lock over Bluetooth

Unlock over Bluetooth

Bluetooth Smart Lock

API description

- (void)unlockWithStatus:(BOOL)status
                 success:(nullable TYSuccessHandler)success
                 failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
status The unlocking and locking status.
success The success callback.
failure The failure callback.

Example

ObjC:

TuyaSmartBLELockDevice *lock = [TuyaSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
BOOL status = YES;
[lock unlockWithStatus:status success:^{
    NSLog(@"Unlocked successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to unlock, error %@", error);
}];

Swift:

let lockDevice = TuyaSmartBLELockDevice(deviceId: "your_lock_device_id")
self.lock?.unlock(withStatus: status, success: {
    print("Unlocked successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to unlock, error: \(e)")
    }
})

Lock over Bluetooth

Bluetooth Smart Lock

API description

- (void)manualLockWithStatus:(BOOL)status
                     success:(TYSuccessHandler)success
                     failure:(TYFailureError)failure;

Parameters

Parameter Description
status The unlocking or locking status.
success The success callback.
failure The failure callback.

Example

ObjC:

TuyaSmartBLELockDevice *lock = [TuyaSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
BOOL status = YES;
[lock manualLockWithStatus:status success:^{
    NSLog(@"Locked successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to lock, error %@", error);
}];

Swift:

let lockDevice = TuyaSmartBLELockDevice(deviceId: "your_lock_device_id")
self.lock?.manualLock(withStatus: status, success: {
    print("Locked successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to lock, error: \(e)")
    }
})

Lock usage records

Query lock alert records

API description

- (void)getAlarmRecordListWithOffset:(int)offset
                               limit:(int)limit
                             success:(nullable void(^)(NSArray<TuyaSmartLockRecordModel *> *records))success
                             failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
offset The page number starting which entries are returned.
limit The total number of returned entries in each call.
success The success callback. A list of alert records is returned.
failure The failure callback.

Data model of TuyaSmartLockRecordModel

Field Type Description
userId NSString The member ID.
userName NSString The nickname of the user.
time NSTimeInterval The 13-bit timestamp when the record was generated.
devId NSString The device ID.
dpData NSDictionary The DP data.
tags NSInteger The flag of the record. Valid values:
  • 0: other types of alarms
  • 1: duress alarm
dpsArray NSArray<NSDictionary *> The array of device DPs.

Example

ObjC:

[self.lock getAlarmRecordListWithOffset:0 limit:50 success:^(NSArray<TuyaSmartLockRecordModel *> * _Nonnull records) {
    NSLog(@"Alert records: %@", records);
} failure:^(NSError *error) {
    NSLog(@"Failed to get alert records, error: %@", error);
}];

Swift:

self.lock?.getAlarmRecordList(withOffset: 0, limit: 50, success: { (records) in
    print("Alert records \(records)")
}, failure: { (error) in
    if let e = error {
        print("Failed to query alert records, error: \(e)")
    }
})

Query unlocking records

API description

- (void)getUnlockRecordListWithOffset:(int)offset
                                limit:(int)limit
                              success:(nullable void(^)(NSArray<TuyaSmartBLELockRecordModel *> *records))success
                              failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
offset The page number starting from which entries are returned.
limit The total number of returned entries in each call.
success The success callback. A list of alert records is returned.
failure The failure callback.

Example

ObjC:

[self.lock getUnlockRecordListWithOffset:0 limit:50 success:^(NSArray<TuyaSmartLockRecordModel *> * _Nonnull records) {
    NSLog(@"Unlocking records: %@", records);
} failure:^(NSError *error) {
    NSLog(@"Failed to query unlocking records, error: %@", error);
}];

Swift:

self.lock?.getUnlockRecordList(withOffset: 0, limit: 50, success: { (records) in
    print("Unlocking records \(records)")
}, failure: { (error) in
    if let e = error {
        print("Failed to query unlocking records, error: \(e)")
    }
})

Unlocking methods

Add a normal password

Adds a normal password. Its validity period follows the member’s validity. Your app must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)addPasswordForMemberWithMemberId:(NSString *)memberId
                                password:(NSString *)password
                              unlockName:(NSString *)unlockName
                           needHijacking:(BOOL)needHijacking
                                 success:(nullable TYSuccessString)success
                                 failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
memberId The member ID.
password The numeric password.
unlockName The name of the password.
needHijacking Specifies whether to enable duress alarms.
success The success callback.
failure The failure callback.

Example

ObjC:

[self.lock addPasswordForMemberWithMemberId:@"00000074zg" password:@"774642" unlockName:@"Password 774642" needHijacking:YES success:^(NSString *result) {
        NSLog(@"Password created successfully.");
} failure:^(NSError *error) {
        NSLog(@"Failed to create the password. %@", error);
}];

Swift:

self.lock?.addPasswordForMember(withMemberId: "00000074zg", password: "774642", unlockName: "Password 774642", needHijacking: true, success: { (result) in
    print("Password created successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to create the password, error: \(e)")
    }
})

Query a list of common passwords

API description

- (void)getPasswordListWithSuccess:(nullable void(^)(NSArray<TuyaSmartBLELockOpmodeModel *> *models))success
                           failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
success The success callback. A list of normal passwords is returned.
failure The failure callback.

Data model of TuyaSmartBLELockOpmodeModel

Field Type Description
opmode NSString The unlocking method.
sourceAttribute NSUInteger The source of the unlocking method.
  • 1: app
  • 2: enroll on an offline lock
  • 3: enroll by the lock super administrator
unlockName NSString The name of the unlocking method.
userName NSString The name of the unlocking user.
lockUserId long long The lock user ID.
userId NSString The member ID.
opmodeValue NSString The value of the unlocking method, generally recorded as the lock ID.
opmodeId NSString The DP ID of the unlocking method.
unlockAttr NSUInteger The attribute of the unlocking method. 1 indicates a duress alarm.

Example

ObjC:

[self.lock getPasswordListWithSuccess:^(NSArray<TuyaSmartBLELockOpmodeModel *> * _Nonnull models) {
    NSLog(@"Password list returned successfully. %@", models);
} failure:^(NSError *error) {
    NSLog(@"Failed to return the password list. %@", error);
}];

Swift:

self.lock?.getPasswordList(success: { (models) in
    print("Password list returned successfully. \(models)")
}, failure: { (error) in
    if let e = error {
        print("Failed to return the password list, error: \(e)")
    }
})

Delete a normal password

Deletes a normal password. Your application must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)removePasswordForMemberWithOpmodeModel:(TuyaSmartBLELockOpmodeModel *)opmodeModel
                                       success:(TYSuccessHandler)success
                                       failure:(TYFailureError)failure;

Parameters

Parameter Description
opmodeModel The model of the unlocking method. You can get the model from the list of unlocking methods.

Example

ObjC:

[self.lock removePasswordForMemberWithOpmodeModel:model success:^{
    NSLog(@"Unlocking method deleted successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to delete the unlocking method. %@", error);
}];

Swift:

self.lock?.removePasswordForMember(with: model, success: {
    print("Unlocking method deleted successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to delete the unlocking method, error: \(e)")
    }
})

Add a fingerprint password

Adds a fingerprint password. This feature requires frequent interaction with the lock. Your app must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)addFingerPrintForMemberWithMemberId:(NSString *)memberId
                                 unlockName:(NSString *)unlockName
                              needHijacking:(BOOL)needHijacking
                                    success:(TYSuccessString)success
                                    failure:(TYFailureError)failure;

Parameters

Parameter Description
memberId The member ID.
unlockName The name of the password.
needHijacking Specifies whether to enable duress alarms.
success The success callback.
failure The failure callback.

Example

ObjC:

// Sets a delegate to receive and display process data.
self.lock.delegate = self;
[self.lock addFingerPrintForMemberWithMemberId:@"00000074zg" unlockName:@"Added fingerprint" needHijacking:YES success:^(NSString *result) {
    NSLog(@"Fingerprint added successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to add a fingerprint, error: %@", error);
}];

// TuyaSmartBLELockDeviceDelegate
- (void)device:(TuyaSmartBLELockDevice *)device didReceiveAddOpMessage:(TuyaSmartBLELockOpMessageModel *)opMessage {
    NSLog(@"Callback executed after the new unlocking method is added.");
}

Swift:

self.lock?.delegate = self
self.lock?.addFingerPrintForMember(withMemberId: "", unlockName: "", needHijacking: true, success: { (result) in
    print("Fingerprint added successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to add the fingerprint, error: \(e)")
    }
})

// TuyaSmartBLELockDeviceDelegate
extension ViewController :TuyaSmartBLELockDeviceDelegate {

    func device(_ device: TuyaSmartBLELockDevice, didReceiveAddOpMessage opMessage: TuyaSmartBLELockOpMessageModel) {
        print("Callback executed after the new unlocking method is added.")
    }
}

Query a list of fingerprint data

API description

- (void)getFingerPrintListWithSuccess:(nullable void(^)(NSArray<TuyaSmartBLELockOpmodeModel *> *models))success
                              failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
success The success callback. A list of fingerprint data is returned.
failure The failure callback.

Example

ObjC:

[self.lock getFingerPrintListWithSuccess:^(NSArray<TuyaSmartBLELockOpmodeModel *> * _Nonnull models) {
    NSLog(@"Fingerprint list returned successfully. %@", models);
} failure:^(NSError *error) {
    NSLog(@"Failed to return the fingerprint list. %@", error);
}];

Swift:

self.lock?.getFingerPrintList(success: { (models) in
    print("Fingerprint list returned successfully. \(models)")
}, failure: { (error) in
    if let e = error {
        print("Failed to return the fingerprint list. error: \(e)")
    }
})

Delete a fingerprint password

Deletes a fingerprint password. Your application must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)removeFingerPrintForMemberWithOpmodeModel:(TuyaSmartBLELockOpmodeModel *)opmodeModel
                                           success:(TYSuccessHandler)success
                                          failure:(TYFailureError)failure;

Parameters

Parameter Description
opmodeModel The model of the unlocking method. You can get the model from the list of unlocking methods.

Example

ObjC:

[self.lock removeFingerPrintForMemberWithOpmodeModel:model success:^{
    NSLog(@"Unlocking method deleted successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to delete the unlocking method. %@", error);
}];

Swift:

self.lock?.removeFingerPrintForMember(with: model, success: {
    print("Unlocking method deleted successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to delete the unlocking method, error: \(e)")
    }
})

Add a card unlocking method

Adds a card unlocking method. Your application must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)addCardForMemberWithMemberId:(NSString *)memberId
                          unlockName:(NSString *)unlockName
                       needHijacking:(BOOL)needHijacking
                             success:(TYSuccessString)success
                             failure:(TYFailureError)failure;

Parameters

Parameter Description
memberId The member ID.
unlockName The name of the password.
needHijacking Specifies whether to enable duress alarms.
success The success callback.
failure The failure callback.

Example

ObjC:

[self.lock addCardForMemberWithMemberId:@"00000074zg" unlockName:@"Card password 1" needHijacking:YES success:^(NSString *result) {
        NSLog(@"Card password created successfully.");
} failure:^(NSError *error) {
        NSLog(@"Failed to create the password. %@", error);
}];

Swift:

self.lock?.addCardForMember(withMemberId: "00000074zg", unlockName: "Card password 1", needHijacking: true, success: { (result) in
    print("Card password created successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to create the password, error: \(e)")
    }
})

Query a list of card passwords

API description

- (void)getCardListWithSuccess:(nullable void(^)(NSArray<TuyaSmartBLELockOpmodeModel *> *models))success
                       failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
success The success callback. A list of card passwords is returned.
failure The failure callback.

Example

ObjC:

[self.lock getCardListWithSuccess:^(NSArray<TuyaSmartBLELockOpmodeModel *> * _Nonnull models) {
    NSLog(@"Card password list returned successfully. %@", models);
} failure:^(NSError *error) {
    NSLog(@"Failed to return the card password list. %@", error);
}];

Swift:

self.lock?.getCardList(success: { (models) in
    print("Card password list returned successfully. \(models)")
}, failure: { (error) in
    if let e = error {
        print("Failed to return the card password list, error: \(e)")
    }
})

Delete a card unlocking method

Deletes a card unlocking method. Your application must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)removeCardForMemberWithOpmodeModel:(TuyaSmartBLELockOpmodeModel *)opmodeModel
                                   success:(TYSuccessHandler)success
                                   failure:(TYFailureError)failure;

Parameters

Parameter Description
opmodeModel The model of the unlocking method. You can get the model from the list of unlocking methods.

Example

ObjC:

[self.lock removeCardForMemberWithOpmodeModel:model success:^{
    NSLog(@"Unlocking method deleted successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to delete the unlocking method. %@", error);
}];

Swift:

self.lock?.removeCardForMember(with: model, success: {
    print("Unlocking method deleted successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to delete the unlocking method, error: \(e)")
    }
})

Generic unlocking methods

Add an unlocking method

Adds a generic unlocking method. Your application must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)addUnlockOpmodeForMemberWithMemberId:(NSString *)memberId
                                     isAdmin:(BOOL)isAdmin
                                unlockDpCode:(NSString *)unlockDpCode
                                unlockOpType:(TYUnlockOpType)unlockOpType
                                  unlockName:(NSString *)unlockName
                               effectiveDate:(nullable NSDate *)effectiveDate
                                 invalidDate:(nullable NSDate *)invalidDate
                                       times:(int)times
                                  dataLength:(int)dataLength
                                 dataContent:(NSString *)dataContent
                                     timeout:(NSTimeInterval)timeout
                               needHijacking:(BOOL)needHijacking
                                     success:(nullable TYSuccessString)success
                                     failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
memberId The member ID.
isAdmin Specifies whether the user is an administrator.
unlockDpCode The DP identifier of the unlocking method. For more information, see List of lock DPs. For example, unlock_card represents the card unlocking method.
unlockOpType The unlocking method. For more information, see the enum values of TYUnlockOpType.
unlockName The name of the unlocking method.
effectiveDate The time when the unlocking method takes effect.
invalidDate The time when the unlocking method expires.
times The maximum number of times the unlocking method can be used.
dataLength The data length. It must be the same as the length of dataContent.
dataContent The data content.
timeout The timeout value for a response. During the interaction with users, such as fingerprint operations, this parameter is not required.
needHijacking Specifies whether to enable duress alarms.
success The success callback.
failure The failure callback.

Example

ObjC:

[self.lock addUnlockOpmodeForMemberWithMemberId:@"00000074zg"
                                        isAdmin:NO
                                    unlockDpCode:@"unlock_password"
                                    unlockOpType:TYUnlockOpTypePassword
                                      unlockName:@"Password 774641"
                                   effectiveDate:nil
                                     invalidDate:nil
                                           times:10
                                      dataLength:6
                                     dataContent:@"774641"
                                         timeout:6
                                   needHijacking:YES
                                         success:^(NSString *result) {
    NSLog(@"Added successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to add. %@", error);
}];

Swift:

self.lock?.addUnlockOpmodeForMember(withMemberId: "00000074zg", isAdmin: false, unlockDpCode: "unlock_password", unlockOpType: TYUnlockOpTypePassword, unlockName: "Password 774641", effectiveDate: nil, invalidDate: nil, times: 10, dataLength: 6, dataContent: "774641", timeout: 5, needHijacking: true, success: { (result) in
        print("Added successfully.")
}, failure: { (error) in
    if let e = error {
        print("Failed to add, error: \(e)")
    }
})

Modify an unlocking method

Modifies a generic unlocking method. Your application must be connected to the lock over Bluetooth during the operation.

Bluetooth Smart Lock

API description

- (void)modifyUnlockOpmodeForMemberWithMemberId:(NSString *)memberId
                                       opmodeId:(NSString *)opmodeId
                                        isAdmin:(BOOL)isAdmin
                                     firmwareId:(int)firmwareId
                                   unlockDpCode:(NSString *)unlockDpCode
                                   unlockOpType:(TYUnlockOpType)unlockOpType
                                     unlockName:(NSString *)unlockName
                                  effectiveDate:(nullable NSDate *)effectiveDate
                                    invalidDate:(nullable NSDate *)invalidDate
                                          times:(int)times
                                     dataLength:(int)dataLength
                                    dataContent:(NSString *)dataContent
                                        timeout:(NSTimeInterval)timeout
                                  needHijacking:(BOOL)needHijacking
                                        success:(nullable TYSuccessBOOL)success
                                        failure:(nullable TYFailureError)failure;

Parameters

Parameter Description
memberId The member ID.
opmodeId The unlocking method ID. You can get the value from the list of unlocking methods.
isAdmin Specifies whether the user is an administrator.
firmwareId The hardware ID.
unlockDpCode The DP identifier of the unlocking method. For more information, see List of lock DPs. For example, unlock_card represents the card unlocking method.
unlockOpType The unlocking method. For more information, see the enum values of TYUnlockOpType.
unlockName The name of the unlocking method.
effectiveDate The time when the unlocking method takes effect.
invalidDate The time when the unlocking method expires.
times The maximum number of times the unlocking method can be used.
dataLength The data length. It must be the same as the length of dataContent.
dataContent The data content.
timeout The timeout value for a response. During the interaction with users, such as fingerprint operations, this parameter is not required.
needHijacking Specifies whether to enable duress alarms.
success The success callback.
failure The failure callback.

Example

ObjC:

[self.lock modifyUnlockOpmodeForMemberWithMemberId:@"00000074zg"
                                            opmodeId:@"232323"
                                            isAdmin:NO
                                        firmwareId:15 // The value can be obtained from `opmodevalue` of the unlocking method.
                                        unlockDpCode:@"unlock_password"
                                        unlockOpType:TYUnlockOpTypePassword
                                        unlockName:@"Password 774641"
                                        effectiveDate:nil
                                        invalidDate:nil
                                                times:10
                                        dataLength:6
                                        dataContent:@"774641"
                                            timeout:6
                                        needHijacking:YES
                                            success:^(NSString *result) {
    NSLog(@"Updated successfully.");
} failure:^(NSError *error) {
    NSLog(@"Failed to update. %@", error);
}];

Swift:

self.lock?.modifyUnlockOpmodeForMember(withMemberId: "00000074zg", opmodeId: "232323", isAdmin: false, firmwareId: 15, unlockDpCode: "unlock_password", unlockOpType: TYUnlockOpTypePassword, unlockName: "Password 774641", effectiveDate: nil, invalidDate: nil, times: 10, dataLength: 6, dataContent: "774641", timeout: 5, needHijacking: true, success: { (result) in
	print("Updated successfully.")
}, failure: { (error) in
	if let e = error {
		print("Failed to update, error: \(e)")
	}
})

Delete an unlocking method

API description

- (void)removeUnlockOpmodeForMemberWithOpmodeModel:(TuyaSmartBLELockOpmodeModel *)opmodeModel
                                           isAdmin:(BOOL)isAdmin
                                      unlockDpCode:(NSString *)unlockDpCode
                                      unlockOpType:(TYUnlockOpType)unlockOpType
                                           timeout:(NSTimeInterval)timeout
                                           success:(TYSuccessHandler)success
                                           failure:(TYFailureError)failure;

Parameters

Parameter Description
opmodeModel The model of the unlocking method.
isAdmin Specifies whether the user is an administrator.
unlockDpCode The DP identifier of the unlocking method. For more information, see List of lock DPs. For example, unlock_card represents the card unlocking method.
unlockOpType The unlocking method. For more information, see the enum values of TYUnlockOpType.
timeout The timeout value for a response. During the interaction with users, such as fingerprint operations, this parameter is not required.
success The success callback.
failure The failure callback.

Example

ObjC:

[self.lock removeUnlockOpmodeForMemberWithOpmodeModel:model
                                              isAdmin:NO
                                         unlockDpCode:@"unlock_password"
                                         unlockOpType:TYUnlockOpTypePassword
                                              timeout:10
                                              success:^{
NSLog(@"Deleted successfully.");
} failure:^(NSError *error) {
NSLog(@"Failed to delete. %@", error);
}]

Swift:

self.lock?.removeUnlockOpmodeForMember(with: model, isAdmin: false, unlockDpCode: "unlock_password", unlockOpType: TYUnlockOpTypePassword, timeout: 10, success: {
	print("Deleted successfully.")
}, failure: { (error) in
	if let e = error {
		print("Failed to delete. error: \(e)")
	}
})

List of lock DPs

DP name DP identifier (dpCode)
Add an unlocking method unlock_method_create
Delete an unlocking method unlock_method_delete
Modify an unlocking method unlock_method_modify
Disable an unlocking method unlock_method_freeze
Enable an unlocking method unlock_method_enable
Unlock over Bluetooth bluetooth_unlock
Get feedback on Bluetooth-based unlocking bluetooth_unlock_fb
Remaining battery capacity residual_electricity
Battery status battery_state
Child lock status child_lock
Double lock by lifting up anti_lock_outside
Unlock with a fingerprint unlock_fingerprint
Unlock with a normal password unlock_password
Unlock with a dynamic password unlock_dynamic
Unlock with a card unlock_card
Unlock with a mechanical key unlock_key
Door opening and closing events open_close
Unlock from the inside of the door open_inside
Records of Bluetooth-based unlocking unlock_ble
Door opened door_opened
Alerts alarm_lock
Duress alarms hijack
Doorbell call doorbell
SMS notification message
Chime sounds doorbell_song
Sound level of the chime doorbell_volume
Language switching language
Manage welcome messages on the display screen welcome_words
Volume on keypress key_tone
Local voice guidance volume beep_volume
Double locking status reverse_lock
Switch of automatic latch automatic_lock
Switch between single unlocking and combination unlocking unlock_switch
Synchronize unlocking methods among members synch_member
Set the latency of automatic latch auto_lock_time
Timed automatic locking auto_lock_timer
Number of fingerprint enrollments finger_input_times
Unlock with biometric recognition unlock_face
Open and closed status of the door closed_opened
Unlock with irises unlock_eye
Unlock with palm prints unlock_hand
Unlock with finger veins unlock_finger_vein
Hardware RTC rtc_lock
Report of countdown for automatic locking auto_lock_countdown
Manual locking manual_lock
Locking status lock_motor_state
Rotation direction of the motor on a smart stick lock lock_motor_direction
Disable users unlock_user_freeze
Enable users unlock_user_enable
Add a temporary password to a Bluetooth lock temporary password_creat
Delete a temporary password from a Bluetooth lock temporary password_delete
Modify a temporary password of a Bluetooth lock temporary password_modify
Synchronize unlocking methods (large datasets) synch_method
Unlock with a temporary password unlock_temporary
Motor torque motor_torque
Records of combination unlocking unlock_double
Switch of the arm away mode arming_mode
Configure password-free remote unlocking remote_no_pd_setkey
Password-free remote unlocking with keys remote_no_dp_key
Remote unlocking with mobile phones unlock_phone_remote
Remote unlocking with voice unlock_voice_remote
Send the offline password T0 time password_offline_time
Report the clearing of a single offline password unlock_offline_clear_single
Report the clearing of offline passwords unlock_offline_clear
Report offline password unlocking unlock_offline_pd