2014-10-16 7 views
7

Das Nest Thermostat-Gerät wird auf dem Bildschirm angezeigt, wenn es "kühlt" oder "heizt". Wie erhalte ich diesen Status über die Nest API?Nest API: Wann ist Thermostat "heizen" oder "kühlen"?

Die Eigenschaft hvac_mode scheint einfach zu zeigen, was der Thermostat des Benutzers steuern kann und ändert sich nicht, wenn entweder gekühlt oder geheizt wird.

Vorerst ich bin mit einem einfachen, aber nicht makellos Logik:

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

von nicht einwandfrei, ich meine, dass ich begegnet Situationen haben, wo diese Logik ist falsch. In einer bestimmten Situation, in der ambient_temperature20 Celsius ist und target_temperature21 Celsius mit auf true eingestellt ist, wird meine UI sagen, dass der Thermostat heizt, während es tatsächlich nicht ist.

Dies ist wahrscheinlich, weil die Ziel- und Umgebungstemperaturen zu nahe sind, aber ich weiß nicht, was der Schwellenwert ist.

Gibt es einen anderen oder besseren Weg, um Heiz- und Kühlzustände herauszufinden?

Antwort

4

Ab Mai 2015 nun das Nest API offiziell berichtet die hvac_state Eigenschaft. Der Wert wird entweder 'Heizen', 'Kühlen' oder 'Aus' sein.

Neue Felder im Datenmodell: hvac_state. Sie werden hvac_state verwenden, um zu erfahren, ob das Heim-HLK-System aktiv heizt, kühlt oder aus ist.

+0

Haben Sie diesen hvac_state tatsächlich gelesen? Bei meinem realen Thermostat (SW-Version 4.5.1) fehlt dieses Feld und wird nicht als Teil der Thermostatdatenstruktur gemeldet. – RawMean

+0

Ja, ich habe es auf meinem echten Thermostat verwendet - meines ist auch auf v4.5.1 –

2

Mit Blick auf die API bieten sie keine Möglichkeit festzustellen, ob der Thermostat tatsächlich heizt. Das, was Sie am besten identifizieren können, ist das, was Sie gerade geschrieben haben.

Wenn das Gerät selbst in der Lage ist, seine Heizung oder Kühlung anzuzeigen, müssen sie einen anderen Code oder verschiedene Methoden (wie z. B. eine interne Elektronik) haben, um dies zu erkennen.

+1

Nicht sicher, was SO Politik ist über meinen folgenden Vorschlag: in dieser Situation schlage ich vor, die Entwickler mit der Frage zu kontaktieren, wie sie es tun ... – DoubleYou

+2

Ich denke, das ist ein Teil der Strategie von Nest, genügend Kontrolle für Entwickler zu übergeben, aber nicht genug, um Ersatz-Apps zu erstellen - wenn du den Zeitplan nicht anzeigen oder bearbeiten, den aktuellen Status lesen oder irgendeine Art von API erhalten kannst Unterstützung von Nest selbst, du bist ziemlich harmlos. – thesimm

0

Leider sind Sie richtig - die API offenbart diese Informationen nicht.

In my application Ich habe die gleiche Logik wie Sie implementiert, und habe das gleiche Problem um Rand Fälle bemerkt. Ich vermute, dass es ein Zeitelement dafür geben kann, wenn die Umgebungstemperatur gerade einmal um ein Grad oder weniger außerhalb der Zieltemperatur liegt.

-1

Sie müssen den Status von Heat On/Off überwachen, um richtig zu berechnen. Ich überwache das NEST bei 1 Hz und speichere den letzten Zustand (On oder Off) als Variable. Sobald Sie diese Informationen haben, können Sie die folgende Logik verwenden und es wird genau sein:

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; 

Hinweis: temp_current und temp_setpoint aus dem REST http Post zurückgegeben. Viel Glück!

Verwandte Themen