智能设备控制概念及方式详解

设备控制

随着物联网设备的普及,如何让用户或者企业安全、灵活地控制和管理设备变得更加重要。因此,便有了设备控制、群组管理、智能场景、多控关联、定时任务等概念。本文主要讲解移动端应用涉及的物联网设备控制相关概念及方式方法。

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

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

接下来就为大家介绍涂鸦物联网应用开发涉及到的设备控制能力,但开发者使用的某一款 App SDK 是否支持某种控制方式,由 SDK 本身决定。

应用场景

  • 在简单的场景中,应用仅仅需要对一个设备进行控制,或者应用需要同时控制多个设备。

  • 在稍微复杂的场景中,设备需要提供给多人控制或者受其他设备状态影响。例如,一个智能门锁要能够支持被所有的家人打开或者关闭。因此就出现一个应用能够控制多个设备,或者多个用户能够相互控制多个设备的权限管理问题。

设备功能

DeviceBean 类 dps 属性定义了设备的状态,为了方便控制设备,涂鸦将物联网设备的每个功能抽象成数据点(DP,Data Point)或功能点,用来定义当前设备的状态。

  • 数据点具有不同的类型,例如布尔、枚举值、数值等。设备功能的数据类型,请参考   自定义功能。
  • dps 数组里,每个 key 对应一个设备功能的 dpIddpValue 为该设备功能的值。
  • 数据点具备读写属性。读表示获取开关目前的值,写表示改变开关目前的值。例如,一个两路的开关,可以抽象成两个数据点,每个数据点类型为布尔型,可取值为  True  或  False。 物联网设备在涂鸦是被映射为产品的,因此,您可以在   涂鸦 IoT 平台   的产品开发处查看设备的功能点。下图为一个示例产品的   标准功能   的功能定义。

在涂鸦,应用通过发送控制指令来使用设备功能,一般按照以下格式,指令取值则根据 IoT 平台上该产品的功能定义而定:

{"<dpId>": "<dpValue>"
}

智能场景

为了满足用户对智能场景的配置需求,涂鸦 IoT App SDK 为开发者提供了用于自定义设置智能场景中产品功能的接口。当一个智能设备的状态的变化,或者某个环境条件的变化影响着其他智能设备的开关或者状态调整时,这就是   智能场景

智能场景分为   一键执行场景   和   自动化场景,常被简称为   场景   和   自动化

自动化

自动化是由用户设定条件,当条件触发后,设备自动执行设定的动作。目前,涂鸦支持以下条件类型:

  • 气象条件:例如温度、湿度、天气、PM 2.5、空气质量、日落日出等。
  • 设备条件:用户可预先选择一个设备的功能状态,当该设备达到该状态时,会触发当前场景里的任务。但为了避免操作冲突,同一设备不能同时作为条件和任务。
  • **定时条件*8:是指按照指定的时间,设备会自动执行的预定任务。
场景动作

场景是由用户添加动作,并手动触发。场景动作的对象类型可以是:

  • 单个设备
  • 设备群组
  • 触发场景
  • 启动自动化
  • 禁用自动化
  • 延时动作

设备群组

设备群组由同一种类型设备组成,是一系列设备的集合。常见的有 Wi-Fi 设备群组和 Zigbee 设备群组。 用户可以对应用下所有设备,根据区域、类型、权限等不同规则进行分类建立群组,以便处理对海量设备的批量操作。例如,对某一项目下的电量统计设备的群组进行批量固件升级。

定时任务

涂鸦智能提供了基本的定时能力,支持设备定时和设备群组定时。 应用通过定时接口设置好定时器信息后,智能设备可以自动根据定时要求进行预订的操作。一个智能设备可以针对多个任务设置定时,每个定时任务下可以包含多个定时器。

多控关联

多控关联是指设备的某个功能与另一个设备的某个功能之间建立关联,生成一个多控组。当控制多控组内某个建立功能关联的设备,组内其他设备关联的功能状态同步。 例如,三个二路 Zigbee 子设备开关,每个开关的第一个 DP 与另外两个开关的第一个 DP 建立多控组,当控制其中一个开关的第一个 DP 状态为关闭状态,另外两个开关的第一个 DP 同步关闭。

