RDSAirControlVC.m 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623
  1. //
  2. // RDSAirControlVC.m
  3. // Temperature
  4. //
  5. // Created by RD on 2022/11/15.
  6. //
  7. #import "RDSAirControlVC.h"
  8. #import "CYCircularSlider.h"
  9. #import "RDSlider.h"
  10. #import "UIImage+Extension.h"
  11. #import "RDSCtrlModeView.h"
  12. #import "SPAlertController.h"
  13. #import "GCDTimer.h"// 轮询定时器
  14. #import "RDSRoomSetVC.h"
  15. @interface RDSAirControlVC ()<senderValueChangeDelegate,UIGestureRecognizerDelegate,UIPickerViewDataSource,UIPickerViewDelegate>
  16. // 工作模式(0:制冷,1:制热,2:除湿3:送风4:加湿)
  17. @property (nonatomic, strong) RDSCtrlModeView *modeView;
  18. @property (nonatomic, strong) UIButton *curModel;
  19. @property (weak, nonatomic) IBOutlet UIView *tempView;// 调节温度
  20. @property (nonatomic,strong) CYCircularSlider *cirSlider;// 温度圆形滑条
  21. @property (weak, nonatomic) IBOutlet UILabel *airTempLab;// 空调温度
  22. @property (weak, nonatomic) IBOutlet UILabel *modeLab;// 模式 档位
  23. @property (weak, nonatomic) IBOutlet UILabel *timingLab;// 定时
  24. @property (weak, nonatomic) IBOutlet UILabel *roomTempLab;// 室内温度
  25. @property (weak, nonatomic) IBOutlet UILabel *roomHumidityLab;// 湿度
  26. @property (weak, nonatomic) IBOutlet UILabel *roomPm25Lab;// pm2.5
  27. @property (weak, nonatomic) IBOutlet UILabel *roomCo2Lab;// co2
  28. @property (weak, nonatomic) IBOutlet RDSlider *fanSlider;// 风扇滑条
  29. @property (weak, nonatomic) IBOutlet UIButton *newairBtn;
  30. @property (weak, nonatomic) IBOutlet UIButton *powerBtn;
  31. @property (weak, nonatomic) IBOutlet UIButton *timingBtn;
  32. @property (weak, nonatomic) IBOutlet UIButton *sleepBtn;
  33. @property (nonatomic, strong) GCDTimer *gcdTimer;
  34. @property (nonatomic, strong) SPAlertController *timerAlert;
  35. @property (nonatomic, strong) NSMutableArray *timerData;// 定时picker数据源
  36. @property (nonatomic, strong) NSNumber *selectTimer;
  37. @property (strong, nonatomic) UITapGestureRecognizer *fanTap;
  38. @end
  39. @implementation RDSAirControlVC
  40. - (void)viewDidLoad {
  41. [super viewDidLoad];
  42. // Do any additional setup after loading the view from its nib.
  43. //当前页面禁用全屏右滑返回
  44. self.fd_interactivePopDisabled = YES;
  45. self.navigationItem.title = _roomModel.name;
  46. [self p_initUI];
  47. [self p_navEditItem];
  48. [self p_setUpTimer];// 初始化轮询
  49. _fanTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(p_onSliderTap:)];
  50. _fanTap.delegate = self;
  51. [self.fanSlider addGestureRecognizer:_fanTap];
  52. }
  53. - (void)viewDidDisappear:(BOOL)animated{
  54. [super viewDidDisappear:animated];
  55. [_gcdTimer pauseTimer];// 暂停轮询
  56. }
  57. - (void)p_navEditItem{
  58. UIBarButtonItem *item = [RDSBarButtonItem barButtonItemWithImage:@"icon_edit" target:self action:@selector(onEditAction)];
  59. [self.navigationItem setRightBarButtonItem:item];
  60. }
  61. - (void)p_initUI{
  62. [self p_setupModeView];
  63. // UIImage *greenImg = [UIImage rds_imageWithColor:RDSGreenColor];
  64. // UIImage *lightGreenImg = [UIImage rds_imageWithColor:RDSLightGreenColor];
  65. //
  66. // [_newairBtn setBackgroundImage:lightGreenImg forState:UIControlStateNormal];
  67. // [_powerBtn setBackgroundImage:lightGreenImg forState:UIControlStateNormal];
  68. // [_timingBtn setBackgroundImage:lightGreenImg forState:UIControlStateNormal];
  69. //
  70. //
  71. // [_newairBtn setBackgroundImage:greenImg forState:UIControlStateSelected];
  72. // [_powerBtn setBackgroundImage:greenImg forState:UIControlStateSelected];
  73. // [_timingBtn setBackgroundImage:greenImg forState:UIControlStateSelected];
  74. CGFloat width = 220;
  75. _cirSlider =[[CYCircularSlider alloc]initWithFrame:CGRectMake((246 - width) / 2, (246 - width) / 2, width, width)];
  76. _cirSlider.delegate = self;
  77. _cirSlider.backgroundColor = UIColor.clearColor;
  78. _cirSlider.filledColor = RDSGreenColor;
  79. _cirSlider.unfilledColor = RDSLightGreenColor;
  80. _cirSlider.lineWidth = 20;
  81. _cirSlider.minimumValue = 16;
  82. _cirSlider.maximumValue = 30;
  83. _cirSlider.value = 28;
  84. [self.tempView addSubview:_cirSlider];
  85. _fanSlider.minimumTrackTintColor = RDSGreenColor;
  86. [_fanSlider setThumbImage:[UIImage imageNamed:@"icon_point"] forState:UIControlStateNormal];
  87. [_fanSlider setThumbImage:[UIImage imageNamed:@"icon_point"] forState:UIControlStateHighlighted];
  88. // UIBezierPath *path = [UIBezierPath bezierPath];
  89. //
  90. // CAShapeLayer *shapeLayer = [CAShapeLayer layer];
  91. // shapeLayer.frame = CGRectMake(11, 4, 12, 6);
  92. // shapeLayer.path = path.CGPath;
  93. // shapeLayer.strokeColor = [UIColor grayColor].CGColor;
  94. // shapeLayer.fillColor = [UIColor whiteColor].CGColor;
  95. //
  96. // [self.fanSlider.layer insertSublayer:shapeLayer atIndex:0];
  97. //
  98. //循环创建(自己加个循环就好了) offset 计算每个分段的距离
  99. // CGFloat offset = _fanSlider.rds_width/5.0;
  100. // UIBezierPath *linePath = [UIBezierPath bezierPath];
  101. // [linePath moveToPoint:CGPointMake(offset * 1 , 0)];
  102. // [linePath addLineToPoint:CGPointMake(offset * 1 , 6)];
  103. //
  104. // CAShapeLayer *lineLayer = [CAShapeLayer layer];
  105. // lineLayer.path = linePath.CGPath;
  106. // lineLayer.strokeColor = [UIColor whiteColor].CGColor;
  107. // lineLayer.fillColor = [UIColor clearColor].CGColor;
  108. // [shapeLayer insertSublayer:lineLayer atIndex:0];
  109. }
  110. // cirSlider delegate
  111. - (void)senderVlueChangingWithNum:(int)num{
  112. _airTempLab.text = @(num).description;
  113. }
  114. - (void)senderVlueWithNum:(int)num{
  115. [self setTemp];
  116. }
  117. - (void)p_setupModeView{
  118. CGFloat viewW = (SCREEN_WIDTH-20*6)/5;// 一行显示4个,算上左右2边空白,共5个间隔
  119. RDSCtrlModeView *modeView = [[RDSCtrlModeView alloc] init];
  120. self.modeView = modeView;
  121. [self.view addSubview:modeView];
  122. [modeView mas_makeConstraints:^(MASConstraintMaker *make) {
  123. if (@available(iOS 11.0, *)) {
  124. make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop).with.offset(10);
  125. } else {
  126. make.top.equalTo(self.view).offset(10);
  127. }
  128. make.height.equalTo(@(viewW));
  129. make.left.equalTo(self.view);//.offset(10);
  130. make.right.equalTo(self.view);//.offset(-10);
  131. }];
  132. RDS_WEAKSELF(weakSelf)
  133. modeView.onModeClick = ^(int mode) {
  134. [weakSelf onModeAction:mode];
  135. };
  136. }
  137. #pragma mark - Action 设备控制
  138. - (void)onEditAction{
  139. RDSRoomSetVC *vc = [[RDSRoomSetVC alloc] init];
  140. vc.roomModel = _roomModel;
  141. [self pushViewController:vc animated:YES];
  142. }
  143. // 点击模式
  144. - (void)onModeAction:(int)mode{
  145. [_gcdTimer restartTimer];// 重新开始轮询
  146. [RDSDemoApiHelper rds_setMode:mode control_number:_roomModel.control_number success:^(id responseObject) {
  147. if ([responseObject[@"code"] intValue] != 0) {
  148. [RDSHudShower showCenterToast:responseObject[@"message"]];
  149. }
  150. } failure:^(NSError *error) {
  151. [RDSHudShower showCenterToast:@"连接服务器失败"];
  152. }];
  153. }
  154. // 温度-1
  155. - (IBAction)onMovTempAction:(UIButton *)sender {
  156. if(!_roomModel.power) {
  157. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  158. return;
  159. }
  160. [_cirSlider setMovAngel];
  161. [self setTemp];
  162. }
  163. // 温度+1
  164. - (IBAction)onAddTempAction:(UIButton *)sender {
  165. if(!_roomModel.power) {
  166. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  167. return;
  168. }
  169. [_cirSlider setAddAngel];
  170. [self setTemp];
  171. }
  172. // 设置温度
  173. - (void)setTemp{
  174. [_gcdTimer restartTimer];// 重新开始轮询
  175. [RDSDemoApiHelper rds_setTemp:_cirSlider.value control_number:_roomModel.control_number success:^(id responseObject) {
  176. if ([responseObject[@"code"] intValue] != 0) {
  177. [RDSHudShower showCenterToast:responseObject[@"message"]];
  178. }
  179. } failure:^(NSError *error) {
  180. [RDSHudShower showCenterToast:@"连接服务器失败"];
  181. }];
  182. }
  183. - (IBAction)onFanSliderValueChanged:(RDSlider *)sender {
  184. if(!_roomModel.power) {
  185. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  186. return;
  187. }
  188. // 四舍五入 1~5挡位
  189. int value = round(sender.value);
  190. if (value < 1) value = 1;
  191. sender.value = value;
  192. }
  193. - (IBAction)onFanSliderValueDidChanged:(RDSlider *)sender {
  194. if(!_roomModel.power) {
  195. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  196. return;
  197. }
  198. [_gcdTimer restartTimer];// 重新开始轮询
  199. [self p_sendFanSpeed:sender.value];
  200. }
  201. - (void)p_onSliderTap:(UITapGestureRecognizer *)sender {
  202. if(!_roomModel.power) {
  203. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  204. return;
  205. }
  206. [_gcdTimer restartTimer];// 重新开始轮询
  207. UISlider *slider = (UISlider *)sender.view;
  208. CGPoint touchPoint = [sender locationInView:slider];
  209. float value = (slider.maximumValue - slider.minimumValue) * (touchPoint.x / slider.frame.size.width );
  210. int v = roundf(value);
  211. if (v<1) v = 1;
  212. [slider setValue:v animated:YES];
  213. [self p_sendFanSpeed:v];
  214. }
  215. - (void)p_sendFanSpeed:(int)value{
  216. [RDSDemoApiHelper rds_setSpeed:value control_number:_roomModel.control_number success:^(id responseObject) {
  217. if ([responseObject[@"code"] intValue] != 0) {
  218. [RDSHudShower showBottomToast:responseObject[@"message"]];
  219. }
  220. } failure:^(NSError *error) {
  221. [RDSHudShower showBottomToast:@"连接服务器失败"];
  222. }];
  223. }
  224. // 新风开关
  225. - (IBAction)onNewAirPowerAction:(UIButton *)sender {
  226. if(!_roomModel.power) {
  227. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  228. return;
  229. }
  230. [_gcdTimer restartTimer];// 重新开始轮询
  231. sender.selected = !sender.isSelected;
  232. [RDSDemoApiHelper rds_setNewFanPower:sender.isSelected control_number:_roomModel.control_number success:^(id responseObject) {
  233. if ([responseObject[@"code"] intValue] != 0) {
  234. [RDSHudShower showCenterToast:responseObject[@"message"]];
  235. }
  236. } failure:^(NSError *error) {
  237. [RDSHudShower showCenterToast:@"连接服务器失败"];
  238. }];
  239. }
  240. // 开关
  241. - (IBAction)onPowerAction:(UIButton *)sender {
  242. [_gcdTimer restartTimer];// 重新开始轮询
  243. sender.selected = !sender.isSelected;
  244. if(sender.isSelected){
  245. [_modeView setMode:_roomModel.mode];
  246. }
  247. [RDSDemoApiHelper rds_setPower:sender.isSelected control_number:_roomModel.control_number success:^(id responseObject) {
  248. if ([responseObject[@"code"] intValue] != 0) {
  249. [RDSHudShower showCenterToast:responseObject[@"message"]];
  250. }
  251. } failure:^(NSError *error) {
  252. [RDSHudShower showCenterToast:@"连接服务器失败"];
  253. }];
  254. }
  255. - (IBAction)onSleepAction:(UIButton *)sender {
  256. if(!_roomModel.power) {
  257. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  258. return;
  259. }
  260. [_gcdTimer restartTimer];// 重新开始轮询
  261. sender.selected = !sender.isSelected;
  262. [RDSDemoApiHelper rds_setSleepPower:sender.isSelected control_number:_roomModel.control_number success:^(id responseObject) {
  263. if ([responseObject[@"code"] intValue] != 0) {
  264. [RDSHudShower showCenterToast:responseObject[@"message"]];
  265. }
  266. } failure:^(NSError *error) {
  267. [RDSHudShower showCenterToast:@"连接服务器失败"];
  268. }];
  269. }
  270. // 定时
  271. - (IBAction)onTimingAction:(UIButton *)sender {
  272. if(!_roomModel.power) {
  273. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  274. return;
  275. }
  276. if(!sender.isSelected){
  277. if(_selectTimer == nil || _selectTimer.floatValue == 0){
  278. _selectTimer = @0.5;
  279. }
  280. [self presentViewController:self.timerAlert animated:YES completion:nil];
  281. }else{
  282. if(_selectTimer == nil){
  283. _selectTimer = @0;
  284. }
  285. [self timerSelect];
  286. }
  287. }
  288. - (SPAlertController *)timerAlert{
  289. if (!_timerAlert){
  290. RDS_WEAKSELF(weakSelf)
  291. SPAlertController *alertController = [SPAlertController alertControllerWithTitle:@"定时关闭" message:@"" preferredStyle:SPAlertControllerStyleAlert animationType:SPAlertAnimationTypeDefault];
  292. UIPickerView *timerPick = [[UIPickerView alloc] init];
  293. timerPick.delegate = self;
  294. timerPick.dataSource = self;
  295. NSMutableArray *data = [NSMutableArray array];
  296. for (CGFloat i = 0.5; i<=24; i+=0.5) {
  297. [data addObject:@(i)];
  298. }
  299. self.timerData = data;
  300. _selectTimer = @(0.5);
  301. [timerPick selectRow:0 inComponent:0 animated:NO];
  302. UILabel *h = [[UILabel alloc] initWithFrame:CGRectMake(timerPick.rds_centerX+15, timerPick.rds_centerY-10, 20, 20)];
  303. h.text = @"h";
  304. h.textColor = RDSGreenColor;
  305. h.font = [UIFont systemFontOfSize:18];
  306. [timerPick addSubview:h];
  307. // 插入一个view
  308. [alertController insertComponentView:timerPick];
  309. SPAlertAction *action1 = [SPAlertAction actionWithTitle:@"取消" style:SPAlertActionStyleDefault handler:nil];
  310. SPAlertAction *action2 = [SPAlertAction actionWithTitle:@"确定" style:SPAlertActionStyleDefault handler:^(SPAlertAction * _Nonnull action) {
  311. [weakSelf timerSelect];
  312. }];
  313. [alertController addAction:action1];
  314. [alertController addAction:action2];
  315. _timerAlert = alertController;
  316. }
  317. return _timerAlert;
  318. }
  319. - (void)timerSelect{
  320. [_gcdTimer restartTimer];// 重新开始轮询
  321. _timingBtn.selected = !_timingBtn.isSelected;
  322. NSString *timingStr;
  323. NSString *selectTimer = [NSString stringWithFormat:@"%@h",_selectTimer];
  324. timingStr = _timingBtn.isSelected ? selectTimer : @"关";
  325. _timingLab.text = [NSString stringWithFormat:@"定时:%@",timingStr];
  326. [RDSDemoApiHelper rds_setTimer:_selectTimer onOff:_timingBtn.isSelected control_number:_roomModel.control_number success:^(id responseObject) {
  327. if ([responseObject[@"code"] intValue] != 0) {
  328. [RDSHudShower showCenterToast:responseObject[@"message"]];
  329. }
  330. } failure:^(NSError *error) {
  331. [RDSHudShower showCenterToast:@"连接服务器失败"];
  332. }];
  333. }
  334. #pragma mark pickerView delegate
  335. //滚动选中的行
  336. -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
  337. _selectTimer = _timerData[row];
  338. }
  339. //每行显示的内容
  340. -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
  341. CGFloat fHour = [_timerData[row] floatValue];
  342. NSString *str = [NSString stringWithFormat:@"%.1f",fHour];
  343. return str;
  344. }
  345. //列宽
  346. //-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{
  347. //
  348. // return 100;
  349. //}
  350. #pragma mark pickerView dataSource
  351. // 多少组
  352. -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
  353. return 1;
  354. }
  355. // 行
  356. -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
  357. return _timerData.count;
  358. }
  359. //- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
  360. //
  361. // UILabel *lbl = (UILabel *)view;
  362. //
  363. // if (lbl == nil) {
  364. // lbl = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
  365. // //在这里设置字体相关属性
  366. // lbl.font = [UIFont systemFontOfSize:22];
  367. // lbl.textColor = RDSGreenColor;
  368. // lbl.textAlignment = NSTextAlignmentCenter;
  369. // [lbl setBackgroundColor:[UIColor clearColor]];
  370. // }
  371. // //重新加载lbl的文字内容
  372. // lbl.text = [self pickerView:pickerView titleForRow:row forComponent:component];
  373. //
  374. // // 去掉选中行背景灰色
  375. // if(pickerView.subviews.count > 0){
  376. // pickerView.subviews[1].backgroundColor = UIColor.clearColor;
  377. // }
  378. //
  379. // return lbl;
  380. //
  381. //}
  382. #pragma mark - 轮询
  383. // 轮询设备状态 3秒一次
  384. - (void)p_setUpTimer{
  385. self.gcdTimer = [[GCDTimer alloc] init];
  386. RDS_WEAKSELF(weakSelf)
  387. [_gcdTimer scheduledTimerWithTimeInterval:3 afterTime:0 repeats:YES block:^{
  388. [weakSelf p_getRoomDetail];
  389. }];
  390. }
  391. - (void)p_getRoomDetail{
  392. RDS_WEAKSELF(weakSelf)
  393. [self.roomModel rds_getRoomDetailFinished:^(NSError * error) {
  394. [weakSelf p_refreshUI];
  395. }];
  396. }
  397. // 接口返回数据不正确 弃用
  398. - (void)p_getRoomStatus{
  399. RDS_WEAKSELF(weakSelf)
  400. [self.roomModel rds_getRoomStatusFinished:^(NSError * error) {
  401. [weakSelf p_refreshUI];
  402. }];
  403. }
  404. - (void)p_refreshUI{
  405. RDS_WEAKSELF(weakSelf)
  406. dispatch_async(dispatch_get_main_queue(), ^{
  407. // 用户拖动的时候不刷新
  408. if(!weakSelf.cirSlider.isTouchInside){
  409. weakSelf.cirSlider.value = weakSelf.roomModel.set_temp;
  410. weakSelf.airTempLab.text = @(weakSelf.roomModel.set_temp).description;
  411. }
  412. if (!weakSelf.fanSlider.isTouchInside){
  413. [weakSelf.fanSlider setValue:weakSelf.roomModel.fan_speed animated:YES];
  414. }
  415. [weakSelf.modeView setMode:weakSelf.roomModel.mode];
  416. weakSelf.roomTempLab.text = [NSString stringWithFormat:@"%d℃", weakSelf.roomModel.temperature];
  417. weakSelf.roomHumidityLab.text = [NSString stringWithFormat:@"%d%%", weakSelf.roomModel.humidity];
  418. weakSelf.roomPm25Lab.text = [NSString stringWithFormat:@"%d", weakSelf.roomModel.air_quality];
  419. weakSelf.roomCo2Lab.text = [NSString stringWithFormat:@"%d", weakSelf.roomModel.co2];
  420. weakSelf.powerBtn.selected = weakSelf.roomModel.power;
  421. weakSelf.newairBtn.selected = weakSelf.roomModel.new_fan;
  422. weakSelf.timingBtn.selected = weakSelf.roomModel.timer_status;
  423. weakSelf.sleepBtn.selected = weakSelf.roomModel.sleep_mode;
  424. NSString *mode;
  425. switch (weakSelf.roomModel.mode) {
  426. case 0:
  427. mode = @"制冷";
  428. break;
  429. case 1:
  430. mode = @"制热";
  431. break;
  432. case 2:
  433. mode = @"除湿";
  434. break;
  435. case 3:
  436. mode = @"送风";
  437. break;
  438. case 4:
  439. mode = @"加湿";
  440. break;
  441. default:
  442. break;
  443. }
  444. NSString *speed;
  445. switch (weakSelf.roomModel.fan_speed) {
  446. case 1:
  447. speed = @"一档";
  448. break;
  449. case 2:
  450. speed = @"二档";
  451. break;
  452. case 3:
  453. speed = @"三档";
  454. break;
  455. case 4:
  456. speed = @"四档";
  457. break;
  458. case 5:
  459. speed = @"五档";
  460. break;
  461. default:
  462. break;
  463. }
  464. weakSelf.modeLab.text = [NSString stringWithFormat:@"%@ %@", mode, speed];
  465. NSString *selectTimer = [NSString stringWithFormat:@"%@h",weakSelf.roomModel.duration];
  466. if (!weakSelf.roomModel.timer_status) selectTimer = @"关";
  467. weakSelf.timingLab.text = [NSString stringWithFormat:@"定时:%@",selectTimer];
  468. });
  469. }
  470. - (void)dealloc{
  471. [_gcdTimer stopTimer];;
  472. DDLog(@"dealloc~~");
  473. }
  474. @end