设备发现

运行流程图

调用方法(discoverAppliance)

智能主机需要获取设备信息时,将会触发discoverAppliance方法

@Override
public void discoverAppliance(String param) {
    //实例化一个设备对象
    Appliance appliance = new Appliance();
    //设置设备的唯一Id值
    appliance.setApplianceIdByInt(1);
    //设置设备名称
    appliance.setDeviceName(1+"灯");
    //设置设备类型
    appliance.setApplianceTypes(YzDevType.LIGHT);
    //设置支持的操作
    appliance.setActions(YzDevAction.turnOn,YzDevAction.turnOff);
    //添加到集合中
    virtualDevice.add(appliance);
    //获取设备完成后调用notifyHost 通知Action为 GET_DEVICE_SUCCESS,返回设备信息
    notifyHost(SdkAction.GET_DEVICE_SUCCESS, JSON.toJSONString(virtualDevice));
}

Appliance设备对象

Appliance是设备对象,用于描述设备的信息,需要将不同的三方设备对象转换为此对象后再通过notifyHost通知主机更新数据

public class Appliance  {
    //设备ID
    /**设备唯一ID*/
    private String applianceId;
    //设备具有的操作类型
    /**设备具有的操作类型*/
    private String[] actions;
    //设备的类型
    /**设备的类型*/
    private String[] applianceTypes;
    //设备名
    /**设备名*/
    private String deviceName;
    //厂商名
    /**厂商名*/
    private String manufacturerName;
    //如果具有自己的图标的话用该字段(可选,无值默认使用对应类型的本地图标)
    //图片URL链接
    /**如果具有自己的图标的话用该字段(可选,无值默认使用对应类型的本地图标)
     图片URL链接*/
    private String icon;
    //设备型号
    /**设备型号*/
    private String model;
    //设备型号名称
    /**设备型号名称*/
    private String modelName;
    //设备区域名称例如 (客厅,厨房),如果此字段为空则可能赋予默认的值
    /**设备区域名称例如 (客厅,厨房),如果此字段为空则可能赋予默认的值*/
    private String zone = "客厅";
    //设备楼层名称例如 (1楼,2楼),如果此字段为空则可能赋予默认的值
    /**设备楼层名称例如 (1楼,2楼),如果此字段为空则可能赋予默认的值*/
    private String floor = "1楼";
    //设备属性K - V
    /**设备属性K - V*/
    private JSONObject attributes;
    //补充字段
    /**补充字段*/
    private JSONObject additionalApplianceDetails;
    }

获取设备成功

由于设备加载时的时间长短不一,因此需要开发者在设备搜索完成后,自行发送通知获取设备成功的消息

SdkAction.GET_DEVICE_SUCCESS 获取成功

SdkAction.GET_DEVICE_FAIL 获取失败

数据:数组类型Appliance

 notifyHost(SdkAction.GET_DEVICE_SUCCESS, JSON.toJSONString(virtualDevice));

最后更新于