指令格式

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

{"(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() {}});

 

控制设备

首先需要初始化设备控制类:

根据设备 ID 初始化设备控制类 IThingDevice

接口说明

ThingHomeSdk.newDeviceInstance(String devId);

参数说明

参数说明
devId设备 ID。

Java 示例

IThingDevice mDevice = ThingHomeSdk.newDeviceInstance(deviceBean.getDevId());

设备控制接口向设备发送指令,改变设备状态或功能,来达到设备控制的目的。

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

  • 局域网控制

    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, orders, callback);
    

参数说明

参数说明
dps设备功能,全称为 data points,通过 JSON 字符串的格式表示,详情请参考上方设备功能章节
publishModeEnum设备控制方式
callback返回控制指令是否成功的回调
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();}
});

 

面板控制

涂鸦提供了面板小程序开发开发方案。面板控制支持绝大多数涂鸦系智能产品以及产品功能点控制,同时具备快速响应和高兼容性的优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存泄露排查流程

一、创建内存泄露案例 package com.mxl.controller;import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.Re…

HarmonyOS模拟器调试

1 、设置 -> 系统设置 -> 关于手机 快速点击 5 次 HarmonyOS 版本开启开发者模式。 2 、设置 -> 系统和更新 -> 开发人员选项 到开发人员选项后往下拉有 USB 调试 &#xff0c;把 USB 调试开关打开。 源自&#xff1a;HarmonyOS HarmonyOS Next 仿小米商城App入门…

【管理咨询宝藏44】AA银行人力资源规划与发展提升分析报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏44】AA银行人力资源规划与发展提升分析报告 【格式】PPT版本&#xff0c;可编辑 【关键词】战略规划、商业分析、管理咨询 【强烈推荐】这是一套…

vue3 渲染一个后端返回的图片字段渲染、table表格内放置图片

一、后端直接返回图片url 当图片字段接口直接返回的是图片url&#xff0c;可以直接放到img标签上 <img v-if"thumbLoader" class"r-image-loader-thumb" :src"resUrl" /> 二、当图片字段接口直接返回的是图片Id 那么就需要去拼一下图片…

中国地质大学教授用AI写论文?忘删GPT提示词引发学术界争论,AI到底是福还是祸?

中国地质大学一名教授在国外期刊公开发表的SCI论文&#xff0c;被发现有ChatGPT常见的提示词&#xff0c;引来使用AI代写论文的质疑。 这篇论文发表在英文国际学术期刊《Surfaces and interfaces》&#xff0c;影响因子在6.2以上&#xff0c;单篇发稿价格在2360美元&#xff0…

Gitlab CI---could not read username for xxx: no such device or address

0 Preface/Foreword 项目开发中&#xff0c;经常会使用第三方的算法或者功能&#xff0c;那么就需要把对应的repo以子模块的方式添加到当前repo中。 添加命令&#xff1a; git submodule add <URL> 1 问题表现 子模块添加成功&#xff0c;但是GitLab CI阶段&#xff…

QY-22 低功耗墒情监测站 无线 功耗低 远程实时查看

产品概述 低功耗墒情监测站基于传感、无线通信、处理与控制等物联网技术的开发&#xff0c;利用传感技术&#xff0c;通过传感器测量土壤墒情&#xff0c;并使用物联网进行传输。无需专门的通信线路&#xff0c;在联网的状态下&#xff0c;数据可快速、主动的上报到云平台&…

【C语言】内存函数(memcpy)的使用和模拟实现

目录 一、memcpy定义1.memcpy在**cplusplus**中的定义2.memcpy**复制内存块**3.参数a.目的地b.源c.数字 4.函数返回值5.函数头文件 二、memcpy的使用使用memcpy()函数完成拷贝整型数组数据 三、memcpy的模拟实现思路代码 一、memcpy定义 1.memcpy在cplusplus中的定义 链接: l…

太赞了!微信好友恢复用这6招就能找回来(2024最新)

想象一下这样的情景&#xff1a;您突然意识到自己不小心把某个重要的微信好友删除了&#xff0c;或者您的微信好友列表突然出现了空白&#xff0c;这可能会让人感到困扰。 因为微信是我们日常生活中最常用的即时通讯工具之一&#xff0c;我们与家人、朋友和同事之间的沟通几乎…

