Termostato

Todos los modelos de Google Nest Thermostat son compatibles con la API de Smart Device Management (SDM). Estos dispositivos devuelven el tipo de dispositivo THERMOSTAT:

sdm.devices.types.THERMOSTAT

Rasgos

Referencia

Los siguientes rasgos, comandos o eventos se relacionan con este grupo:

RasgoDescripciónComandos
ConectividadEste rasgo pertenece a cualquier dispositivo que tenga información de conectividad.
VentiladorEste rasgo pertenece a cualquier dispositivo que tenga la capacidad del sistema para controlar el ventilador.SetTimer
HumedadEste rasgo pertenece a cualquier dispositivo que tenga un sensor para medir la humedad.
InformaciónEste rasgo pertenece a cualquier dispositivo para la información relacionada con el dispositivo.
ConfiguraciónEste rasgo pertenece a cualquier dispositivo para la información de configuración relacionada con el dispositivo.
TemperaturaEste rasgo pertenece a cualquier dispositivo que tenga un sensor para medir la temperatura.
ThermostatEcoEste rasgo pertenece a los tipos de dispositivos THERMOSTAT que admiten modos ECO.SetMode
ThermostatHvacEste rasgo pertenece a los tipos de dispositivos THERMOSTAT que pueden informar detalles del sistema de HVAC.
ThermostatModeEste rasgo pertenece a los tipos de dispositivos de THERMOSTAT que admiten diferentes modos de termostato.SetMode
ThermostatTemperatureSetpointEste rasgo pertenece a los tipos de dispositivos de THERMOSTAT que admiten el ajuste de la temperatura objetivo y el rango de temperatura.SetHeat
SetCool
SetRange

JSON

La ausencia de un rasgo en una respuesta GET indica que el rasgo o la función no están disponibles para el dispositivo en este momento. Consulta Tipos de dispositivos para obtener más información.

{
  "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 y humedad

Para leer la temperatura ambiente del termostato, usa el rasgoTemperature . La temperatura ambiente se mide en el dispositivo.

Para leer la humedad ambiente del termostato, usa el rasgoHumidity . La humedad ambiental se mide en el dispositivo.

Escala de temperatura

El Google Nest Thermostat puede mostrar la temperatura en grados Celsius o Fahrenheit, pero la API de SDM no puede establecer la escala. Para determinar la escala de temperatura que estableció el usuario, usa el rasgoSettings .

Cómo cambiar el modo

El modo del termostato se administra con dos rasgos diferentes: ThermostatMode y ThermostatEco.

Modos estándar

Para cambiar el modo del termostato a HEAT, COOL o HEATCOOL, usa el comando SetMode del rasgo ThermostatMode.

Este comando también se puede usar para apagar el termostato. No se puede usar para activar el modo Eco.

Por ejemplo, para cambiar uno de los modos estándar del termostato, haz lo siguiente:

Solicitud

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatMode.SetMode",
  "params" : {
    "mode" : "HEAT"
  }
}

Respuesta

{}

Modo Eco

Para activar el modo Eco, usa MANUAL_ECO como el modo con el comando SetMode del rasgo ThermostatEco:

Solicitud

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatEco.SetMode",
  "params" : {
    "mode" : "MANUAL_ECO"
  }
}

Respuesta

{}

Este comando afecta otros rasgos según el estado actual del modo Eco o los cambios que se realicen en él:

  • Si el modo Eco está DESACTIVADO, el modo del termostato se establecerá de forma predeterminada en el último modo estándar (CALOR, FRÍO, CALORFRÍO o APAGADO) que estuvo activo.
  • Si el modo Eco es MANUAL_ECO, haz lo siguiente:

Cómo cambiar los puntos de ajuste de temperatura

Los puntos de ajuste de temperatura solo se pueden cambiar cuando el termostato está en los modos CALOR, FRÍO o CALORFRÍO, y los puntos de ajuste permitidos corresponden al modo actual del termostato. Los puntos de ajuste de temperatura no se pueden cambiar cuando el modo está APAGADO o cuando el modo Eco está configurado como MANUAL_ECO.

Antes de cambiar los puntos de ajuste de temperatura, el termostato debe estar en el modo que corresponde al comando que se llama. El comando y los campos para cambiar los puntos de ajuste varían según el modo del termostato.

Por ejemplo, para emitir el comando SetHeat, primero el termostato debe estar en modo HEAT:

