Page 1 of 1

[iOS]设备 快捷开关、快捷状态、快捷操作 相关解析

Posted: 2024年 Oct 29日 17:19
by Akamar

1. 什么是 快捷开关、快捷状态、快捷操作

  • 快捷开关:设备模型上的一个或多个BOOL型且可下发的 DP 值,可以被配置为快捷开关,例如台灯的开关,在UI上通常设计成一个有状态按钮,执行开关操作就是对这些 DP 值的统一改动

  • 快捷状态:每一个快捷状态对应设备的一个只上报的dp值,比如感应器的当前温度,在UI上通常设计成一个不可操作元素

  • 快捷操作:每一个快捷操作对应设备的一个可下发可上报的dp值,比如空调的工作模式,在UI上通常设计成一个按钮,点击出现更详细的操作等

用涂鸦智能截图说明:

deviceDP.png

2. 快捷开关、快捷状态、快捷操作 的解析与操作

  • 引入头文件

Code: Select all

 <ThingSmartDeviceCoreKit/ThingSmartDpParser.h>
  • 生成解析处理器

Code: Select all

//targetInfo 可以是 ThingSmartDevice、ThingSmartDeviceModel、ThingSmartGroupModel、ThingSmartGroup
ThingSmartDpParser * dpParser = [ThingSmartDpParser createWithTargetInfo:targetInfo];

//  获取快捷操作
ThingSmartSwitchDp * switchDp = dpParser.switchDp;

//  获取快捷状态DP列表
NSArray<__kindof ThingSmartDp *> * displayDpList = dpParser.displayDp;

//  获取快捷操作DP列表
NSArray<__kindof ThingSmartDp *> * operableDpList = dpParser.operableDp;
  • 快捷开关相关

Code: Select all

@interface ThingSmartSwitchDp : NSObject
@property (nonatomic, assign, readonly) BOOL switchStatus;

/// Whether the switch only write but does not report style
@property (nonatomic, assign, readonly) BOOL writeOnlySwitch;

- (nullable NSDictionary *)publishSwitchCommands:(BOOL)open;
@end
  • 快捷状态可快捷操作

Code: Select all

valueDisplayWithDpValue
// 获取当前DP值的展示模型,包含值的展示,单位的展示
ThingSmartDpValueDisplay * display = [smartDp valueDisplayWithDpValue:smartDp.curDpValue];

//下发新的DP值
[smartDp publishCommands:newDpValue]

其他

  • 下期我们再讲讲设备模型json里DP的解析

  • 快捷操作DP的操作又分为 开关、数字、枚举、彩光、亮度等,可以用涂鸦智能查看样式

  • 当DP 的 smartDpType 是 ThingSmartDpType_Light 时,表示一个彩光DP,他的处理类是 ThingSmartLightDp,彩光一个DP包含了彩光亮度、彩光色温、彩光饱和度,有需求的话,单列一个帖子讲解如何解析