2014-10-16 20 views
7

Il dispositivo del termostato Nest verrà visualizzato sullo schermo se si tratta di "raffreddamento" o "riscaldamento". Come faccio a ottenere questo stato tramite l'API Nest?Nest API: quando termina "riscaldamento" o "raffreddamento"?

La proprietà hvac_mode sembra mostrare semplicemente ciò che il termostato dell'utente è in grado di controllare e non cambia quando si verifica il raffreddamento o il riscaldamento.

Per ora, sto usando un semplice ma non la logica impeccabile:

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

da non impeccabile, voglio dire che ho situazioni incontrate in cui questa logica non è corretta. Ad esempio, in una determinata situazione in cui lo ambient_temperature è 20 Celsius e lo target_temperature è 21 Celsius con can_heat impostato su true, la mia UI dirà che il termostato sta scaldando, mentre in realtà non lo è.

Questo probabilmente perché le temperature target e ambientali sono troppo vicine, ma non so quale sia la soglia.

C'è un altro o un modo migliore per capire gli stati di riscaldamento e raffreddamento?

risposta

4

A partire dal maggio 2015, l'API Nest ora ufficialmente riporta il hvac_state proprietà. Il valore sarà uno tra "riscaldamento", "raffreddamento" o "spento".

nuovi campi nel modello di dati: hvac_state. Utilizzerai hvac_state per sapere se il sistema HVAC di casa sta attivamente riscaldando, raffreddando o è spento.

+0

Sei stato in grado di leggere questo hvac_state? Con il mio vero termostato (versione SW 4.5.1) questo campo manca e non è riportato come parte della struttura dei dati del termostato. – RawMean

+0

Sì, l'ho usato sul mio vero termostato - il mio è anche su v4.5.1 –

2

Guardando all'API, non forniscono alcun modo di identificare se il termostato sta effettivamente riscaldando. Il più vicino che puoi identificare è ciò che hai scritto al momento.

Se il dispositivo stesso è in grado di visualizzare il riscaldamento o il raffreddamento, è necessario disporre di codice diverso o di metodi diversi (come l'elettronica interna) per identificarlo.

+1

Non so quale sia la politica di SO sulla mia proposta seguente: in questa situazione suggerisco di contattare gli sviluppatori con la domanda su come lo fanno ... – DoubleYou

+2

Penso che questo rientri nella strategia di Nest per fornire un controllo sufficiente per gli sviluppatori, ma non abbastanza per creare app sostitutive - quando non è possibile visualizzare o modificare la pianificazione, o leggere lo stato corrente o ottenere qualsiasi tipo di API supporto da parte di Nest, sei abbastanza innocuo. – thesimm

0

Purtroppo hai ragione - l'API non rivela queste informazioni.

In my application Ho implementato la stessa logica come te e ho notato lo stesso problema nei casi limite. Sospetto che possa esserci un elemento temporale quando la temperatura ambiente è appena al di fuori della temperatura target di un grado o meno.

-1

È necessario tenere traccia dello stato di Heat On/Off per poter calcolare correttamente. Controllo il NEST a 1 ora e memorizza l'ultimo stato (On ​​o Off) come variabile. una volta che hai queste informazioni è possibile utilizzare il seguente logica e sarà accurato:

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; 

Nota: temp_current e temp_setpoint vengono restituiti dal post REST http. Buona fortuna!

Problemi correlati