Modo Comando Campos
CALOR SetHeat heatCelsius
FRÍO SetCool coolCelsius
HEATCOOL SetRange heatCelsius, coolCelsius

Ten en cuenta que los comandos de punto de ajuste solo toman grados Celsius como parámetro, aunque el Google Nest Thermostat puede mostrar la temperatura en grados Celsius o Fahrenheit.

Por ejemplo, para cambiar el punto de ajuste de temperatura cuando el termostato está en modo HEAT, usa el comando SetHeat del rasgo ThermostatTemperatureSetpoint:

Solicitud

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
  "params" : {
    "heatCelsius" : 22.0
  }
}

Respuesta

{}

Puntos de ajuste del modo Eco

El usuario establece los puntos de ajuste heatCelsius y coolCelsius que devuelve el rasgo ThermostatEco, y no se pueden cambiar a través de la API de SDM.

Encender o apagar el ventilador

Si el termostato admite un ventilador, usa el comando SetTimer del rasgo Fan para encenderlo o apagarlo. Cuando lo enciendas, puedes especificar la duración en segundos que quieres que funcione el ventilador.

Por ejemplo, para que el ventilador funcione durante una hora, haz lo siguiente:

Solicitud

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.Fan.SetTimer",
  "params" : {
    "timerMode" : "ON",
    "duration" : "3600s"
  }
}

Respuesta

{}

Si se omite el campo duration, el ventilador funcionará durante un tiempo predeterminado de 15 minutos.

Cómo verificar la conectividad del dispositivo

Si el dispositivo no responde a los comandos o no envía eventos, o si recibes errores de la API relacionados con el dispositivo, usa el rasgoConnectivity para verificar la conectividad del dispositivo en busca de un estado OFFLINE. Verifica la conexión a Internet del dispositivo y asegúrate de que el servicio de Nest esté en funcionamiento.

Si tienes habilitados los eventos, también deberías haber recibido un evento de recurso que indica que el dispositivo se desconectó:

Carga útil

{
  "eventId" : "31a9759c-21a6-47d7-acbc-8e854f1000a7",
  "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"
  ]
}

Cómo reaccionar a los eventos del dispositivo

Cualquier cambio en un campo de atributo genera un evento. Por ejemplo, recibirías el siguiente evento resourceUpdate si el estado del HVAC del termostato cambiara a HEATING:

Carga útil

{
  "eventId" : "20388ec2-1a03-4eba-b2fc-aa30616108be",
  "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"
  ]
}

Los eventos se activan para todos los rasgos asociados con este tipo de dispositivo. Habilita los eventos si necesitas reaccionar a ellos de alguna manera como parte de una integración.

Momento de los eventos

Ten en cuenta que es posible que no se entregue un evento para un cambio en el estado del HVAC al mismo tiempo que los eventos para un cambio en el modo del termostato.

Por ejemplo, a veces hay una demora en el inicio del modo de calefacción o enfriamiento de un termostato para proteger el sistema de HVAC. En esta situación, cambiar el modo del termostato puede enviar inicialmente solo eventos para los cambios de rasgos ThermostatMode y ThermostatTemperatureSetpoint , y el cambio de rasgo ThermostatHvac se enviará más tarde como un evento independiente una vez que el sistema se encienda. Si no hubiera habido una demora en el encendido del sistema de HVAC, los tres eventos se habrían enviado al mismo tiempo.

Errores

Es posible que se muestren los siguientes códigos de error relacionados con este dispositivo:

Mensaje de error RPC Solución de problemas
El valor de enfriamiento debe ser mayor que el valor de calentamiento. INVALID_ARGUMENT Asegúrate de que el campo heatCelsius sea menor que el campo coolCelsius en tu comando.
No se permite el comando en el modo actual del termostato. FAILED_PRECONDITION Según el rasgo ThermostatMode , algunos modelos de termostatos no admiten el cambio del modo Eco cuando el modo del termostato está APAGADO. El modo del termostato debe cambiarse a HEAT, COOL o HEATCOOL antes de cambiar el modo Eco.
El ventilador del termostato no está disponible. FAILED_PRECONDITION El termostato no tiene capacidad de ventilador. No se pueden usar los rasgos y comandos relacionados con el ventilador en este dispositivo.
No se permite el comando cuando el termostato está en modo MANUAL_ECO. FAILED_PRECONDITION No se puede establecer el punto de ajuste de temperatura cuando el termostato está en modo Eco manual.

Consulta la Referencia de códigos de error de la API para ver la lista completa de códigos de error de la API.