站点管理

更新时间:2022-02-17 07:01:49下载pdf

智慧居住 App SDK 致力于为租住业务场景的移动端开发提供各类模块和组件。因此,站点空间是抽象于智能租住场景的概念,表示挂载在某一账号下的可独立操作的 单元,房间和设备等必须要挂载在某一项目下才可进行操作。

概念介绍

站点主要分类:

  • 普通站点:普通用户自己创建的站点
  • 商家授权站点:商家授权用户入住的站点
  • 通行站点:商家或用户授权其他用户管理通行权限的站点

站点管理能力:

  • 查询站点列表
  • 添加、修改和移除单个站点
  • 管理站点名称,地理位置、房间列表信息,成员信息等
  • 站点下,设备添加、信息修改、监听移除、设备状态变化的监听等

一个账号下可以有不定数量的项目,不同套餐的账号可配置不同数量的项目,新用户在注册登录后默认是没有项目的,需进行项目的创建流程后才可进行项目维度的相关操作。

获得站点管理器

使用 TuyaSmartResidenceSdk.siteManager() 查询站点管理器,用来调用站点管理的相关方法。

查询站点列表

使用 fun fetchSiteList(listener: Business.ResultListener<ArrayList<SiteBean?>?>?) 方法查询站点列表。

示例代码

TuyaSmartResidenceSdk
            .siteManager()
            .fetchSiteList(object : Business
            .ResultListener<ArrayList<SiteBean?>?> {
                override fun onFailure(
                    p0: BusinessResponse?,
                    p1: ArrayList<SiteBean?>?,
                    p2: String?,
                ) {
                    L.d(TAG, "onFailure BusinessResponse = $p0, ArrayList<SiteBean?> = $p1, " +
                            "String = $p2")
                }

                override fun onSuccess(
                    p0: BusinessResponse?,
                    siteList: ArrayList<SiteBean?>?,
                    p2: String?,
                ) {
                    L.d(TAG, "onSuccess BusinessResponse = $p0, ArrayList<SiteBean?> =" +
                            "$siteList, String = $p2")
                }

            })

SiteBean 属性说明

  • SiteBean 继承自 HomeBeanHomeBean 相关字段说明请参考下表:

    字段名称 类型 说明
    name String 站点名称
    geoName String 站点地理位置名称
    lon Double 经度
    lat Double 纬度
    homeId Long 站点 ID
    admin Boolean 管理员身份
    homeStatus Integer 加入站点要求的状态
    • 1:等待接受
    • 2:接受
    • 3:拒绝
    role Integer 站点成员权限:
    • -1:自定义成员
    • 0:站点成员
    • 1:管理员
    • 2:拥有者
    • -999:无效成员,成员会失效
    rooms List<RoomBean> 所有房间列表
    deviceList List<DeviceBean> 所有设备列表
    groupList List<GroupBean> 所有群组
    meshList List<BlueMeshBean> 网关设备
    sharedDeviceList List<DeviceBean> 收到的共享设备
    sharedGroupList List<GroupBean> 收到的共享群组
  • SiteBean 特有字段说明如下:

    字段名称 类型 说明
    projectName String 项目名称
    projectLocation String 项目地址
    authStartTime Long 授权开始时间
    authEndTime Long 授权结束时间
    memberLimit Int 最大入住人数
    authStatus String 授权状态
    • 0:待生效
    • 1:已生效
    • 2:已逾期
    • 3:永久
    siteType String 站点类型
    • 1:普通站点(默认)
    • 2:通行站点
    • 3:商家授权站点
    spaceFullName String 站点全称
    includeDeviceGroup Boolean 是否包含设备组
    dgIds List 包含的设备组 ID

查询站点列表接口是没有设备与房间等其他信息的。因此,查询站点列表后,还需根据 homeId 查询设备与房间等其他信息才能得到完整的站点信息。

查询站点详情

使用以下方法查询站点详情,房间,设备等信息会自动填入 SiteBean 中。

fun fetchSiteDetail(
        siteBean: SiteBean,
        callback: ITuyaSiteResultCallback
    )

需要注意的是,每次在 App 启动或是断网重连时,都需要重新调用以上方法,否则会出现信息丢失的问题。

示例代码

TuyaSmartResidenceSdk.siteManager().fetchSiteDetail(Global
        .currentSite!!, object : ITuyaSiteResultCallback {
        override fun onSuccess(bean: SiteBean?) {
            L.d(TAG, JSON.toJSONString(bean))
        }

        override fun onError(errorCode: String?, errorMsg: String?) {
            L.d(TAG, "fetchSiteDetailList: errorCode = $errorCode, errorMsg = $errorMsg")
        }
    })

