
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
Rasgos
Los siguientes atributos, comandos o eventos están relacionados con este grupo:
Rasgo | Descripción | Comandos |
---|---|---|
Conectividad | Este atributo pertenece a cualquier dispositivo que tenga información de conectividad. | |
Fan | Esta característica pertenece a cualquier dispositivo que tenga la capacidad del sistema para controlar el ventilador. | SetTimer |
Humedad | Este atributo pertenece a cualquier dispositivo que tenga un sensor para medir la humedad. | |
Información | Este atributo pertenece a cualquier dispositivo para obtener información relacionada con él. | |
Configuración | Este atributo pertenece a cualquier dispositivo para obtener información de configuración relacionada con él. | |
Temperatura | Este atributo pertenece a cualquier dispositivo que tenga un sensor para medir la temperatura. | |
ThermostatEco | Esta característica pertenece a los tipos de dispositivos de THERMOSTAT que admiten modos ECO. | SetMode |
ThermostatHvac | Esta característica pertenece a los tipos de dispositivos de THERMOSTAT que pueden informar detalles de HVAC. | |
ThermostatMode | Este atributo pertenece a los tipos de dispositivos de THERMOSTAT que admiten diferentes modos de termostato. | SetMode |
ThermostatTemperatureSetpoint | Esta característica pertenece a los tipos de dispositivos de THERMOSTAT que admiten la configuración de la temperatura objetivo y el rango de temperatura. | SetHeat SetCool SetRange |
La ausencia de un atributo en una respuesta GET indica que el atributo o la función no están disponibles 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 el atributoTemperature . La temperatura ambiente se mide en el dispositivo.
Para leer la humedad ambiente del termostato, usa el atributoHumidity . 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 atributoConfiguración .
Cambia el modo
El modo del termostato se administra con dos atributos diferentes:ThermostatMode yThermostatEco.
Modos estándar
Para cambiar el modo del termostato a CALOR, FRÍO o CALOR/FRÍO, usa el comando SetMode del atributo ThermostatMode.
Este comando también se puede usar para apagar el modo del 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:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.ThermostatMode.SetMode
", "params" : { "mode" : "HEAT" } }
{}
Modo Eco
Para activar el modo Eco, usa MANUAL_ECO como el modo con el comando SetMode del atributo ThermostatEco:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.ThermostatEco.SetMode
", "params" : { "mode" : "MANUAL_ECO" } }
{}
Este comando afecta a otros atributos, 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, CALOR Y FRÍO, o APAGADO) que estaba activo.
- Si el modo Eco es MANUAL_ECO:
- Se rechazan los comandos para el atributo ThermostatTemperatureSetpoint .
- El atributo ThermostatTemperatureSetpoint no muestra los puntos de ajuste de temperatura.
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 HEAT, COOL o HEATCOOL, 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 en MANUAL_ECO.
El termostato debe estar en el modo que corresponde al comando al que se llama antes de cambiar los puntos de ajuste de 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, 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 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 CALOR, usa el comando SetHeat del atributo ThermostatTemperatureSetpoint:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat
", "params" : { "heatCelsius" : 22.0 } }
{}
Puntos de ajuste del modo Eco
El usuario establece los puntos de ajuste heatCelsius
y coolCelsius
que muestra la función ThermostatEco y no se pueden cambiar a través de la API de SDM.
Activar o desactivar el ventilador
Si el termostato admite un ventilador, usa el comando SetTimer del atributo Fan para encenderlo o apagarlo. Cuando lo enciendas, puedes especificar la cantidad de tiempo que quieres que funcione el ventilador, en segundos.
Por ejemplo, para hacer funcionar el ventilador durante una hora, haz lo siguiente:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.Fan.SetTimer
", "params" : { "timerMode" : "ON", "duration" : "3600s" } }
{}
Si se omite el campo duration
, el ventilador se ejecutará durante un tiempo predeterminado de 15
minutos.
Cómo verificar la conectividad del dispositivo
Si el dispositivo no responde a los comandos ni envía eventos, o si recibes errores de la API relacionados con el dispositivo, usa el atributoConnectivity para verificar si el dispositivo tiene el estado SIN CONEXIÓN. Verifica la conexión del dispositivo a Internet y asegúrate de que el Servicio de Nest esté activado.
Si tienes eventos habilitados, también deberías haber recibido un evento de recurso que indique que el dispositivo se quedó sin conexión:
{ "eventId" : "b89233fa-33d8-45b3-96ef-0afb9bd6d77e", "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 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 sistema de HVAC del termostato cambiara a CALEFACCIÓN:
{ "eventId" : "f98c1716-97de-470a-961f-716efe2d046b", "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 atributos asociados con este tipo de dispositivo. Habilita los eventos si necesitas reaccionar a ellos de alguna manera como parte de una integración.
Tiempo de los eventos
Ten en cuenta que es posible que un evento de cambio de estado del sistema de HVAC no se entregue al mismo tiempo que los eventos de cambio de modo del termostato.
Por ejemplo, a veces hay una demora en iniciar el modo de calefacción o enfriamiento de un termostato para proteger el sistema de HVAC. En esta situación, es posible que, al principio, cambiar el modo del termostato solo envíe eventos para los cambios de atributos ThermostatMode y ThermostatTemperatureSetpoint , y que el cambio de atributo ThermostatHvac se envíe más adelante como un evento independiente una vez que el sistema se encienda. Si no hubiera demoras en encender el 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 en tu comando. |
No se permite el comando en el modo actual del termostato. | FAILED_PRECONDITION |
Algunos modelos de termostatos no admiten el cambio del modo Eco cuando el modo del termostato está desactivado, según el atributo ThermostatMode . El modo del termostato debe cambiarse a CALOR, FRÍO o CALOR/FRÍO antes de cambiar el modo Eco. |
El ventilador del termostato no está disponible. | FAILED_PRECONDITION |
El termostato no tiene ventilador. No se pueden usar los comandos ni atributos relacionados con los fans para este dispositivo. |
No se permite el comando cuando el termostato está en el modo MANUAL_ECO. | FAILED_PRECONDITION |
No se puede establecer el punto de ajuste de temperatura cuando el termostato está en el modo Eco manual. |
Consulta la referencia de códigos de error de la API para obtener la lista completa de los códigos de error de la API.