23 小米IOT Spec协议接口API - MiEcosystem/NewXmPluginSDK GitHub Wiki

小米IOT Spec协议接口API

使用示例可查看GitHub https://github.com/MiEcosystem/NewXmPluginSDK plugProject下的Demo工程SpecDemo。

DeviceController

DeviceController包含了设备Spec协议的内容和设备控制相关的所有接口,通过以下接口获取实例:

    /**
     * ApiLevel 79
     * 获取DeviceController
     * DeviceController包含了协议的内容信息以及设备控制、属性获取、属性订阅等接口
     *
     * @param did
     * @return
     */
    public static DeviceController getDeviceController(String did) {
        
    }

获取设备属性

PropertyParam是对请求参数、返回value以及请求结果resultCode的封装,resultCode=0时代表该属性值获取成功。

    /**
     * ApiLevel 79
     * 从服务器获取设备属性值
     *
     * @param context
     * @param propertyParamList
     */
    public void getSpecProperties(Context context, final List<PropertyParam> propertyParamList, Callback<List<PropertyParam>> callback) {
        
    }

设置设备属性

    /**
     * ApiLevel 79
     * 设置设备属性值
     *
     * @param context
     * @param propertyParam
     * @param callback
     */
    public void setSpecProperty(Context context, final PropertyParam propertyParam, Callback<Object> callback) {
        
    }

执行Action

    /**
     * ApiLevel 79
     * 执行action
     *
     * @param context
     * @param actionParam
     * @param callback List<Object>为action执行成功返回的out
     */
    public void doAction(Context context, final ActionParam actionParam, Callback<List<Object>> callback) {
        
    }

属性订阅

订阅属性需要为每个订阅的属性设置listener,在MessageReceiver中收到push消息后调用onSubscribeData,然后在listener中处理属性变化即可,退出插件需要移除监听。

    /**
     * ApiLevel 79
     * 订阅属性变化,每次只维持3分钟订阅事件
     */
    public void subscribeProperty(DeviceStat deviceStat, List<PropertyParam> params, Callback<Void> callback) {
        
    }

    /**
     * ApiLevel 79
     * 取消订阅属性,在订阅后,再次订阅前取消,避免重复订阅
     */
    public void unSubscribeProperty(DeviceStat deviceStat, List<PropertyParam> params, Callback<Void> callback) {
        
    }

    /**
     * ApiLevel 79
     * 处理订阅消息
     *
     * @param data
     */
    public void onSubscribeData(String data) {
        
    }

    /**
     * ApiLevel 79
     * 添加property监听
     *
     * @param siid
     * @param piid
     * @param listener
     */
    public void setPropertyListener(int siid, int piid, PropertyListener listener) {
        
    }

    /**
     * ApiLevel 79
     * 移除某个property监听
     *
     * @param siid
     * @param piid
     */
    public void removePropertyListener(int siid, int piid) {
        
    }

    /**
     * ApiLevel 79
     * 移除所有监听
     */
    public void removeAllListener() {
        
    }

其他接口


    /**
     * ApiLevel 79
     * 获取本地保存的属性值
     *
     * @param siid
     * @param piid
     * @return
     */
    public Object getPropertyValue(int siid, int piid) {
    }

    /**
     * ApiLevel 79
     * 获取get property请求参数对象
     *
     * @param siid
     * @param piid
     * @return
     */
    public PropertyParam newPropertyParam(int siid, int piid) {
    }

    /**
     * ApiLevel 79
     * 获取set property请求参数对象
     *
     * @param siid
     * @param piid
     * @param value
     * @return
     */
    public PropertyParam newPropertyParam(int siid, int piid, Object value) {
    }

    /**
     * ApiLevel 79
     * 获取action请求参数对象
     *
     * @param siid
     * @param aiid
     * @param ins
     * @return
     */
    public ActionParam newActionParam(int siid, int aiid, List<Object> ins) {
    }
    /**
     * ApiLevel 79
     * 获取serviceController
     *
     * @param siid
     * @return
     */
    public ServiceController getServiceController(int siid) {
    }

    /**
     * ApiLevel 79
     * 获取propertyController
     *
     * @param siid
     * @param piid
     * @return
     */
    public PropertyController getPropertyController(int siid, int piid) {
    }

    /**
     * ApiLevel 79
     * 获取actionController
     *
     * @param siid
     * @param aiid
     * @return
     */
    public ActionController getActionController(int siid, int aiid) {
    }

    /**
     * ApiLevel 79
     * 根据property name获取siid和piid
     *
     * @param propertyName
     * @return
     */
    public Pair<Integer, Integer> getPropertyIid(String propertyName) {
    }

    /**
     * ApiLevel 79
     * 根据action name获取siid和aiid
     *
     * @param actionName
     * @return
     */
    public Pair<Integer, Integer> getActionIid(String actionName) {
    }
⚠️ **GitHub.com Fallback** ⚠️