管理站点

切换站点

查询站点列表与站点详情后,您需要保存这两个信息。当需要切换站点进行展示时,需要请求切换后的站点详情,其他相应接口也需要使用切换后的站点 ID 去请求相应的数据。

创建一个用户站点

创建站点可以使用以下方法创建,必选 siteNamelistener 字段,其余字段可填写空字符串或 0

fun createSite(
        siteName: String,
        geoName: String,
        lat: Double,
        lon: Double,
        rooms: List<String?>?,
        listener: Business.ResultListener<HomeResponseBean?>?
    )

参数说明

参数名称 类型 说明
siteName String 站点名
geoName String 所在位置名
lat Double 经度
lon Double 纬度
rooms List<String?> 房间列表
listener Business.ResultListener 结果回调

示例代码

TuyaSmartResidenceSdk.siteManager()
                    .createSite(homeName, "", lat = lat.toDouble(), lon = lon.toDouble(), split, object :
                        Business
                        .ResultListener<HomeResponseBean?> {
                        override fun onFailure(p0: BusinessResponse?, p1: HomeResponseBean?, p2: String?) {
                            L.d(
                                TAG, "onFailure BusinessResponse = $p0, HomeResponseBean = $p1, " +
                                        "String = $p2")
                        }

                        override fun onSuccess(p0: BusinessResponse?, p1: HomeResponseBean?, p2: String?) {
                            L.d(TAG, "onSuccess BusinessResponse = $p0, HomeResponseBean = $p1, " +
                                    "String = $p2")

                        }

                    })

修改站点信息

如需修改站点信息,如名称、位置、房间名称或数量,可使用以下方法修改。

修改站点信息时,您需要根据不同的站点类型,来限制是否能够修改站点信息。例如 B2C、通行站点等场景下,不允许修改站点信息。

fun updateSiteInfo(
        homeId: Long,
        name: String?,
        lon: Double,
        lat: Double,
        geoName: String?,
        rooms: List<String?>? = null,
        overWriteRoom: Boolean? = null,
        listener: Business.ResultListener<Boolean?>?
    )

参数含义与 createSite 方法相同,overWriteRoom 含义为:

作用
true 删除原房间,使用新传入的房间
false 添加房间

示例代码

    TuyaSmartResidenceSdk.siteManager()
                        .updateSiteInfo(Global.currentSite?.homeId ?: return@Button, homeName, lon.toDouble(), lat
                            .toDouble(), geoName, split, true, object : Business
                        .ResultListener<Boolean?> {
                            override fun onFailure(p0: BusinessResponse?, p1: Boolean?, p2: String?) {
                                L.d(
                                    TAG, "onFailure BusinessResponse = $p0, HomeResponseBean = $p1, " +
                                            "String = $p2")
                            }

                            override fun onSuccess(p0: BusinessResponse?, p1: Boolean?, p2: String?) {
                                L.d(TAG, "onSuccess BusinessResponse = $p0, HomeResponseBean = $p1, " +
                                        "String = $p2")

                            }

                        })

查询过期的商家授权站点

由于商家授权站点会有有效期,过期的商家授权站点列表可通过这个方法查询。

fun fetchExpiredList(
        pageNo: Int,
        pageSize: Int,
        listener: Business.ResultListener<SiteExpiredAuthBeans>
    )

该方法只能查询过期的商家授权站点列表,普通站点与通行站点并不会返回数据。

SiteExpiredAuthBeans 字段说明

字段名称 类型 说明
projectId String 项目 ID
spaceId String 房源 ID
projectName String 项目名称
spaceName String 房源名称
spaceFullName String 房源全称
authStartTime Long 入住时间
authEndTime Long 退房时间

示例代码

TuyaSmartResidenceSdk.siteManager().fetchExpiredList(1, 20, object : Business
    .ResultListener<SiteExpiredAuthBeans> {
        override fun onFailure(
            p0: BusinessResponse?,
            p1: SiteExpiredAuthBeans?,
            p2: String?,
        ) {
            L.d(TAG, "fetchExpiredList onFailure: ${p0?.errorMsg}")
        }

        override fun onSuccess(
            p0: BusinessResponse?,
            p1: SiteExpiredAuthBeans?,
            p2: String?,
        ) {

        }

    })