[iOS]设备 快捷开关、快捷状态、快捷操作 相关解析
Posted: 2024年 Oct 29日 17:19
1. 什么是 快捷开关、快捷状态、快捷操作
快捷开关:设备模型上的一个或多个BOOL型且可下发的 DP 值,可以被配置为快捷开关,例如台灯的开关,在UI上通常设计成一个有状态按钮,执行开关操作就是对这些 DP 值的统一改动
快捷状态:每一个快捷状态对应设备的一个只上报的dp值,比如感应器的当前温度,在UI上通常设计成一个不可操作元素
快捷操作:每一个快捷操作对应设备的一个可下发可上报的dp值,比如空调的工作模式,在UI上通常设计成一个按钮,点击出现更详细的操作等
用涂鸦智能截图说明:
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包含了彩光亮度、彩光色温、彩光饱和度,有需求的话,单列一个帖子讲解如何解析