小编Rac*_* Jr的帖子

Nest API:恒温器何时"加热"或"冷却"?

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 Celsiustarget_temperature21 Celsiuscan_heat设置为true我的UI会说温控器加热,而实际上并非如此.

这可能是因为目标和环境温度太近,但我不知道阈值是多少.

是否有其他或更好的方法来确定加热和冷却状态?

nest-api

7
推荐指数
1
解决办法
1135
查看次数

如何从NSDate对象检索午夜过后的小时数?

我需要从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之间).

date objective-c nsdate ios

4
推荐指数
1
解决办法
3845
查看次数

标签 统计

date ×1

ios ×1

nest-api ×1

nsdate ×1

objective-c ×1