Room Device Management

Last Updated on : 2024-08-23 09:48:00download

This topic describes how to manage devices by room. The class ThingSmartRoomBiz is used for room management to implement operations on a room.

The ThingSmartRoomBiz component offers more features than the ThingSmartRoom. If you are still using ThingSmartRoom, please refer to this document.

Organize devices or groups by room

Pass in the device ID or group ID to add multiple paired devices or groups to a room at once. Passing in an empty array will remove devices or groups from a room.

Additionally, you can register a listener and implement the delegate method ThingSmartRoomBizDelegate to receive a callback when devices or groups are organized by room.

API description

- (void)saveBatchRoomRelationWithDeviceGroupList:(NSArray <NSString *> *)deviceGroupList
                                          roomId:(long long)roomId
                                          homeId:(long long)homeId
                                         success:(ThingSuccessHandler)success
                                         failure:(ThingFailureError)failure;

Parameters

Parameter Description
deviceGroupList The list of device IDs or group IDs.
roomId The room ID.
homeId The ID of the home to which the room belongs.
success The success callback.
failure The failure callback.

Example

Objective-C:

- (void)saveBatchList:(NSArray *)deviceGroupList roomId:(long long)roomId homeId:(long long)homeId {
    [[ThingSmartRoomBiz sharedInstance] saveBatchRoomRelationWithDeviceGroupList:deviceGroupList roomId:roomId homeId:homeId success:^{

    } failure:^(NSError *error) {

    }];
}

Swift:

func saveBatchList(deviceGroupList:[String], roomId:Int64, homeId:Int64) {
    ThingSmartRoomBiz.sharedInstance().saveBatchRoomRelation(withDeviceGroupList: deviceGroupList, roomId: roomId, homeId: homeId) {

    } failure: { error in

    }
}

Add a device to a room

Add a paired device to a room. Make a callback on success.

Additionally, you can register a listener and implement the delegate method ThingSmartRoomBizDelegate to receive a callback when devices are organized by room.

API description

- (void)addDeviceWithDeviceId:(NSString *)deviceId
                       roomId:(long long)roomId
                       homeId:(long long)homeId
                      success:(ThingSuccessHandler)success
                      failure:(ThingFailureError)failure;

Parameters

Parameter Description
deviceId The ID of the target device.
roomId The room ID.
homeId The ID of the home to which the room belongs.
success The success callback.
failure The failure callback.

Example

Objective-C:

- (void)addDevice:(NSString *)devId roomId:(long long)roomId homeId:(long long)homeId {
    [[ThingSmartRoomBiz sharedInstance] addDeviceWithDeviceId:devId roomId:roomId homeId:homeId success:^{

    } failure:^(NSError *error) {

    }];
}

Swift:

func addDevice(devId:String, roomId:Int64, homeId:Int64) {
    ThingSmartRoomBiz.sharedInstance().addDevice(withDeviceId: devId, roomId: roomId, homeId: homeId) {

    } failure: { error in

    }
}

Remove a device from a room

Remove a device from a room. Make a callback on success. This operation does not remove the device from the home.

Additionally, you can register a listener and implement the delegate method ThingSmartRoomBizDelegate to receive a callback when devices are organized by room.

API description

- (void)removeDeviceWithDeviceId:(NSString *)deviceId
                          roomId:(long long)roomId
                          homeId:(long long)homeId
                         success:(ThingSuccessHandler)success
                         failure:(ThingFailureError)failure;

Parameters

Parameter Description
deviceId The ID of the target device.
roomId The room ID.
homeId The ID of the home to which the room belongs.
success The success callback.
failure The failure callback.

Example

Objective-C:

- (void)removeDevice:(NSString *)devId roomId:(long long)roomId homeId:(long long)homeId {
    [[ThingSmartRoomBiz sharedInstance] removeDeviceWithDeviceId:devId roomId:roomId homeId:homeId success:^{

    } failure:^(NSError *error) {

    }];
}

Swift:

func removeDevice(devId:String, roomId:Int64, homeId:Int64) {
    ThingSmartRoomBiz.sharedInstance().removeDevice(withDeviceId: devId, roomId: roomId, homeId: homeId) {

    } failure: { error in

    }
}

Add a group to a room

Add a group to a room. Make a callback on success.

