Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nest api Nest API:何时为恒温器';供暖';或';冷却';?_Nest Api - Fatal编程技术网

Nest api Nest API:何时为恒温器';供暖';或';冷却';?

Nest api Nest API:何时为恒温器';供暖';或';冷却';?,nest-api,Nest Api,Nest恒温器设备将在屏幕上显示“冷却”或“加热”。如何通过Nest API获得此状态 hvac\u mode属性似乎只是简单地显示了用户的恒温器能够控制什么,并且在冷却或加热发生时不会改变 现在,我使用的是一个简单但并非完美的逻辑: if (can_cool && target_temperature < ambient_temperature) --> isCooling if (can_heat && target_temperature >

Nest恒温器设备将在屏幕上显示“冷却”或“加热”。如何通过Nest API获得此状态

hvac\u mode
属性似乎只是简单地显示了用户的恒温器能够控制什么,并且在冷却或加热发生时不会改变

现在,我使用的是一个简单但并非完美的逻辑:

if (can_cool && target_temperature < ambient_temperature) --> isCooling
if (can_heat && target_temperature > ambient_temperature) --> isHeating
else --> isDoingNothing
if(可冷却和目标温度<环境温度)->正在冷却
如果(可以加热和目标温度>环境温度)-->
否则我就完蛋了
我的意思是,我遇到过这种逻辑不正确的情况。例如,在给定的情况下,
环境温度
20摄氏度
目标温度
21摄氏度
,并且
可以加热
设置为
,我的用户界面会说恒温器正在加热,而实际上没有

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


有没有其他或更好的方法来计算加热和冷却状态?

看看API,它们没有提供任何方法来确定恒温器是否确实在加热。你能识别的最接近的东西是你目前写的东西


如果设备本身能够显示其加热或冷却状态,则它们必须具有不同的代码或不同的方法(如内部电子设备)来识别该状态。

遗憾的是,您是正确的-API没有显示此信息


在本文中,我实现了与您相同的逻辑,并且注意到了边缘案例的相同问题。我怀疑,当环境温度刚好超出目标温度一度或更低时,可能存在时间因素。

为了正确计算,您需要跟踪加热开/关状态。我以1 hz的频率监控嵌套,并将最后的状态(开或关)存储为变量。一旦你有了这些信息,你可以使用以下逻辑,它将是准确的:

if lastStatus.Contains("Off"))
{
    if (temp_current < temp_setpoint)
        status = "Heat On";
    else
        status = "Heat Off";
}
else if (lastStatus.Contains("On"))
{
    if (temp_current > temp_setpoint)
        status = "Heat Off";
    else
        status = "Heat On";
}
// Do the work....
lastStatus=status;
如果lastStatus.Contains(“Off”))
{
if(温度电流<温度设定点)
状态=“加热”;
其他的
状态=“加热关闭”;
}
else if(lastStatus.Contains(“On”))
{
如果(温度电流>温度设定点)
状态=“加热关闭”;
其他的
状态=“加热”;
}
//做这项工作。。。。
lastStatus=状态;
注意:
temp\u current
temp\u settpoint
是从REST http post返回的。
祝你好运

截至2015年5月,Nest API现在正式报告了hvac_州的物业。该值将为“加热”、“冷却”或“关闭”之一

数据模型中的新字段: 华盛顿州。 您将使用hvac_状态了解家庭hvac系统是否处于主动加热、冷却或关闭状态


我不确定SO的政策是关于我的以下建议的:在这种情况下,我建议与开发者联系,询问他们是如何做到的……我认为这是Nest策略的一部分,将足够的控制权交给开发人员进行修补,但不足以制作替代应用程序-当你无法查看或编辑日程安排,或阅读当前状态时,或者从Nest自己那里得到任何类型的API支持,你是相当无害的。你真的读过这个州吗?对于我的real恒温器(软件版本4.5.1),该字段缺失,并且没有作为恒温器数据结构的一部分进行报告。是的,我在我的real恒温器上使用过它-我的也在v4.5.1上