更新时间:2022-02-24 GMT+08:00

设备状态更新

接口功能

通过该接口更新设备的状态信息,包括直连设备与所管理的非直连设备。设备离线、上线均可通过该接口刷新设备状态信息。

直连设备状态通过设备的登录状态进行管理,当直连设备连接断开则表示设备离线,当直连设备连接或重连成功,则表示设备上线,无需通过该接口进行刷新。故建议开发者使用该接口刷新非直连设备的状态。

接口描述

1
public static boolean updateDeviceStatus(int cookie, String deviceId, String status, String statusDetail);

接口所属类

HubService

参数说明

字段

必选/可选

类型

描述

cookie

可选

int

Cookie有效值为1-65535。

deviceId

必选

String

设备Id。

status

必选

String

设备状态。

  • 在线: ONLINE。
  • 离线: OFFLINE。

statusDetail

必选

String

设备状态详细信息。

  • 无:NONE
  • 配置等待:CONFIGURATION_PENDING。
  • 通信错误:COMMUNICATION_ERROR。
  • 配置错误:CONFIGURATION_ERROR。
  • 桥接器离线:BRIDGE_OFFLINE。
  • 固件升级:FIRMWARE_UPDATING。
  • 循环任务:DUTY_CYCLE。
  • 未激活:NOT_ACTIVE。

接口返回值

返回值

描述

true

成功。

false

失败。

返回结果

广播名称

广播参数

成员

描述

TOPIC_DEVSTATUS_UPDATA_RSP

IotaMessage对象

(使用intent.getSerializableExtra(HubService.HUB_BROADCAST_IE_IOTAMSG)方法获取)

HUB_IE_RESULT

设备状态更新结果。

HUB_IE_DEVICEID

设备ID。

示例

1
HubService.deviceStatusUpdate(0, deviceId, ONLINE, NONE);

然后等待命令执行结果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// 开发者注册广播接收器对设备状态更新结果进行相应的处理 
BroadcastReceiver mReceiverDevStatus;
mReceiverDevStatus = new BroadcastReceiver() {
    @Override 
    public void onReceive(Context context, Intent intent) {
        //获取IotaMessage
        IotaMessage iotaMsg = (IotaMessage)intent.getSerializableExtra(HubService.HUB_BROADCAST_IE_IOTAMSG);
        //获取响应的错误码 
        String result = iotaMsg.getString(HubService.HUB_IE_RESULT);
        String deviceId = iotaMsg.getString(HubService.HUB_IE_DEVICEID);
        ... 
        return true;
    }
}
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter filterDiscon= new IntentFilter(HubService. TOPIC_DEVSTATUS_UPDATA_RSP);
mLocalBroadcastManager.registerReceiver(mReceiverDevStatus, filterDiscon);