Cómo diseñar una automatización

Antes de comenzar a usar la API de Automation, debes diseñar tus automatizaciones.

Determina los siguientes parámetros para cada automatización:

  • Las circunstancias en las que se debe sugerir la automatización al usuario. Por ejemplo, si el usuario acaba de agregar tres luces nuevas a su casa, es posible que le interese una automatización en particular adaptada para controlar las luces.
  • Qué tipos de dispositivos se requieren para la automatización Por ejemplo, si el usuario acaba de agregar tres luces nuevas a su casa, es posible que le interese una automatización en particular adaptada para controlar las luces. Entre los ejemplos de tipos de dispositivos de luz, se incluyen OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice o ExtendedColorLightDevice.
  • Qué atributos y comandos de atributos son necesarios para la automatización y si son compatibles con la API de Automation
  • Los atributos que deben activar la automatización como activadores. Los activadores se analizan en Componentes de automatización.
  • Condiciones adicionales que determinan si la automatización debe ejecutarse y qué acciones se deben realizar.
  • El flujo de ejecución de la automatización. ¿Debe ejecutarse de forma secuencial o en paralelo? ¿Necesitas varias instrucciones lógicas?

Cuando diseñes, puede ser útil diagramar el flujo de la automatización, nodo por nodo, con la lógica requerida en cada paso.

Una vez que hayas diseñado una automatización, usa la DSL de Automation para compilarla. La automatización que compilas es, en esencia, una “plantilla”: todas las estructuras y dispositivos que contiene son marcadores de posición y se completan con la estructura y los dispositivos específicos de cada usuario cuando “adopta” la automatización para su propio uso.

A continuación, se muestran los diferentes tipos de automatizaciones que una app podría crear con las APIs de Home. Consulta la página Cómo compilar una automatización para ver extractos de código relacionados con estos ejemplos.

Automatización sencilla

Supongamos que necesitas escribir una app que cree una automatización que levante las cortinas a las 8:00 a.m. Para ello, la app necesita una lista de las cortinas (dispositivos con el tipo de dispositivo WindowCoveringDevice) presentes en la estructura que admiten automatizaciones, que puede proporcionar la API de Discovery.

En el caso de las automatizaciones que deben ejecutarse en un momento determinado, también debes asegurarte de que el usuario haya asignado una dirección para la estructura que eligió en Google Home app (GHA). De lo contrario, la automatización no conocerá la zona horaria en la que se ejecutará. La API de Discovery puede ayudarte a determinar si se asignó o no una dirección a la estructura.

Por lo tanto, el flujo de ejecución se vería de la siguiente manera:

  1. Con la API de Discovery, recopila la lista de dispositivos WindowCoveringDevice.
  2. Si no se propaga la dirección, notifica al usuario que debe proporcionar una dirección y detén la ejecución.
  3. De lo contrario, define la automatización:
    1. Inicia la automatización a las 8:00 a.m.
    2. Para cada uno de los persianas, llama al comando upOrOpen del rasgo WindowCovering.

Automatización compleja

Imagina una app que compila una automatización que activa luces intermitentes cuando se detecta movimiento.

Una de las primeras tareas para implementar esta app es averiguar qué luces están disponibles en la casa del usuario con la API de Discovery. Con esta información, tu app ahora puede mostrar las luces disponibles y, tal vez, permitir que el usuario seleccione las que quiere que parpadeen.

El flujo de ejecución:

  1. Con la API de Discovery, recopila la lista de dispositivos de luz presentes en la estructura, que serían todos los dispositivos con un tipo de dispositivo de OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice o ExtendedColorLightDevice.
  2. Proporciona una forma de seleccionar las luces que parpadean, quizás a través de un panel de configuración personalizado.
  3. Define la automatización:
    1. Supervisa AreaPresenceState para iniciar la automatización cada vez que alguien salga o llegue a las instalaciones.
    2. Si el presenceState indica que la estructura está ocupada, haz parpadear las luces elegidas.

Automatización genérica

Para ver un ejemplo de una automatización más sofisticada, considera una que guíe al usuario a crear una automatización abierta, según cualquiera de los dispositivos que tenga en su casa o todos ellos.

Es posible que la automatización primero le solicite al usuario que seleccione una estructura.

Luego, la automatización podría mostrar todas las habitaciones de la estructura en una vista de esquema expandible, en la que se muestran los dispositivos de una habitación cuando se expande. Si se expande un dispositivo, se muestran los activadores y los comandos que admite.

El usuario podría elegir los dispositivos, los activadores y los comandos que quiere usar, y la automatización lo guiaría para crear una automatización.

Cuando todas las elecciones y decisiones del usuario sean definitivas, la automatización la generará y la guardará en la estructura que eligió.

En un nivel alto, esa automatización debería recopilar varios conjuntos de datos sobre la casa del usuario con la API de Structure, la API de Device y la API de Discovery.

Tabla 1: APIs de Home y la información que pueden proporcionar
APIInformación
API de Structure
  • Qué estructuras están disponibles
  • Qué habitaciones hay en la estructura
API de Device
  • Qué dispositivos están en la estructura elegida
  • Dónde se encuentran esos dispositivos (qué habitación)
API de Discovery
  • Qué atributos admiten los dispositivos
  • Qué activadores y comandos están disponibles en esos atributos
  • Qué restricciones existen en los parámetros de estos comandos