Termostato

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ísticasDescriçãoComandos
ConectividadeEssa característica pertence a qualquer dispositivo que tem informações de conectividade.
FanEssa característica pertence a qualquer dispositivo que tenha a capacidade do sistema de controlar o ventilador.SetTimer
UmidadeEssa característica pertence a qualquer dispositivo que tenha um sensor para medir a umidade.
InformaçõesEssa característica pertence a qualquer dispositivo para informações relacionadas a ele.
ConfiguraçõesEssa característica pertence a qualquer dispositivo para informações relacionadas às configurações.
TemperaturaEssa característica pertence a qualquer dispositivo que tenha um sensor para medir a temperatura.
ThermostatEcoEssa característica pertence aos tipos de dispositivo de TERMOSTATO que oferecem suporte a modos ECO.SetMode
ThermostatHvacEssa característica pertence aos tipos de dispositivos de TERMOSTATO que podem informar detalhes de AVAC (aquecimento, ventilação e ar-condicionado).
ThermostatModeEssa característica pertence a tipos de dispositivo de TERMOSTATO que oferecem suporte a diferentes modos de termostato.SetMode
ThermostatTemperatureSetpointEssa 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:

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.