2014-10-16 38 views
7

Nest Thermostat設備將在屏幕上顯示,如果它是「製冷」或「加熱」。我如何通過Nest API獲得這個狀態?Nest API:何時恆溫器「加熱」或「冷卻」?

hvac_mode屬性似乎只是簡單地顯示用戶的恆溫器能夠控制的內容,並且在冷卻或加熱發生時不會改變。

現在,我使用的是簡單的,但並非無懈可擊的邏輯:

if (can_cool && target_temperature < ambient_temperature) --> isCooling 
if (can_heat && target_temperature > ambient_temperature) --> isHeating 
else --> isDoingNothing 

通過並非無懈可擊,我的意思是我遇到的情況下這種邏輯是不正確。例如,在ambient_temperature20 Celsiustarget_temperature21 Celsiuscan_heat設爲true的給定情況下,我的用戶界面會說恆溫器正在加熱,而實際上並非如此。

這可能是因爲目標和環境溫度太接近,但我不知道閾值是多少。

是否有另一種或更好的方法來找出加熱和冷卻狀態?

回答

4

截至2015年5月,Nest API現在正式報告hvac_state屬性。該值將是「加熱」,「冷卻」或「關閉」中的一種。

在數據模型中的新領域: hvac_state。 您將使用hvac_state來了解家用HVAC系統是否正在主動加熱,冷卻或關閉。

+0

你能夠真正閱讀這個hvac_state嗎?使用我的真正恆溫器(SW版本4.5.1),該字段丟失,並且未報告爲恆溫器數據結構的一部分。 – RawMean 2015-10-12 00:03:31

+0

是的,我用它在我的真正恆溫器上 - 我的v4.5.1也是 – 2015-10-12 09:35:41

2

看着API,他們沒有提供任何方式來確定恆溫器是否實際加熱。你可以找到的最接近的是你目前寫的。

如果設備本身能夠顯示加熱或冷卻,則它們必須使用不同的代碼或不同的方法(如內部電子元件)來識別。

+1

不知道SO的政策是關於我的以下建議:在這種情況下,我建議與開發人員聯繫,詢問他們如何做到這一點...... – DoubleYou 2014-10-16 23:55:55

+2

我認爲這是Nest的戰略的一部分,將足夠的控制權交給開發者修改,但還不足以替換應用程序 - 當您無法查看或編輯計劃,讀取當前狀態或獲取任何類型的API Nest自己的支持,你相當無害。 – thesimm 2014-10-17 12:29:44

0

不幸的是你是正確的 - API沒有透露這些信息。

my application我已經實現了和你一樣的邏輯,並且已經注意到圍繞邊緣情況的相同問題。我懷疑,當環境溫度剛剛超出目標溫度一度或更低時,可能存在時間因素。

-1

您需要跟蹤Heat On/Off的狀態才能正確計算。我在1hz監視NEST並將最後一個狀態(On或Off)作爲變量存儲。一旦你有了這個信息,你可以使用下面的邏輯,這將是準確的:

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; 

注:temp_currenttemp_setpoint從REST HTTP POST返回。 祝你好運!