1
wei
2021-01-21 62d098cb78296feaa6f786a20748921338db838c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//
//  TuyaSmartSceneConditionModel.h
//  TuyaSmartSceneKit
//
//  Copyright (c) 2014-2021 Tuya Inc. (https://developer.tuya.com)
 
#import "TuyaSmartSceneDPModel.h"
 
#import <CoreLocation/CoreLocation.h>
 
/// The two  expression type in condition. Provide precise and simple types.
typedef NS_ENUM(NSInteger, TYSConditionExpressionType) {
    /// Precise expression type, including specific equations. eg: $dp110 == 1、$dp111 > 1000、$dp113 < 400.
    TYSConditionExpressionTypePrecise = 1,
    /// Simple expression type, excluding equation. eg: $dp112
    TYSConditionExpressionTypeSimple
};
 
/// The four status of scene condition. Provide loading, success, offline and timeout status.
typedef NS_ENUM(NSInteger, TYSceneConditionStatus) {
    /// The loading scene condition status.
    TYSceneConditionStatusLoading = 0,
    /// The success scene condition status.
    TYSceneConditionStatusSuccess,
    /// The offline scene condition status.
    TYSceneConditionStatusOffline,
    /// The timeout scene condition status.
    TYSceneConditionStatusTimeout,
};
 
/// The condition auto type.
typedef NS_ENUM(NSInteger, TYConditionAutoType) {
    /// The device auto type.
    AutoTypeDevice = 1,
    /// The whether auto type.
    AutoTypeWhether = 3,
    /// The timer auto type.
    AutoTypeTimer = 6,
    /// The pir sensor auto type.
    AutoTypePir = 7,
    /// The face recognition auto type.
    AutoTypeFaceRecognition = 9,
    /// The geo auto type.
    AutoTypeGeofence = 10,
    /// The lock member go home auto type.
    AutoTypeLockMemberGoHome = 11,
    /// The condition calculate auto type. As a bd last x hours
    AutoTypeConditionCalculate = 13,
    /// The sun set od rise timer auto type. As x minutes before sunrise.
    AutoTypeSunsetriseTimer = 16,
    /// The manual auto type. This type of condition should not be saved to server, and server will not return this type of condition neither.
    AutoTypeManual = 99,
};
 
/// @brief Condition data model for scene.
@interface TuyaSmartSceneConditionModel : NSObject<NSCoding>
 
/// The condition id.
@property (nonatomic, copy) NSString *conditionId;
 
/// The url of condition icon.
@property (nonatomic, copy) NSString *iconUrl;
 
/// The city id. If this condition is a meteorological condition, devId if this is a device condition, @"timer" if this is a timer condition.
@property (nonatomic, copy) NSString *entityId;
 
/// The city name. If this is a meteorological condition, device name if this is a device condition, @"timer" if this is a timer condition.
@property (nonatomic, copy) NSString *entityName;
 
/// The entity type. Device as condition it will be NSInteger 1, 3 for meteorological condition, 6 for timer condition, 7 for human body detector condition, 10 for  geofencing condition.
@property (nonatomic, assign) TYConditionAutoType entityType;
 
/// Description of condition, like "Switch : Open","Humidity : Comfort"
@property (nonatomic, copy) NSString *exprDisplay;
 
/// The scene id ,can be used to save the scene's Id which this action belonged to.
@property (nonatomic, copy) NSString *scenarioId;
 
/// Meteorological condition's subId or device's dpId, timer condition is "timer".
@property (nonatomic, copy) NSString *entitySubIds;
 
/// Condition's expression, like
/// ("$humidity","==","comfort") or(“$dp1”,“==”,1)
/// timer:{timeZoneId = "Asia/Shanghai",loops = "0000000",time = "08:00",date = "20180308"}
/// loops = "0000000" ,each bit representing from Sunday to Saturday.
/// Details in Doc: https://tuyainc.github.io/tuyasmart_home_ios_sdk_doc/en/resource/SmartScene.html#smart-scene
@property (nonatomic, strong) NSArray *expr;
 
/// The condition status, see TYSceneConditionStatus enum.
@property (nonatomic, assign) TYSceneConditionStatus status;
 
/// Unit of temperature, or geofence detail, {"tempUnit":"fahrenheit","Hangzhou City":"cityName"},{"center":{"latitude":30.273173191721956,"longitude":120.09600875035049},"geotitle":"xxx","radius":180.00011311593616}}.
@property (nonatomic, strong) NSDictionary *extraInfo;
 
/// If this condition is a device type condition and this device has been removed from the current account, this flag is YES.
@property (nonatomic, assign) BOOL devDelMark;
 
/// If this condition is a device type condition, and this device has been removed from the current account, then provide this icon url to display the device icon.
@property (nonatomic, copy) NSString *deleteDevIcon;
 
/// The city name
@property (nonatomic, copy) NSString *cityName;
 
/// The city latitude
@property (nonatomic, assign) CLLocationDegrees cityLatitude;
 
/// The city longitude
@property (nonatomic, assign) CLLocationDegrees cityLongitude;
 
#pragma mark - Recommend info
 
/// Recommend product id.
@property (nonatomic, copy) NSString *productId;
 
/// Recommend product icon.
@property (nonatomic, copy) NSString *productPic;
 
/// Recommend product local default icon.
@property (nonatomic, copy) NSString *defaultIconUrl;
 
#pragma mark - Expression Type
 
///The expression type for condition. see more: TYSConditionExpressionType.
///
///eg: ("$humidity","==","comfort") Indicates Precise matching mode, including (==, >, <) specific equations. It includes all the DP description types in the condition are enum, value, bool, etc. When the dp type equal enum, value, bool, you can use TYSConditionExpressionTypePrecise.
///eg: ("$dp1")Indicates simple matching mode, excluding an equation. The DP description types in the condition is only string and raw. When the dp type equal string or raw,you can use TYSConditionExpressionTypeSimple.
@property (nonatomic, assign) TYSConditionExpressionType conditionExpressionType;
 
@end