初识C++之命名空间(namespace)

初识C之入门 命名空间(namespace) 文章目录 初识C之入门 命名空间(namespace)1.为什么要有命名空间2. 命名空间 namespace使用方法3. 作用域限定符(::&#xff09;和 命名空间(namespace)4. 命名空间的定义5. 命名空间的嵌套6. 命名空间的使用7. 总结 1.为什么要有命名空间 在C…

Git命令上传本地项目至github

记录如何创建个人仓库并上传已有代码至github in MacOS环境 0. 首先下载git 方法很多 这里就不介绍了 1. Github Create a new repository 先在github上创建一个空仓库&#xff0c;用于一会儿链接项目文件&#xff0c;按照自己的需求设置name和是否private 2.push an exis…

N5230A安捷伦N5230A网络分析仪

181/2461/8938产品概述&#xff1a; Agilent N5230A 网络分析仪提供了速度和精度的卓越组合&#xff0c;用于测量多端口和平衡组件&#xff0c;例如高达 50 GHz 的滤波器、双工器和射频模块&#xff08;取决于选件&#xff09;。Agilent N5230A 分析仪的自动端口扩展功能可自动…

zabbix自定义监控进程、日志文件

zabbix自定义监控进程、日志文件 zabbix自定义监控进程 在客户端安装httpd服务 [rootnode1 ~]# yum -y install httpd [rootnode1 ~]# systemctl start httpd [rootnode1 ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Pr…

filebox在线文件管理工具V1.11.1.1查分吧修改自用版免费分享[PHP]

* 基于:https://down.chinaz.com/soft/35899.htm * 查分吧 修改自用版今日对外分享(自2016年1.10版本以来一直用他云开发:Web环境即时看效果) * 也可以用于本人很多txt/csv通用查询系统的在线管理后台管理数据 * 默认登陆账号filebox密码nidemima * 修改账号密码:21-22行;获取…

通过WSL在阿里云上部署Vue项目

参考&#xff1a; 阿里云上搭建网站-CSDN博客 云服务器重装 关闭当前运行实例 更换操作系统&#xff0c;还有其他的进入方式。 选择ubuntu系统&#xff08;和WSL使用相同的系统&#xff09;。 设置用户和密码。发送短信验证码。 新系统更新。秒速干净的新系统设置完成。 这…

es6 Class基本语法和继承

es6 Class基本语法 class的基本语法&#xff1a; ES6 的class只是一个语法糖&#xff0c;它的绝大部分功能&#xff0c;ES5 都可以做到&#xff0c;新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已 传统用构造函数生成实例 function Point(x, y) {th…

基于单片机锂电池电量检测数码管显示系统设计

**单片机设计介绍&#xff0c;基于单片机锂电池电量检测数码管显示系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机锂电池电量检测数码管显示系统设计的主要目标是实时、准确地检测锂电池的电量&#xff0c;并…

Java中变量a = 3中的3是存储在栈还是堆?

1、栈区&#xff08;stack&#xff09; 由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量的值等。 2、堆区&#xff08;heap&#xff09; 是一个可动态申请的内存空间&#xff08;其记录空闲内存空间的链表由操作系统维护&#xff09;&#xff0c;在j…

状态模式实战运用

目录 前言 UML plantuml 类图 实战代码 Form State Client 前言 通常一个完整的业务流程中&#xff0c;会经历多个阶段&#xff0c;每个阶段即一个业务状态&#xff0c;不同状态下对应这不同的业务处理逻辑。 无脑堆砌 if else 做判断然后选择对应的业务处理其实也能…

STM32使用USART发送数据包指令点亮板载LED灯

电路连接&#xff1a; 连接显示屏模块&#xff0c;显示屏的SCL在B10&#xff0c;SDA在B11。 程序目的&#xff1a; 发送LED_ON指令打开板载LED灯&#xff0c;发送LED_OFF关闭板载LED灯&#xff0c;与上一个博客不同&#xff0c;这个实际上是实现串口收发文本数据包。 …