Termostato

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

sdm.devices.types.THERMOSTAT

Rasgo

Reference

Las siguientes características, comandos o eventos están relacionados con este grupo:

RasgoDescripciónComandos
ConectividadEsta característica pertenece a cualquier dispositivo que tenga información de conectividad.
VentiladorEsta característica pertenece a cualquier dispositivo que tenga la capacidad del sistema para controlar el ventilador.SetTimer
HumedadEsta característica pertenece a cualquier dispositivo que tenga un sensor para medir la humedad.
InformaciónEsta característica pertenece a cualquier dispositivo para la información relacionada con el dispositivo.
ConfiguraciónEsta característica pertenece a cualquier dispositivo para la información de configuración relacionada con el dispositivo.
TemperaturaEsta característica pertenece a cualquier dispositivo que tenga un sensor para medir la temperatura.
ThermostatEcoEsta característica pertenece a los tipos de dispositivos de TERMOSTATO que admiten los modos ECO.SetMode
ThermostatHvacEsta característica pertenece a los tipos de dispositivos de TERMOSTATO que pueden informar detalles de HVAC.
ThermostatModeEsta característica pertenece a los tipos de dispositivos de TERMOSTATO que admiten diferentes modos de termostato.SetMode
ThermostatTemperatureSetpointEsta característica pertenece a los tipos de dispositivos de TERMOSTATO que admiten la configuración de la temperatura final y el rango de temperatura.SetHeat
SetCool
SetRange

JSON

La ausencia de una característica en una respuesta GET indica que la característica o característica no está disponible actualmente para el dispositivo. 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 la característicaTemperatura . La temperatura ambiente se mide en el dispositivo.

Para leer la humedad del ambiente del termostato, usa la característicaHumedad . La humedad del ambiente 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 configurar la escala. Para determinar la escala de temperatura que establece el usuario actualmente, usa la característicaConfiguración .

Cambiar el modo

El modo del termostato se administra a través de dos características diferentes: ThermostatMode y ThermostatEco.

Modos estándar

Para cambiar el modo del termostato a CALOR, FRÍO o HEATCOOL, usa el comando SetMode de la característica ThermostatMode.

Este comando también se puede usar para desactivar el modo del termostato, no 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 modo con el comando SetMode de la característica ThermostatEco:

Solicitud

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

Respuesta

{}

Este comando afecta otras características, según el estado actual del modo Eco o los cambios en él:

  • Si el modo Eco está DESACTIVADO, el termostato se establecerá de forma predeterminada en el último modo estándar (CALOR, Frío, HEATCOOL o APAGADO) que estaba activo.
  • Si el modo Eco es MANUAL_ECO:

Cómo cambiar los puntos de ajuste de la temperatura

Los puntos de ajuste de temperatura solo se pueden cambiar cuando el termostato está en los modos CALOR, Frío o HEATCOOL, y los puntos de ajuste permitidos corresponden al modo actual del termostato. Los puntos de ajuste de la temperatura no se pueden cambiar cuando el modo está OFF o cuando el modo Eco está configurado en MANUAL_ECO.

El termostato debe estar en el modo que corresponda al comando al que se llama antes de cambiar los puntos de ajuste de la temperatura. 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 CALOR:

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

Ten en cuenta que los comandos del 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 la temperatura cuando el termostato está en modo CALOR, usa el comando SetHeat de la característica 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 muestra el trait ThermostatEco, y estos no se pueden cambiar mediante la API de SDM.

Cómo encender o apagar el ventilador

Si el termostato admite un ventilador, usa el comando SetTimer de la característica Ventilador para encenderlo o apagarlo. Cuando se enciende, puedes especificar el tiempo de funcionamiento del ventilador, en segundos.

Por ejemplo, para hacer funcionar el ventilador 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.

Comprueba la conectividad del dispositivo

Si el dispositivo no responde a comandos ni envía eventos, o si recibes errores de la API relacionados con él, usa la característicaConectividad para verificar si el dispositivo tiene el estado SIN CONEXIÓN. Verifica la conexión a Internet del dispositivo y asegúrate de que el Servicio de Nest esté activo.

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

Carga útil

{
  "eventId" : "b7705246-9224-46af-b5f2-b2af8437cd0e",
  "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"
  ]
}

Reacciona a eventos del dispositivo

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

Carga útil

{
  "eventId" : "849df9a2-9a28-452e-9b34-5490fc93d88b",
  "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 todas las características asociadas a este tipo de dispositivo. Habilita los eventos si necesitas reaccionar a ellos de alguna manera como parte de una integración.

Horario de los eventos

Ten en cuenta que un evento para un cambio en el estado de HVAC no se puede entregar al mismo tiempo que los eventos para un cambio de 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 este caso, cambiar el modo del termostato solo puede enviar en un principio eventos ThermostatMode y ThermostatTemperatureSetpoint . Si no hubo retrasos en la activación del sistema de HVAC, se enviarían los tres eventos al mismo tiempo.

Errores

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

Mensaje de error RPC Solución de problemas
El valor de enfriamiento debe ser mayor que el valor de calor. INVALID_ARGUMENT Asegúrate de que el campo heatCelsius sea menor que el campo coolCelsius de tu comando.
Comando no permitido en el modo de termostato actual. FAILED_PRECONDITION Algunos modelos de termostatos no admiten el cambio del modo Eco cuando el termostato está DESACTIVADO, según la característica ThermostatMode . El modo del termostato debe cambiarse a CALOR, FRÍO o HEATCOOL antes de cambiar el modo Eco.
Ventilador del termostato no disponible. FAILED_PRECONDITION El termostato no admite ventiladores. No se pueden usar características ni comandos relacionados con los fans en este dispositivo.
Comando no permitido 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.