已实现(有限字段) 回调 / Promise
ty.device.getDeviceInfo
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
读取当前绑定设备元数据、契约 schema 和状态。
请求字段
deviceId?;省略时使用当前会话。传入时必须是启动上下文的句柄。
返回字段 devId, deviceId, name, productId, schema, dps, dpCodes, dpsTime:{}, isOnline, deviceOnline, isCloudOnline:false, isLocalOnline:false, isShare:false, capability:1024。schema 使用当前已识别产品锁定契约的编号/code、权限及类型;RAW 为 hex,数值按 schema.scale 编码。同品类其他产品的 DP 表不能复用。
productId 为 HeimLink 产品字符串,不是涂鸦云 PID 或 hash。heimlink 包含 category, productId, contractRevision, contractDigest, transport, stateSource, unavailableFields;修订号是正整数,摘要是 64 位小写十六进制 SHA-256,表示当前 App 构建的契约 pin,不是设备在线协商的版本。
activeTime, devTimezoneId, latitude, longitude 缺失时不伪造;不把本地添加时间称为激活/配对时间。离线业务缓存只有在产品与契约来源匹配时返回,否则为空;绑定和用户信息不因此删除。
错误与限制 产品未知、身份冲突或缺少产品契约为 NOT_SUPPORTED,不按品类回退;设备已删除为 BAD_REQUEST;跨设备为 DEVICE_SCOPE_VIOLATION。
超时
SDK 15 秒。
示例
const info = await ty.device.getDeviceInfo({ deviceId });
已实现 回调 / Promise
ty.device.registerDeviceListListener
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
确认设备事件订阅范围;不创建第二条 BLE 监听。
请求字段
deviceIdList: [deviceId],只接受当前设备一个句柄。
返回字段
{}。事件监听器可在此前或此后注册,均仅接收本会话设备。
错误与限制
空列表、其他设备或多个设备为 DEVICE_SCOPE_VIOLATION。
超时
SDK 15 秒。
示例
await ty.device.registerDeviceListListener({ deviceIdList: [deviceId] });
已实现 事件
ty.device.onDpDataChange
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
订阅本会话设备的已认证 DP 变化以及 queryDps 的查询结果。
订阅签名
callback(event);返回退订函数。
事件字段
{deviceId, devId, dps};dps 为数字 ID 字符串键的部分映射,RAW 为 hex,数值遵守 schema.scale。不自动回放初始状态;queryDps 可报告与已有值相同的数据。
错误与限制
无监听回放;不能把事件到达时间当作设备执行时间。
超时
订阅无 RPC 超时;调用退订函数或卸载页面时清理。
示例
const off = ty.device.onDpDataChange(event => update(event.dps));
已实现(BLE) 回调 / Promise
ty.device.publishCommands
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
通过当前认证设备会话下发控制指令。
请求字段
deviceId?, dps;mode 省略或 2;options 省略或空对象;pipelines 省略或包含 3(BLE)的数组。
返回字段
成功 {},不返回乐观状态。数字 ID 映射至实际设备契约,RAW hex 转为现有 rti Base64;数值从缩放整数转为物理单位。HeimLink 会话保留原子 SET_STATE;TRV901Z 驱动为逐字段 ACK,可能部分提交,不提升其原子性。
错误与限制
DP_UNKNOWN, DP_READ_ONLY, DP_TYPE_MISMATCH, DP_VALUE_INVALID, NOT_CONNECTED, NOT_PAIRED;非 BLE 选择或扩展选项为 NOT_SUPPORTED。
超时
SDK 15 秒。
示例
await ty.device.publishCommands({ deviceId, dps: { 1: "heat" }, mode: 2, pipelines: [3] });
已实现(支持主动读取的驱动) 回调 / Promise
ty.device.queryDps
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
主动读取指定 DP,并通过事件交付结果。
请求字段
deviceId?, dpIds: number[] 非空;queryType 省略或 0。
返回字段
成功 {} 不含 DP;值通过 onDpDataChange 返回。当前 HeimLink 驱动读取完整状态后筛选指定编号;TRV901Z 的 getState 只是报告缓存,不能当成主动查询。事件可能先于成功回调,需先订阅。
错误与限制
TRV901Z 或未返回全部指定 DP 为 NOT_SUPPORTED;未知 ID 为 DP_UNKNOWN。
超时
SDK 15 秒。
示例
await ty.device.queryDps({ deviceId, dpIds: [1, 2] });
已实现 回调 / Promise
ty.device.getBLEOnlineState
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
查询当前设备真实 BLE 物理连接状态。
请求字段
deviceId?。
返回字段
{isOnline:boolean}。其他设备的连接不会使当前设备在线;物理在线不代表已认证或控制命令一定可用。
错误与限制
通用设备范围错误。
超时
SDK 15 秒。
示例
const state = await ty.device.getBLEOnlineState({ deviceId });
已实现 回调 / Promise
ty.device.connectBLEDevice
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
定向连接本页面绑定设备并发现服务。
请求字段
deviceId?。
返回字段
{isOnline:boolean}。保留无回调时返回 Promise 的调用方式。连接成功不等于安全配对完成。
错误与限制
连接和权限失败如实返回,不能当作 NOT_PLANNED。
超时
SDK 20 秒。
示例
await ty.device.connectBLEDevice({ deviceId });
已实现(BLE) 事件
ty.device.onDeviceOnlineStatusUpdate
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
订阅本设备 BLE 在线状态变化。
订阅签名
callback(event);返回退订函数。
事件字段
{deviceId, devId, online:boolean, heimlink:{transport:"ble"}}。不伪造涂鸦云在线、网关或 onlineType 枚举。不初始回放;用 getBLEOnlineState 查询当前值。
错误与限制
只报告当前设备的变化。
超时
订阅无 RPC 超时;调用退订函数或卸载页面时清理。
示例
const off = ty.device.onDeviceOnlineStatusUpdate(event => updateOnline(event.online));
已实现 事件
ty.device.onDeviceRemoved
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
订阅当前已保存设备被移除。
订阅签名
callback(event);返回退订函数。
事件字段
{deviceId, devId},均为本地句柄。事件不是删除命令;收到后原生设备页面将退出。
错误与限制
不返回原始蓝牙 locator。
超时
订阅无 RPC 超时;调用退订函数或卸载页面时清理。
示例
const off = ty.device.onDeviceRemoved(event => handleRemoved(event));
已实现 回调 / Promise
ty.device.renameDeviceName
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
修改当前设备在 HeimLink 中的本地名称。
请求字段
deviceId?, name:去除首尾空白后非空,原始长度最多 100 字符。
返回字段
{},使用既有设备持久化流程;不改广播名、云端名或出水口别名。
错误与限制
空白名称 BAD_REQUEST;跨设备 DEVICE_SCOPE_VIOLATION。
超时
SDK 15 秒。
示例
await ty.device.renameDeviceName({ deviceId, name: "Garden timer" });
NOT_SUPPORTED 回调 / Promise
ty.device.getOTAUpdateInfo
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
OTA 查询有业务意义,但当前尚无等价的模块状态/可升级性查询。
请求字段
deviceId?。
返回字段
明确失败;不返回 [] 或 upgradeStatus:0 冒充“没有更新”。可用 openOTAUpgrade 进入原生页面进行实际检查。
错误与限制
NOT_SUPPORTED,不是 NOT_PLANNED。
超时
SDK 15 秒。
示例
ty.device.getOTAUpdateInfo({ deviceId, fail: handleFailure });
已实现 回调 / Promise
ty.device.openOTAUpgrade
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
打开当前设备的原生固件升级页面。
请求字段
deviceId?。
返回字段
{} 表示打开页面,不表示升级开始或成功;仍由原生页校验固件、设备家族、权限和版本。
错误与限制
通用设备范围/导航错误;不允许页面提供任意固件 URL 绕过校验。
超时
SDK 15 秒。
示例
await ty.device.openOTAUpgrade({ deviceId });
已实现 回调 / Promise
ty.device.openDeviceDetailPage
继承 ty 通用约定 、安全模型 和 数据类型 。
功能
打开当前设备的 HeimLink 原生设置页。
请求字段
deviceId?。
返回字段
{};不承诺提供涂鸦分享、账号或云自动化入口。
错误与限制
通用设备范围/导航错误。
超时
SDK 15 秒。
示例
await ty.device.openDeviceDetailPage({ deviceId });