RDSAirControlVC.m 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  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"];
  146. }
  147. - (IBAction)didTapHumidity:(id)sender {
  148. [self openPageWithType:@"humidity"];
  149. }
  150. - (IBAction)didTapPm25:(id)sender {
  151. [self openPageWithType:@"pm25"];
  152. }
  153. - (IBAction)didTapCo2:(id)sender {
  154. [self openPageWithType:@"co2"];
  155. }
  156. - (void)openPageWithType:(NSString *)type {
  157. NSString *urlStr = [NSString stringWithFormat:@"%@/#/DataChart/%@/%@", kBaseUrlHeadImg, self.roomModel.record_id, type];
  158. RDSUserProtocolViewController *vc = [[RDSUserProtocolViewController alloc] init];
  159. vc.url = urlStr;
  160. [self pushViewController:vc animated:YES];
  161. }
  162. #pragma mark - Action 设备控制
  163. - (void)onEditAction:(UIButton *)button {
  164. [YBPopupMenu showRelyOnView:button titles:@[@"编辑名称", @"设备信息"] icons:@[@"menu_edit", @"menu_info"] menuWidth:150 otherSettings:^(YBPopupMenu *popupMenu) {
  165. popupMenu.delegate = self;
  166. popupMenu.animationManager.duration = 0.25;
  167. popupMenu.textColor = [UIColor colorWithHexString:@"#333333"];
  168. }];
  169. }
  170. #pragma mark - YPPopupMenuDelegate
  171. - (void)ybPopupMenu:(YBPopupMenu *)ybPopupMenu didSelectedAtIndex:(NSInteger)index {
  172. if (index == 0) {
  173. // 编辑名称
  174. RDSRoomSetVC *vc = [[RDSRoomSetVC alloc] init];
  175. vc.roomModel = _roomModel;
  176. [self pushViewController:vc animated:YES];
  177. return;
  178. }
  179. RDSUserProtocolViewController *vc = [[RDSUserProtocolViewController alloc] init];
  180. vc.url = [NSString stringWithFormat:@"%@/#/DeviceInfo/%@", kBaseUrlHeadImg, self.roomModel.record_id];
  181. [self pushViewController:vc animated:YES];
  182. }
  183. // 点击模式
  184. - (void)onModeAction:(int)mode{
  185. [_gcdTimer restartTimer];// 重新开始轮询
  186. [RDSDemoApiHelper rds_setMode:mode control_number:_roomModel.control_number success:^(id responseObject) {
  187. if ([responseObject[@"code"] intValue] != 0) {
  188. [RDSHudShower showCenterToast:responseObject[@"message"]];
  189. }
  190. } failure:^(NSError *error) {
  191. [RDSHudShower showCenterToast:@"连接服务器失败"];
  192. }];
  193. }
  194. // 温度-1
  195. - (IBAction)onMovTempAction:(UIButton *)sender {
  196. if(!_roomModel.power) {
  197. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  198. return;
  199. }
  200. [_cirSlider setMovAngel];
  201. [self setTemp];
  202. }
  203. // 温度+1
  204. - (IBAction)onAddTempAction:(UIButton *)sender {
  205. if(!_roomModel.power) {
  206. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  207. return;
  208. }
  209. [_cirSlider setAddAngel];
  210. [self setTemp];
  211. }
  212. // 设置温度
  213. - (void)setTemp{
  214. [_gcdTimer restartTimer];// 重新开始轮询
  215. [RDSDemoApiHelper rds_setTemp:_cirSlider.value control_number:_roomModel.control_number success:^(id responseObject) {
  216. if ([responseObject[@"code"] intValue] != 0) {
  217. [RDSHudShower showCenterToast:responseObject[@"message"]];
  218. }
  219. } failure:^(NSError *error) {
  220. [RDSHudShower showCenterToast:@"连接服务器失败"];
  221. }];
  222. }
  223. - (IBAction)onFanSliderValueChanged:(RDSlider *)sender {
  224. if(!_roomModel.power) {
  225. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  226. return;
  227. }
  228. // 四舍五入 1~5挡位
  229. int value = round(sender.value);
  230. if (value < 1) value = 1;
  231. sender.value = value;
  232. }
  233. - (IBAction)onFanSliderValueDidChanged:(RDSlider *)sender {
  234. if(!_roomModel.power) {
  235. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  236. return;
  237. }
  238. [_gcdTimer restartTimer];// 重新开始轮询
  239. [self p_sendFanSpeed:sender.value];
  240. }
  241. - (void)p_onSliderTap:(UITapGestureRecognizer *)sender {
  242. if(!_roomModel.power) {
  243. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  244. return;
  245. }
  246. [_gcdTimer restartTimer];// 重新开始轮询
  247. UISlider *slider = (UISlider *)sender.view;
  248. CGPoint touchPoint = [sender locationInView:slider];
  249. float value = (slider.maximumValue - slider.minimumValue) * (touchPoint.x / slider.frame.size.width );
  250. int v = roundf(value);
  251. if (v<1) v = 1;
  252. [slider setValue:v animated:YES];
  253. [self p_sendFanSpeed:v];
  254. }
  255. - (void)p_sendFanSpeed:(int)value{
  256. [RDSDemoApiHelper rds_setSpeed:value control_number:_roomModel.control_number success:^(id responseObject) {
  257. if ([responseObject[@"code"] intValue] != 0) {
  258. [RDSHudShower showBottomToast:responseObject[@"message"]];
  259. }
  260. } failure:^(NSError *error) {
  261. [RDSHudShower showBottomToast:@"连接服务器失败"];
  262. }];
  263. }
  264. // 新风开关
  265. - (IBAction)onNewAirPowerAction:(UIButton *)sender {
  266. if(!_roomModel.power) {
  267. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  268. return;
  269. }
  270. [_gcdTimer restartTimer];// 重新开始轮询
  271. sender.selected = !sender.isSelected;
  272. [RDSDemoApiHelper rds_setNewFanPower:sender.isSelected control_number:_roomModel.control_number success:^(id responseObject) {
  273. if ([responseObject[@"code"] intValue] != 0) {
  274. [RDSHudShower showCenterToast:responseObject[@"message"]];
  275. }
  276. } failure:^(NSError *error) {
  277. [RDSHudShower showCenterToast:@"连接服务器失败"];
  278. }];
  279. }
  280. // 开关
  281. - (IBAction)onPowerAction:(UIButton *)sender {
  282. [_gcdTimer restartTimer];// 重新开始轮询
  283. sender.selected = !sender.isSelected;
  284. if(sender.isSelected){
  285. [_modeView setMode:_roomModel.mode];
  286. }
  287. [RDSDemoApiHelper rds_setPower:sender.isSelected control_number:_roomModel.control_number success:^(id responseObject) {
  288. if ([responseObject[@"code"] intValue] != 0) {
  289. [RDSHudShower showCenterToast:responseObject[@"message"]];
  290. }
  291. } failure:^(NSError *error) {
  292. [RDSHudShower showCenterToast:@"连接服务器失败"];
  293. }];
  294. }
  295. - (IBAction)onSleepAction:(UIButton *)sender {
  296. if(!_roomModel.power) {
  297. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  298. return;
  299. }
  300. [_gcdTimer restartTimer];// 重新开始轮询
  301. sender.selected = !sender.isSelected;
  302. [RDSDemoApiHelper rds_setSleepPower:sender.isSelected control_number:_roomModel.control_number success:^(id responseObject) {
  303. if ([responseObject[@"code"] intValue] != 0) {
  304. [RDSHudShower showCenterToast:responseObject[@"message"]];
  305. }
  306. } failure:^(NSError *error) {
  307. [RDSHudShower showCenterToast:@"连接服务器失败"];
  308. }];
  309. }
  310. // 定时
  311. - (IBAction)onTimingAction:(UIButton *)sender {
  312. if(!_roomModel.power) {
  313. [RDSHudShower showCenterToast:@"请先开机再进行其他操作"];
  314. return;
  315. }
  316. if(!sender.isSelected){
  317. if(_selectTimer == nil || _selectTimer.floatValue == 0){
  318. _selectTimer = @0.5;
  319. }
  320. [self presentViewController:self.timerAlert animated:YES completion:nil];
  321. }else{
  322. if(_selectTimer == nil){
  323. _selectTimer = @0;
  324. }
  325. [self timerSelect];
  326. }
  327. }
  328. - (SPAlertController *)timerAlert{
  329. if (!_timerAlert){
  330. RDS_WEAKSELF(weakSelf)
  331. SPAlertController *alertController = [SPAlertController alertControllerWithTitle:@"定时关闭" message:@"" preferredStyle:SPAlertControllerStyleAlert animationType:SPAlertAnimationTypeDefault];
  332. UIPickerView *timerPick = [[UIPickerView alloc] init];
  333. timerPick.delegate = self;
  334. timerPick.dataSource = self;
  335. NSMutableArray *data = [NSMutableArray array];
  336. for (CGFloat i = 0.5; i<=24; i+=0.5) {
  337. [data addObject:@(i)];
  338. }
  339. self.timerData = data;
  340. _selectTimer = @(0.5);
  341. [timerPick selectRow:0 inComponent:0 animated:NO];
  342. UILabel *h = [[UILabel alloc] initWithFrame:CGRectMake(timerPick.rds_centerX+15, timerPick.rds_centerY-10, 20, 20)];
  343. h.text = @"h";
  344. h.textColor = RDSGreenColor;
  345. h.font = [UIFont systemFontOfSize:18];
  346. [timerPick addSubview:h];
  347. // 插入一个view
  348. [alertController insertComponentView:timerPick];
  349. SPAlertAction *action1 = [SPAlertAction actionWithTitle:@"取消" style:SPAlertActionStyleDefault handler:nil];
  350. SPAlertAction *action2 = [SPAlertAction actionWithTitle:@"确定" style:SPAlertActionStyleDefault handler:^(SPAlertAction * _Nonnull action) {
  351. [weakSelf timerSelect];
  352. }];
  353. [alertController addAction:action1];
  354. [alertController addAction:action2];
  355. _timerAlert = alertController;
  356. }
  357. return _timerAlert;
  358. }
  359. - (void)timerSelect{
  360. [_gcdTimer restartTimer];// 重新开始轮询
  361. _timingBtn.selected = !_timingBtn.isSelected;
  362. NSString *timingStr;
  363. NSString *selectTimer = [NSString stringWithFormat:@"%@h",_selectTimer];
  364. timingStr = _timingBtn.isSelected ? selectTimer : @"关";
  365. _timingLab.text = [NSString stringWithFormat:@"定时:%@",timingStr];
  366. [RDSDemoApiHelper rds_setTimer:_selectTimer onOff:_timingBtn.isSelected control_number:_roomModel.control_number success:^(id responseObject) {
  367. if ([responseObject[@"code"] intValue] != 0) {
  368. [RDSHudShower showCenterToast:responseObject[@"message"]];
  369. }
  370. } failure:^(NSError *error) {
  371. [RDSHudShower showCenterToast:@"连接服务器失败"];
  372. }];
  373. }
  374. #pragma mark pickerView delegate
  375. //滚动选中的行
  376. -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
  377. _selectTimer = _timerData[row];
  378. }
  379. //每行显示的内容
  380. -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
  381. CGFloat fHour = [_timerData[row] floatValue];
  382. NSString *str = [NSString stringWithFormat:@"%.1f",fHour];
  383. return str;
  384. }
  385. //列宽
  386. //-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{
  387. //
  388. // return 100;
  389. //}
  390. #pragma mark pickerView dataSource
  391. // 多少组
  392. -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
  393. return 1;
  394. }
  395. // 行
  396. -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
  397. return _timerData.count;
  398. }
  399. //- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
  400. //
  401. // UILabel *lbl = (UILabel *)view;
  402. //
  403. // if (lbl == nil) {
  404. // lbl = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
  405. // //在这里设置字体相关属性
  406. // lbl.font = [UIFont systemFontOfSize:22];
  407. // lbl.textColor = RDSGreenColor;
  408. // lbl.textAlignment = NSTextAlignmentCenter;
  409. // [lbl setBackgroundColor:[UIColor clearColor]];
  410. // }
  411. // //重新加载lbl的文字内容
  412. // lbl.text = [self pickerView:pickerView titleForRow:row forComponent:component];
  413. //
  414. // // 去掉选中行背景灰色
  415. // if(pickerView.subviews.count > 0){
  416. // pickerView.subviews[1].backgroundColor = UIColor.clearColor;
  417. // }
  418. //
  419. // return lbl;
  420. //
  421. //}
  422. #pragma mark - 轮询
  423. // 轮询设备状态 3秒一次
  424. - (void)p_setUpTimer{
  425. self.gcdTimer = [[GCDTimer alloc] init];
  426. RDS_WEAKSELF(weakSelf)
  427. [_gcdTimer scheduledTimerWithTimeInterval:3 afterTime:0 repeats:YES block:^{
  428. [weakSelf p_getRoomDetail];
  429. }];
  430. }
  431. - (void)p_getRoomDetail{
  432. RDS_WEAKSELF(weakSelf)
  433. [self.roomModel rds_getRoomDetailFinished:^(NSError * error) {
  434. [weakSelf p_refreshUI];
  435. }];
  436. }
  437. // 接口返回数据不正确 弃用
  438. - (void)p_getRoomStatus{
  439. RDS_WEAKSELF(weakSelf)
  440. [self.roomModel rds_getRoomStatusFinished:^(NSError * error) {
  441. [weakSelf p_refreshUI];
  442. }];
  443. }
  444. - (void)p_refreshUI{
  445. RDS_WEAKSELF(weakSelf)
  446. dispatch_async(dispatch_get_main_queue(), ^{
  447. // 用户拖动的时候不刷新
  448. if(!weakSelf.cirSlider.isTouchInside){
  449. weakSelf.cirSlider.value = weakSelf.roomModel.set_temp;
  450. weakSelf.airTempLab.text = @(weakSelf.roomModel.set_temp).description;
  451. }
  452. if (!weakSelf.fanSlider.isTouchInside){
  453. [weakSelf.fanSlider setValue:weakSelf.roomModel.fan_speed animated:YES];
  454. }
  455. [weakSelf.modeView setMode:weakSelf.roomModel.mode];
  456. weakSelf.roomTempLab.text = [NSString stringWithFormat:@"%d℃", weakSelf.roomModel.temperature];
  457. weakSelf.roomHumidityLab.text = [NSString stringWithFormat:@"%d%%", weakSelf.roomModel.humidity];
  458. weakSelf.roomPm25Lab.text = [NSString stringWithFormat:@"%d", weakSelf.roomModel.air_quality];
  459. weakSelf.roomCo2Lab.text = [NSString stringWithFormat:@"%d", weakSelf.roomModel.co2];
  460. weakSelf.powerBtn.selected = weakSelf.roomModel.power;
  461. weakSelf.newairBtn.selected = weakSelf.roomModel.new_fan;
  462. weakSelf.timingBtn.selected = weakSelf.roomModel.timer_status;
  463. weakSelf.sleepBtn.selected = weakSelf.roomModel.sleep_mode;
  464. NSString *mode;
  465. switch (weakSelf.roomModel.mode) {
  466. case 0:
  467. mode = @"制冷";
  468. break;
  469. case 1:
  470. mode = @"制热";
  471. break;
  472. case 2:
  473. mode = @"除湿";
  474. break;
  475. case 3:
  476. mode = @"送风";
  477. break;
  478. case 4:
  479. mode = @"加湿";
  480. break;
  481. default:
  482. break;
  483. }
  484. NSString *speed;
  485. switch (weakSelf.roomModel.fan_speed) {
  486. case 1:
  487. speed = @"一档";
  488. break;
  489. case 2:
  490. speed = @"二档";
  491. break;
  492. case 3:
  493. speed = @"三档";
  494. break;
  495. case 4:
  496. speed = @"四档";
  497. break;
  498. case 5:
  499. speed = @"五档";
  500. break;
  501. default:
  502. break;
  503. }
  504. weakSelf.modeLab.text = [NSString stringWithFormat:@"%@ %@", mode, speed];
  505. NSString *selectTimer = [NSString stringWithFormat:@"%@h",weakSelf.roomModel.duration];
  506. if (!weakSelf.roomModel.timer_status) selectTimer = @"关";
  507. weakSelf.timingLab.text = [NSString stringWithFormat:@"定时:%@",selectTimer];
  508. });
  509. }
  510. - (void)dealloc{
  511. [_gcdTimer stopTimer];;
  512. DDLog(@"dealloc~~");
  513. }
  514. @end