7

Nest Thermostat デバイスは、「冷房」または「暖房」の場合に画面に表示されます。Nest API を使用してこの状態を取得するにはどうすればよいですか?

プロパティは、ユーザーのサーモスタットが制御できるものを単に示しているように見え、hvac_mode冷却または加熱が発生しても変化しません。

今のところ、私はシンプルだが完璧ではないロジックを使用しています。

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

完璧ではないということは、このロジックが正しくない状況に遭遇したことを意味します。たとえば、 が で が に設定されている特定の状況では、UIはサーモスタットambient_temperatureが加熱されていると表示しますが、実際にはそうではありません。20 Celsiustarget_temperature21 Celsiuscan_heattrue

これはおそらく、目標温度と周囲温度が近すぎるためですが、しきい値がわかりません。

暖房と冷房の状態を把握するための別の方法またはより良い方法はありますか?

4

4 に答える 4

4

2015 年 5 月の時点で、Nest APIはhvac_stateプロパティを正式に報告するようになりました。値は、「加熱」、「冷却」、または「オフ」のいずれかになります。

データ モデルの新しいフィールド: hvac_state。hvac_state を使用して、家庭の HVAC システムがアクティブに暖房、冷房、またはオフになっているかどうかを確認します。

于 2015-06-12T10:40:54.197 に答える
0

残念ながらあなたの言う通りです。API はこの情報を明らかにしません。

私のアプリケーションでは、あなたと同じロジックを実装しましたが、エッジ ケースに関する同じ問題に気付きました。周囲温度が目標温度から 1 度かそれ以下しか離れていない場合、時間要素があるのではないかと思います。

于 2014-10-27T13:04:08.083 に答える
-1

適切に計算するには、ヒート オン/オフのステータスを追跡する必要があります。NEST を 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;

注:temp_currentおよびtemp_setpointは REST http 投稿から返されます。幸運を!

于 2014-12-26T22:32:15.913 に答える