Todos os modelos do Google Nest Thermostat são compatíveis com a API Smart Device Management (SDM). Esses dispositivos retornam o tipo de dispositivo TERMOSTAT:
sdm.devices.types.THERMOSTAT
Características
Referência
As seguintes características, comandos ou eventos estão relacionados a este grupo:
Características | Descrição | Comandos |
---|---|---|
Conectividade | Essa característica pertence a qualquer dispositivo que tem informações de conectividade. | |
Fan | Essa característica pertence a qualquer dispositivo que tenha a capacidade do sistema de controlar o ventilador. | SetTimer |
Umidade | Essa característica pertence a qualquer dispositivo que tenha um sensor para medir a umidade. | |
Informações | Essa característica pertence a qualquer dispositivo para informações relacionadas a ele. | |
Configurações | Essa característica pertence a qualquer dispositivo para informações relacionadas às configurações. | |
Temperatura | Essa característica pertence a qualquer dispositivo que tenha um sensor para medir a temperatura. | |
ThermostatEco | Essa característica pertence aos tipos de dispositivo de TERMOSTATO que oferecem suporte a modos ECO. | SetMode |
ThermostatHvac | Essa característica pertence aos tipos de dispositivos de TERMOSTATO que podem informar detalhes de AVAC (aquecimento, ventilação e ar-condicionado). | |
ThermostatMode | Essa característica pertence a tipos de dispositivo de TERMOSTATO que oferecem suporte a diferentes modos de termostato. | SetMode |
ThermostatTemperatureSetpoint | Essa característica pertence a tipos de dispositivos de TERMOSTATO que oferecem suporte à definição de temperatura-alvo e faixa de temperatura. | SetHeat SetCool SetRange |
JSON
A ausência de um atributo em uma resposta GET indica que o atributo ou recurso não está disponível para o dispositivo no momento. Consulte Tipos de dispositivo para mais informações.
{ "type" : "sdm.devices.types.THERMOSTAT", "traits" : { "sdm.devices.traits.Connectivity" : { "status" : "ONLINE" }, "sdm.devices.traits.Fan" : { "timerMode" : "ON", "timerTimeout" : "2019-05-10T03:22:54Z" }, "sdm.devices.traits.Humidity" : { "ambientHumidityPercent" : 35.0 }, "sdm.devices.traits.Info" : { "customName" : "My device" }, "sdm.devices.traits.Settings" : { "temperatureScale" : "CELSIUS" }, "sdm.devices.traits.Temperature" : { "ambientTemperatureCelsius" : 23.0 }, "sdm.devices.traits.ThermostatEco" : { "availableModes" : ["MANUAL_ECO", "OFF"], "mode" : "MANUAL_ECO", "heatCelsius" : 20.0, "coolCelsius" : 22.0 }, "sdm.devices.traits.ThermostatHvac" : { "status" : "HEATING" }, "sdm.devices.traits.ThermostatMode" : { "availableModes" : ["HEAT", "COOL", "HEATCOOL", "OFF"], "mode" : "COOL" }, "sdm.devices.traits.ThermostatTemperatureSetpoint" : { "heatCelsius" : 20.0, "coolCelsius" : 22.0 } } }
Temperatura e umidade
Para ler a temperatura ambiente do termostato, use o atributo Temperatura . A temperatura ambiente é medida no dispositivo.
Para ler a umidade ambiente do termostato, use o traçoHumidity . A umidade ambiente é medida no dispositivo.
Escala de temperatura
O Google Nest Thermostat pode mostrar a temperatura em graus Celsius ou Fahrenheit, mas a escala não pode ser definida pela API SDM. Para determinar a escala de temperatura definida pelo usuário, use o Configurações .
Mudar o modo
O modo do termostato é gerenciado por duas características diferentes: ThermostatMode e ThermostatEco.
Meios padrão
Para mudar o modo do termostato para HEAT, COOL ou HEATCOOL, use o comando SetMode da característica ThermostatMode.
Esse comando também pode ser usado para desativar o modo do termostato. Ele não pode ser usado para ativar o modo Eco.Por exemplo, para mudar um dos modos padrão do termostato:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatMode.SetMode
",
"params" : {
"mode" : "HEAT"
}
}
Resposta
{}
Modo Eco
Para ativar o modo Eco, use MANUAL_ECO como o modo com o comando SetMode da característica ThermostatEco:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatEco.SetMode
",
"params" : {
"mode" : "MANUAL_ECO"
}
}
Resposta
{}
Esse comando afeta outras características com base no status atual ou nas mudanças do modo Eco:
- Se o modo Eco estiver DESLIGADO, o modo do termostato vai usar o último modo padrão (HEAT, COOL, HEATCOOL ou OFF) que estava ativo.
- Se o modo Eco for MANUAL_ECO:
- Os comandos para o recurso ThermostatTemperatureSetpoint são rejeitados.
- Os pontos de ajuste de temperatura não são retornados pelo recurso ThermostatTemperatureSetpoint .
Mudar as temperaturas programadas
As temperaturas programadas só podem ser alteradas quando o termostato está nos modos Aquecer, Resfriar ou HEATCOOL, e as definições permitidas correspondem ao modo atual do termostato. Os pontos de ajuste de temperatura não podem ser alterados quando o modo está DESLIGADO ou quando o modo Eco está definido como MANUAL_ECO.
O termostato precisa estar no modo correspondente ao comando chamado antes de mudar os pontos de ajuste de temperatura. O comando e os campos para mudar as temperaturas programadas variam de acordo com o modo do termostato.
Por exemplo, para emitir o comando "SetHeat", o termostato precisa estar no modo Aquecer primeiro:
Modo | Comando | Campo(s) |
---|---|---|
AQUECIMENTO | SetHeat (link em inglês) | heatCelsius |
FRIO | SetCool | coolCelsius |
HEATCOOL | SetRange | heatCelsius , coolCelsius |
Os comandos de setpoint usam apenas graus Celsius como parâmetro, mas o Google Nest Thermostat pode mostrar a temperatura em graus Celsius ou Fahrenheit.
Por exemplo, para mudar a temperatura definida quando o termostato estiver no modo HEAT, use o comando SetHeat da característica ThermostatTemperatureSetpoint:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat
",
"params" : {
"heatCelsius" : 22.0
}
}
Resposta
{}
Pontos de ajuste do modo Eco
Os pontos de ajuste heatCelsius
e coolCelsius
retornados pelo
traço ThermostatEco são definidos pelo usuário e
não podem ser alterados pela API SDM.
Ligar ou desligar a ventilação
Se o termostato oferecer suporte a um ventilador, use o comando SetTimer da característica do ventilador para ativá-lo ou desativá-lo. Ao ligar, você pode especificar o tempo de funcionamento do ventilador, em segundos.
Por exemplo, para ligar o ventilador por uma hora:
Solicitação
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.Fan.SetTimer
",
"params" : {
"timerMode" : "ON",
"duration" : "3600s"
}
}
Resposta
{}
Se o campo duration
for omitido, o ventilador vai ser executado por um tempo padrão de 15
minutos.
Verificar a conectividade do dispositivo
Se o dispositivo não estiver respondendo a comandos ou enviando eventos ou se você receber erros da API relacionados ao dispositivo, use a característica Conectividade para verificar se o dispositivo tem um status OFF-LINE. Verifique a conexão do dispositivo à Internet e confira se o Serviço Nest está ativo.
Se você tiver eventos ativados, também vai receber um evento de recurso que indica que o dispositivo ficou off-line:
Payload
{
"eventId" : "366dcbfb-2b0d-4c8c-9ad9-2ff7434f1dc7",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"traits" : {
"sdm.devices.traits.Connectivity
" : {
"status" : "OFFLINE"
}
}
},
"userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}
Reagir a eventos do dispositivo
Qualquer alteração em um campo de características gera um evento.
Por exemplo, você receberia o evento resourceUpdate
a seguir se o status do AVAC (Aquecimento, ventilação e ar-condicionado) do termostato mudasse para Aquecimento:
Payload
{
"eventId" : "1e9d0340-7543-4a6f-b498-7c12a77f0b27",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"traits" : {
"sdm.devices.traits.ThermostatHvac
" : {
"status" : "HEATING"
}
}
},
"userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}
Os eventos são acionados para todas as características associadas a esse tipo de dispositivo. Ative os eventos se precisar reagir a eles de alguma forma como parte de uma integração.
Marcação de tempo dos eventos
Um evento de mudança no status do AVAC pode não ser enviado ao mesmo tempo que os eventos de mudança de modo do termostato.
Por exemplo, às vezes há um atraso na inicialização do modo de aquecimento ou resfriamento de um termostato para proteger o sistema AVAC. Nesse cenário, a mudança do modo do termostato pode enviar eventos apenas para ThermostatMode e ThermostatTemperatureSetpoint mudanças de traço, com a ThermostatHvac mudança de traço enviada mais tarde como um evento separado quando o sistema realmente for ativado. Se não houvesse atraso na ativação do sistema AVAC, todos os três eventos seriam enviados ao mesmo tempo.
Erros
Os seguintes códigos de erro podem ser retornados em relação a este dispositivo:
Mensagem de erro | RPC | Solução de problemas |
---|---|---|
O valor de resfriamento precisa ser maior que o valor de aquecimento. | INVALID_ARGUMENT |
Verifique se o campo heatCelsius é menor que o campo coolCelsius no comando. |
Comando não permitido no modo de termostato atual. | FAILED_PRECONDITION |
Alguns modelos de termostato não são compatíveis com a mudança do modo Eco quando o modo do termostato está DESLIGADO, de acordo com o atributo ThermostatMode . O modo do termostato precisa ser mudado para AQUECER, RESFRIAR ou AQUECER/RESFRIAR antes de mudar para o modo Eco. |
Ventilador do termostato indisponível. | FAILED_PRECONDITION |
O termostato não tem capacidade para ventilador. Os comandos e características relacionados a ventiladores não podem ser usados para esse dispositivo. |
O comando não é permitido quando o termostato está no modo MANUAL_ECO. | FAILED_PRECONDITION |
Não é possível definir a temperatura programada quando o termostato está no modo Eco manual. |
Consulte a Referência do código de erro da API para ver a lista completa desses códigos.