随着 IoT 设备的普及,如何安全、灵活地管理对设备的控制权限变得更加复杂。

在以往简单的应用场景中,控制端 App 仅仅需要对一个设备进行控制。但随着家庭拥有的物联网设备愈加丰富,控制端 App 需要同时控制多个设备。

另外,某些终端设备还需要提供给多人控制。例如,家具式的智能排插需要支持被所有的家人打开或者关闭。因此就出现一个控制端 App 能够控制多个设备端,或者多个用户能够相互控制多个设备的权限管理问题。群组管理、智能场景等概念应运而生。

本文将为大家介绍关于设备控制的内容。

设备功能

  • DeviceBean 类的 dps 属性定义了设备的状态,称作数据点(DP,Data Point)或功能点。

  • dps 数组里,每个 key 对应一个设备功能的 dpIddpValue 为该设备功能的值。

    一款产品的设备功能定义可以在 涂鸦 IoT 开发平台 上查看。如下图:

指令格式

发送控制指令按照以下格式:

{"(dpId)":"(dpValue)"
}

设备功能示例

假设您在涂鸦 IoT 开发平台上,查看到一款灯具产品的设备功能有 101、102、103、104、105。其示例代码可能为:

// 设置 dpId 为 101 的布尔型设备功能示例,作用:开关打开
dps = {"101": true};// 设置 dpId 为 102 的字符串型设备功能示例,作用:设置 RGB 颜色为 ff5500
dps = {"102": "ff5500"};// 设置 dpId 为 103 的枚举型设备功能示例,作用:设置档位为 2 档
dps = {"103": "2"};// 设置 dpId 为 104 的数值型设备功能示例,作用:设置温度为 20°
dps = {"104": 20};// 设置 dpId 为 105 的透传型(byte 数组)设备功能示例,作用:透传红外数据为 1122
dps = {"105": "1122"};// 多个功能合并发送
dps = {"101": true, "102": "ff5500"};mDevice.publishDps(dps, new IResultCallback() {@Overridepublic void onError(String code, String error) {// 错误码 11001 有下面几种原因://1:数据类型发送格式错误,例如,String 类型格式发成 Boolean 类型数据。//2:不能下发只读类型 DP 数据,参考 SchemaBean getMode,"ro" 是只读类型。//3:Raw 格式数据发送的不是 16 进制字符串。}@Overridepublic void onSuccess() {}});

发送控制命令时,请注意数据类型。例如:

  • 设备功能的数据类型是数值型( value )时,则发送的应该是 {"104": 25},而不是 {"104": "25"}
  • 透传类型传输的 Byte 数组是 16 进制字符串格式,并且必须是偶数位,则发送的应该是 {"105": "0110"},而不是 {"105": "110"}

控制设备

首先,需要 初始化设备控制,设备控制接口向设备发送控制指令,改变设备状态或功能,来达到设备控制的目的。

设备控制支持局域网控制、云端控制、自动方式这三种控制通道。如果可以连接到局域网,建议优先通过局域网控制;否则,请通过云端控制。

接口说明

  • 局域网控制

    ITuyaDevice.publishDps(dps, TYDevicePublishModeEnum.TYDevicePublishModeLocal, callback);
    

  • 云端控制

    ITuyaDevice.publishDps(dps, TYDevicePublishModeEnum.TYDevicePublishModeInternet, callback);
    

  • 自动控制

    ITuyaDevice.publishDps(dps, TYDevicePublishModeEnum.TYDevicePublishModeAuto, callback);
    

    或者

    ITuyaDevice.publishDps(dps, callback);
    

    推荐使用 ITuyaDevice.publishDps(dps, callback) 调用方式。

  • 指定通道控制

    ITuyaDevice.publishDps(dps, orders, callback);
    

参数说明

参数 说明
dps 设备功能,全称为 data points,通过 JSON 字符串的格式表示,详情请参考 设备功能 章节
callback 返回控制指令是否成功的回调
TYDevicePublishModeEnum 设备控制方式
orders 通道顺序,可以参考 CommunicationEnum 枚举类。例如,[3 , 1] 指定的是 优先蓝牙控制,蓝牙不在线则选择云端控制

Java 示例

假设,开启一个灯具采用 101 设备功能,则开灯的代码如下:

mDevice.publishDps("{\"101\": true}", new IResultCallback() {@Overridepublic void onError(String code, String error) {Toast.makeText(mContext, "开灯失败", Toast.LENGTH_SHORT).show();}@Overridepublic void onSuccess() {Toast.makeText(mContext, "开灯成功", Toast.LENGTH_SHORT).show();}
});

智能生活 App SDK 如何实现设备控制相关推荐

  1. 智能生活 App SDK 之家庭信息管理接口(全)

    涂鸦智能生活 App SDK 为全屋智能业务场景的移动端开发提供各类模块和组件.因此,家庭是抽象于全屋智能场景的概念,指用户在以家或者场所为单位的范围内所有设备.账号.权限等信息的集合. 家庭管理主要 ...

  2. 智能生活 App 垂直品类- IPC SDK 架构及快速集成配置(安卓版)

    除了通用设备功能的应用开发,针对部分常见的全屋智能场景设备,智能生活 App SDK 提供了单独的垂直品类 SDK.包括智能摄像机 SDK.智能门锁 SDK.扫地机机器人 SDK.智能照明控制 SDK ...

  3. 鸿蒙hilink的关系,华为继续应用鸿蒙OS助力智能生活 HiLink生态用户超过5000万

    1月23日举行的华为花粉年会上,华为消费业务CEO余承东总结了之前的成果,并公布了华为智能家居HiLink生态的数据.他说,目前华为HiLink生态用户超过5000万,连接设备超过10亿台.此外,华为 ...

  4. android智能机顶盒的ota设计,智能机顶盒APP方案开发,让生活更有趣!

    原标题:智能机顶盒APP方案开发,让生活更有趣! 目前的有线存量机顶盒配置低.支撑业务比较少.用户体验也非常差,只能满足基本的看电视需求,并不支持新业务形态,也很难进行新业务拓展,面临用之无味.弃之可 ...

  5. App开发智能车载之SDK篇

    App开发智能车载之SDK篇 网络资源 - 视频资源 - DevBytes:安卓车载介绍 http://v.youku.com/v_show/id_XODY4NjM1NTI0.html - 安卓车载系 ...

  6. 为什么手机里的小爱音响app里搜不到家里的小爱音箱_教你500元用小米米家网关+小爱音箱尝鲜最AI智能生活...

    如果说4G开启了移动互联网时代,那么5G则是开启万物互联时代.也正因为物联网.5G带来了智能家居行业如火如荼地开展.然而智能家居解决方案都离不开2个最基本的产品:智能网关以及智能音箱. 说到智能音箱, ...

  7. 物联网智能家居app开发,加速智能生活发展进程

    随着移动互联网的发展,人们的消费观念开始改变,物联网智能家居的概念逐渐被人们所接受,物联网智能家居app也成为了人们智慧生活的首选.智能家居app通过网络技术完成与家庭设备的连接,实现物物之间的智能交 ...

  8. BLE设备通过HILINK接入华为智慧生活APP

    一. BLE芯片资源要求 移植Hilink至少需要额外的64K FALSH和32K RAM. 一般选用FLASH > 256K, RAM > 64K 的BLE SOC. 二. 产品认证要求 ...

  9. android版 智能家居 kit,Android/IOS版全能家电手机APP(智能家居APP)

    主要功能说明 1.照明控制 配合KOTI各系列的遥控开关(单火或零火开关),用户可以在手机APP上实现智能灯光控制,包括灯的开关.调光控制. 2.电动窗帘控制 配合KOTI各系列的窗帘开关,用户可以在 ...

最新文章

  1. 最新!3D目标检测论文汇总(多模态融合)
  2. c++ 结构体地址 转换成ulong_零基础入门之结构体字节对齐
  3. 【python】sqlite使用
  4. Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列
  5. mysql aa复制_MySQL的复制架构与优化
  6. 关于React Router v4的虚张声势指南
  7. 使用VS自带的打包工具,制作winform安装项目
  8. BCELoss和BCEWithLogitsLoss
  9. 11(3)-AirSim+四旋翼仿真-AirSim中人工势场法方法改进
  10. 眨眼视频制作与生成活体视频生成
  11. Codeforces1336A Linova and Kingdom (思维)
  12. 超好用的iOS设备管理软件——iMazing
  13. 差点跑进奥运会赛场的“人类计算机之父”
  14. 【JAVA】集合框架及复杂度
  15. K-means算法Matlab实现
  16. 2018计算机网络MOOC第一章作业1
  17. iPhone卫星功能仅用于紧急通信;韩国通过立法禁止苹果、谷歌垄断支付系统;Linux 5.14 版本发布|极客头条
  18. 【Linux学习】如何编写Shell脚本调用企业微信api来发消息给企业微信成员?
  19. 基于麒麟SP10服务器版的Kubernetes集群安装
  20. 网络对抗技术---实验一

热门文章

  1. 字符串转为Date类型
  2. 燕十八 mysql优化_布尔教育燕十八mysql优化视频资料分享
  3. 10万ip网站 服务器,我做电影站如何在半年内实现日IP10万(转载)
  4. 1.2 引入不定度量空间的动机——有限时域H2/H∞滤波
  5. 2017-2018年度刷题记录
  6. ibm x201 怎么清理内部_维修小技巧 篇五:ThinkPadX201i拆机换散热风扇清灰教程
  7. GIS 之 地图数据的存储
  8. 快手与内涵段子最本质的区别
  9. [乐意黎原创] 关于eMule下载伤硬盘的话题
  10. 全国最先进的期货仓单系统|外盘期货仓单软件|内盘期货仓单软件