# 技术方案

# 注:大卡片、小组件、灵动岛脚本代码需维护在同一份文件上,根据不同字段内容区分

# 原生脚本交互接口

  • 原生入参示例:
{
    "deviceSn": "000000P0000000Q1A0681CAE921C0000",
    "deviceId": "24189255812085",
    "reqId": "4c99607f99b41df7d91b0cdeddb38799",
    "createTime": "2023-06-15 08:55:13 +0000",
    "deviceStatus": {},
    "isOnline": "0/1"
}
// deviceId/deviceID:设备id,
// deviceStatus:设备状态
// isOnline:设备在线离线状态,String类型,0:离线;1:在线

# 脚本输出结果

  • 脚本输出结构示例:
{
    "unknown_status": false,
    "baseInfo": {},
    "deviceControl": {}
}

# 设备状态未知

"unknown_status": true, // Bool类型,设备状态未知  

状态说明:

  • 当入参中deviceStatus缺少判断状态相关字段,且设备当前处于在线状态,设为true
    !!卡片上任意显示状态未知,整体置为状态未知,提供刷新按钮

# 基础信息(示例图中环境信息):baseInfo

"baseInfo": {
    "displayEnvironment": true, //BOOL类型 是否显示环境信息内容
    "environment": [{
        "type": "language", // 环境信息名次
        "value": "language_key"
    }, {
        "type": "value", // 环境信息值
        "value": "30"
     }, {
        "type": "unit", // 环境信息单位
        "value": "°C"
    }], // Array类型,展示的环境信息,根据类型type,进行数据拼接,拼接顺序根据当前语种(阿拉伯语和希伯来语语序问题)
    "displayDeviceStatus": true, //BOOL类型 是否显示设备信息内容
    "deviceStatus": "", // String类型,设备当前状态,返回多语言文案key,支持单一状态显示
    "warningStatus": true, // Boolean类型,控制设备状态文案是否展示错误提示色
    "dotColor": { // 状态文案左侧圆点颜色值
        "normal": "", // 正常模式下16进制颜色值,参考色值:运行中:#00D6DE;待机中:#ADADAD;错误提示色:#F79431
        "dark": "", // 暗黑模式下16进制颜色值,参考色值:运行中:#3DC7CC;待机中:#CCCCCC;错误提示色:#F79431
    }
}

# 小组件快捷控制按钮:deviceControl

"deviceControl": {
    "display": true, // 是否显示控制按钮
    "clickEvent": { // 点击事件
        "clickable": true, // 操作按钮是否可以点击, true:可点击;false:不可点击
        "toastLanguageKey": "" // 有值,代表点击后toast提示;空值,代表执行下面的控制指令
    },
    "icon": {
        "iconFromHttp": false, // icon来源,true:网络资源;false:内置图片
        "url": "", // icon地址,内置图片输入图片文件名(两端需要统一),网络图片输入完整图片url;按钮置灰需传入单独图片,考虑到暗黑模式原因,不做蒙层处理
    },
    "control": {
        "coverCode": "widgetModuleControl" // 控制发码js代码,需要传进js执行库,执行结果作为控制指令传入SDK
    }
}

# 控制指令传参

  • 在设备状态的Object中,增加setValue字段,作为共同参数传入脚本执行方法,得出执行指令集
  • 控制指令输出示例
"backData" = {
    // controlParams有多少个元素即下发多少次指令。
    "controlParams": [{
        "applianceCode": "设备id,从原生传入的设备状态中获取",
        // lua控制指令
        "key": "value"
    }, {
        "applianceCode": "设备id,从原生传入的设备状态中获取",
        // lua控制指令
        "key": "value"
    }]
}