ItemModel.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. //
  2. // ItemModel.h
  3. // kneet
  4. //
  5. // Created by Jason Lee on 4/1/15.
  6. // Copyright (c) 2015 ntels. All rights reserved.
  7. //
  8. #import "JDJSONModel.h"
  9. typedef NS_ENUM(NSInteger, CmdClsType) {
  10. CmdClsTypeFirmwareVersion = 0,
  11. CmdClsTypeSwitchBinary, //1
  12. CmdClsTypeSwitchMultiLevel,
  13. CmdClsTypeSwitchColor,
  14. CmdClsTypeSensorBinary,
  15. CmdClsTypeSensorMultiLevel, //5
  16. CmdClsTypeThermostatMode,
  17. CmdClsTypeThermostatFanMode,
  18. CmdClsTypeThermostatSetPoint, //hold
  19. CmdClsTypeLock,
  20. CmdClsTypeMeterCurrent,
  21. CmdClsTypeMeterTotal,
  22. CmdClsTypeAVControlPlayback, //12
  23. CmdClsTypeHomeMode,
  24. CmdClsTypeSpeedControl,
  25. CmdClsTypeMeterCurrentForDAWON, //15
  26. CmdClsTypeMeterTotalForDAWON,
  27. CmdClsTypeValve,
  28. CmdClsTypeBattery,
  29. CmdClsTypeDeviceStatus, //19
  30. CmdClsTypePresence,
  31. CmdClsTypeSystem,
  32. CmdClsTypeMeter
  33. };
  34. #define ksItemSubTypeCodeDevice @"01"
  35. #define ksItemSubTypeCodeMode @"02"
  36. #define ksItemSubTypeCodeAppPush @"03"
  37. #define ksItemSubTypeCodeTimer @"05"
  38. #define ksItemSubTypeCodeGeoFencing @"06"
  39. #define ksItemSubTypeCodeHeat @"31"
  40. #define ksItemSubTypeCodeDaylight @"32"
  41. #define ksItemTypeCodeTrigger @"01"
  42. #define ksItemTypeCodeAction @"02"
  43. #define ksItemTypeCodeCondition @"03"
  44. #define ksConditionSubTypeCodeDueDate @"21"
  45. #define ksConditionSubTypeCodeDaysOfWeek @"22"
  46. #define ksConditionSubTypeCodeDueTime @"23"
  47. #define ksConditionSubTypeCodeHomeMode @"02"
  48. #define ksConditionSubTypeCodeExternHeat @"31"
  49. #define ksConditionTypeCodeGreatOrEqual @"05"
  50. #define ksConditionTypeCodeLessOrEqual @"03"
  51. #define ksCmdClassTypeFirmwareVersion @"FIRMWARE_VERSION"
  52. #define ksCmdClassTypeSwitchBinary @"SWITCH_BINARY"
  53. #define ksCmdClassTypeSwitchMultiLevel @"SWITCH_MULTILEVEL"
  54. #define ksCmdClassTypeSwitchColor @"SWITCH_COLOR"
  55. #define ksCmdClassTypeSensorBinary @"SENSOR_BINARY"
  56. #define ksCmdClassTypeSensorMultiLevel @"SENSOR_MULTILEVEL"
  57. #define ksCmdClassTypeThermostatMode @"THERMOSTAT_MODE"
  58. #define ksCmdClassTypeThermostatFanMode @"THERMOSTAT_FAN_MODE"
  59. #define ksCmdClassTypeThermostatSetPoint @"THERMOSTAT_SETPOINT"
  60. #define ksCmdClassTypeLock @"LOCK"
  61. #define ksCmdClassTypeMeterCurrent @"METER_CURRENT"
  62. #define ksCmdClassTypeMeterTotal @"METER_TOTAL"
  63. #define ksCmdClassTypeAVControlPlayback @"AV_CONTROL_PLAYBACK"
  64. #define ksCmdClassTypeHomeMode @"HOME_MODE"
  65. #define ksCmdClassTypeSpeedControl @"SPEED_CONTROL"
  66. #define ksCmdClassTypeValve @"VALVE"
  67. #define ksCmdClassTypeBattery @"BATTERY"
  68. #define ksCmdClassTypeDeviceStatus @"DEVICE_STATUS"
  69. #define ksCmdClassTypePresence @"PRESENCE"
  70. #define ksCmdClassTypeSystem @"SYSTEM"
  71. #define ksCmdClassTypeMeter @"METER"
  72. @protocol ItemModel;
  73. @protocol ItemSubModel;
  74. @protocol ModeModel;
  75. @protocol DeviceModel;
  76. @protocol CmdClsValueModel;
  77. @interface CmdClsValueModel : JDJSONModel
  78. @property (copy, nonatomic) NSString *cmdclsValue;
  79. @property (copy, nonatomic) NSString *cmdclsValueMsg;
  80. @property (assign, nonatomic) BOOL isSelected;
  81. //local
  82. @property (strong, nonatomic) NSString *localizedCmdClsValueMsg;
  83. @end
  84. @interface ItemSubModel : JDJSONModel {//subCondition
  85. @protected
  86. NSString *_cmdclsTypeId;
  87. NSString *_cmdclsValueMsg;
  88. NSArray<CmdClsValueModel> *_cmdclsValueList;
  89. NSString *_unit;
  90. }
  91. //@property (copy, nonatomic) NSString *itemSubTypeCode;
  92. @property (copy, nonatomic) NSString *subSequence;
  93. @property (copy, nonatomic) NSString *sourceId;
  94. @property (copy, nonatomic) NSString *sourceSubId;
  95. @property (copy, nonatomic) NSString *conditionTypeCode;
  96. @property (copy, nonatomic) NSString *sourceName;
  97. @property (copy, nonatomic) NSString *sourceSubName;
  98. @property (copy, nonatomic) NSString *actionTypeCode;
  99. @property (copy, nonatomic) NSString *cmdclsCode;
  100. @property (assign, nonatomic, readonly) CmdClsType cmdclsType;
  101. @property (copy, nonatomic) NSString *cmdclsTypeId;
  102. @property (copy, nonatomic) NSString *cmdclsTypeName;
  103. @property (copy, nonatomic) NSString *cmdclsTypeSystemName;
  104. @property (copy, nonatomic) NSString *cmdclsValue;
  105. @property (copy, nonatomic) NSString *cmdclsValueMsg;
  106. @property (copy, nonatomic) NSString *onlineState;
  107. //predefine devices property
  108. @property (copy, nonatomic) NSString *controlMinValue;
  109. @property (copy, nonatomic) NSString *controlMaxValue;
  110. @property (copy, nonatomic) NSString *controlStep;
  111. @property (copy, nonatomic) NSString *unit;
  112. @property (copy, nonatomic) NSString *dataTypeCode;
  113. @property (copy, nonatomic) NSString *deleteYn;
  114. @property (copy, nonatomic) NSString *imageFileName;
  115. @property (copy, nonatomic) NSString *hour;
  116. @property (copy, nonatomic) NSString *minute;
  117. @property (copy, nonatomic) NSString *dayofweek;
  118. @property (copy, nonatomic) NSString *nickname;
  119. @property (copy, nonatomic) NSString *predCmdclsValue;
  120. //Command - things, modes
  121. @property (copy, nonatomic) NSString *status;
  122. @property (strong, nonatomic) NSMutableArray<ItemModel> *conditions;
  123. @property (copy, nonatomic) NSArray<CmdClsValueModel> *cmdclsValueList;
  124. @property (assign, nonatomic, readonly) NSInteger cmdclsValueMsgLength;
  125. @property (strong, nonatomic) NSString<Ignore> *cmdclsValueMsgLongest;
  126. //flash
  127. @property (copy, nonatomic) NSString<Ignore> *dueDate;
  128. //@property (copy, nonatomic) NSString<Ignore> *daysOfWeek;
  129. @property (copy, nonatomic) NSString<Ignore> *dueTime;
  130. @property (copy, nonatomic) NSString<Ignore> *homeModes;
  131. @property (copy, nonatomic) NSString<Ignore> *externHeat;
  132. @property (copy, nonatomic) NSString<Ignore> *daysOfWeekValue;
  133. //- (NSString *)cmdclsValueMsg:(NSString *)cmdclsValue;
  134. //local transition
  135. @property (assign, nonatomic, readonly) BOOL isOnline;
  136. @end
  137. @protocol PredefinedDeviceModel;
  138. @interface ItemModel : JDJSONModel //condition
  139. @property (copy, nonatomic) NSString *predItemSequence;
  140. @property (copy, nonatomic) NSString *itemTypeCode;
  141. @property (copy, nonatomic) NSString *itemSubTypeCode;
  142. @property (copy, nonatomic) NSString *itemName;
  143. @property (copy, nonatomic) NSString *predRuleId;
  144. @property (copy, nonatomic) NSString *predSceneId;
  145. @property (copy, nonatomic) NSString *predActionSequence;
  146. @property (copy, nonatomic) NSString *cnt;
  147. @property (copy, nonatomic) NSString *totalCnt;
  148. @property (copy, nonatomic) NSString *imageFileName;
  149. @property (copy, nonatomic) NSString *sourceId;
  150. @property (copy, nonatomic) NSString *sourceName;
  151. @property (copy, nonatomic) NSString *imageFileViewName;
  152. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *subItems;
  153. //for register
  154. @property (strong, nonatomic) NSMutableArray<PredefinedDeviceModel> *predDevices;
  155. @property (strong, nonatomic) NSMutableArray<ModeModel> *modes;
  156. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *pushes;
  157. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *timers;
  158. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *daylights;
  159. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *heats;
  160. @property (strong, nonatomic) NSMutableArray<DeviceModel> *mobileDevices;
  161. //fuction
  162. @property (assign, nonatomic, readonly) NSInteger sumPredDeviceCount;
  163. @property (assign, nonatomic, readonly) NSInteger sumModesCount;
  164. @property (assign, nonatomic, readonly) NSInteger sumPushesCount;
  165. + (NSString *)itemSubTypeString:(NSString *)itemSubTypeCode;
  166. @end
  167. @interface ItemListModel : JDJSONModel
  168. @property (copy, nonatomic) NSMutableArray<ItemModel> *list;
  169. @end
  170. @interface ItemSubListModel : JDJSONModel
  171. @property (copy, nonatomic) NSMutableArray<ItemSubModel> *list;
  172. @end