Additionally, you can register a listener and implement the delegate method ThingSmartRoomBizDelegate to receive a callback when groups are organized by room.

API description

- (void)addGroupWithGroupId:(NSString *)groudId
                     roomId:(long long)roomId
                     homeId:(long long)homeId
                    success:(ThingSuccessHandler)success
                    failure:(ThingFailureError)failure;

Parameters

Parameter Description
groudId The ID of the target group.
roomId The room ID.
homeId The ID of the home to which the room belongs.
success The success callback.
failure The failure callback.

Example

Objective-C:

- (void)addGroup:(NSString *)groupId roomId:(long long)roomId homeId:(long long)homeId {
    [[ThingSmartRoomBiz sharedInstance] addGroupWithGroupId:groupId roomId:roomId homeId:homeId success:^{

    } failure:^(NSError *error) {

    }];
}

Swift:

func addGroup(groupId:String, roomId:Int64, homeId:Int64) {
    ThingSmartRoomBiz.sharedInstance().addGroup(withGroupId: groupId, roomId: roomId, homeId: homeId) {

    } failure: { error in

    }
}

Remove a group from a room

Remove a group from a room. Make a callback on success. This operation does not remove the group from the home.

Additionally, you can register a listener and implement the delegate method ThingSmartRoomBizDelegate to receive a callback when groups are organized by room.

API description

- (void)removeGroupWithGroupId:(NSString *)groupId
                        roomId:(long long)roomId
                        homeId:(long long)homeId
                       success:(ThingSuccessHandler)success
                       failure:(ThingFailureError)failure;

Parameters

Parameter Description
groudId The ID of the target group.
roomId The room ID.
homeId The ID of the home to which the room belongs.
success The success callback.
failure The failure callback.

Example

Objective-C:

- (void)removeGroup:(NSString *)groupId roomId:(long long)roomId homeId:(long long)homeId {
    [[ThingSmartRoomBiz sharedInstance] removeGroupWithGroupId:groupId roomId:roomId homeId:homeId success:^{

    } failure:^(NSError *error) {

    }];
}

Swift:

func removeGroup(groupId:String, roomId:Int64, homeId:Int64) {
    ThingSmartRoomBiz.sharedInstance().removeGroup(withGroupId: groupId, roomId: roomId, homeId: homeId) {

    } failure: { error in

    }
}

Query room snapshot

Query the room relationship snapshot, including the devices, groups, and scenes in the room.

- (void)fetchRoomSnapshotWithHomeId:(long long)homeId
                             roomId:(long long)roomId
                            success:(void (^_Nullable)(ThingDiyHomeRoomSnapshot * roomSnapshot))success
                            failure:(ThingFailureError _Nullable)failure;

Parameters

Parameter Description
homeId The ID of the home to which the room belongs.
roomId The room ID.
success The success callback, returning the room snapshot.
failure The failure callback.

Example

- (void)fetchRoomSnapshotWithHomeId:(long long)homeId roomId:(long long)roomId{
    [[ThingSmartRoomBiz sharedInstance] fetchRoomSnapshotWithHomeId:homeId roomId:roomId success:^(ThingDiyHomeRoomSnapshot * _Nonnull roomSnapshot) {
        //
    } failure:^(NSError * _Nonnull error) {
        //
    }];
}

Room snapshot model -ThingDiyHomeRoomSnapshot

// Room rule snapshot
@interface ThingDiyHomeRoomSnapshotRule : NSObject
@property (nonatomic, strong) NSString * ruleId;
@property (nonatomic, strong) NSString * ruleName;
@property (nonatomic, strong) NSString * background;
@property (nonatomic, strong) NSString * icon;
@end

// Room device/groupo snapshot
@interface ThingDiyHomeRoomSnapshotDevice : NSObject
// deviceId or groupId
@property (nonatomic, strong) NSString * bizId;
//5:group ; 6:device
@property (nonatomic, assign) NSUInteger bizType;
@property (nonatomic, assign) NSUInteger displayOrder;

- (BOOL)isGroup;
@end

// Room snapshot
@interface ThingDiyHomeRoomSnapshot : NSObject
@property (nonatomic, strong) NSArray<ThingDiyHomeRoomSnapshotRule *> * ruleList;
@property (nonatomic, strong) NSArray<ThingDiyHomeRoomSnapshotDevice *> * deviceList;
@end