RDSAirControlVC.m 21 KB

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