# 设备控制

### 运行流程图

![](https://1762171684-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LsVqHMWe7-CzkAWzc94%2F-MEVoluNKmQEBFkd2I5H%2F-MEWGS_zehYMdJR-Gj3y%2F%E6%9C%AA%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%20\(2\).jpg?alt=media\&token=02dca1ea-2b81-4648-9be9-5a6a69e0aaf9)

## 调用方法（applianceControl）

用户控制设备时会调用此方法applianceControl方法，携带参数ControlRequest,客户需要根据ControlRequest在此方法内实现自己的控制逻辑

```java
@Override
public void applianceControl(String controlRequest) {
    
}
```

## ControlRequest

携带设备被控制的设备对象[Appliance](https://doc.youzhuan.net/dev-link-host/she-bei-fa-xian#appliance-she-bei-dui-xiang)

当前的请求类型，可使用YzRequestCode类

values携带改变的参数值

如果是通过语音控制的,则可以通过values对象获取“voiceStr”的值

具体请参考[请求类型与数据参照](https://doc.youzhuan.net/dev-link-host/android-link-sdk/controlrequest-dui-zhao)

```java
    /**设备对象*/
    private Appliance appliance;
    /**请求类型*/
    @YzRequestCode
    private String type;
    /**请求携带的属性值*/
    private JSONObject values;
```

## 控制结果返回

由于设备控制结果可能不为同步,需要使用notifyHost方法通知智能主机更新数据

SdkAction.[CONTROLLER\_SUCCESS](https://doc.youzhuan.net/dev-link-host/action-shi-jian#controller_success)

控制成功时传递此Action

SdkAction.[CONTROLLER\_FAIL](https://doc.youzhuan.net/dev-link-host/action-shi-jian#controller_fail)

控制失败时传递此Action

SdkAction.[NOTIFY\_APPLIANCE\_CHANGE](https://doc.youzhuan.net/dev-link-host/action-shi-jian#notify_appliance_change)

设备状态改变时传递此Action

返回数据

```java
{
    "applianceId":"设备Id"
    "attributes":{
       
    }
}
```
