Nest Thermostat设备将在屏幕上显示"冷却"或"加热".如何通过Nest API获取此状态?
该hvac_mode属性似乎只是简单地显示用户的恒温器能够控制什么,并且在发生冷却或加热时不会改变.
现在,我使用的是一个简单但不完美的逻辑:
if (can_cool && target_temperature < ambient_temperature) --> isCooling
if (can_heat && target_temperature > ambient_temperature) --> isHeating
else --> isDoingNothing
Run Code Online (Sandbox Code Playgroud)
通过不完美,我的意思是我遇到了这种逻辑不正确的情况.例如,在一个给定的情况下的ambient_temperatureIS 20 Celsius和target_temperature是21 Celsius用can_heat设置为true我的UI会说温控器加热,而实际上并非如此.
这可能是因为目标和环境温度太近,但我不知道阈值是多少.
是否有其他或更好的方法来确定加热和冷却状态?
我需要从iPhone项目中的UIDatePicker控件中检索午夜过后的小时数.datePickerMode设置为UIDatePickerModeTime,所以用户只能设置时间,没有日期.当用户完成并关闭UIDatePicker所在的视图时,可能会检索以下日期(作为示例):
NSDate *returnTime = timePicker.date;
NSLog(@"returnTime: %@", returnTime); // returns for example @"1970-01-01 10:13:00 PM +0000"
Run Code Online (Sandbox Code Playgroud)
如上所述,我正在寻找午夜过后的小时数.在上面的示例中,该值应该是22.我想通过创建一个NSDateFormatter对象来实现这一点,并让它以24小时时钟格式提取一天中的小时,因此使用setDateFormat:@"H"(大写H而不是'h'):
NSDateFormatter *formatHour = [[NSDateFormatter alloc] init];
[formatHour setDateFormat:@"H"];
NSInteger intHoursPastMidnight = [[formatHour stringFromDate:returnTime] integerValue];
Run Code Online (Sandbox Code Playgroud)
然而,这并不总是按预期工作.当用户在系统范围的首选项(即用户使用AM/PM)中禁用24小时时,intHoursPastMidnight将包含10而不是22.10确实是可见的价值UIDatePicker,但我原本期望将NSDateFormatter其转换22为@"H".
这有什么不对?我的转换假设不正确吗?这是UIDatePicker的错误吗?我如何解决问题,因此我基本上可以访问UIDatePicker中设置的午夜过后的小时数,与用户的12或24小时时钟偏好无关?无论如何这是要走的路吗?
明确的最终目标是检索午夜过后的分钟数(所以小时*60 +分钟,价值总是在0和1440之间).