Un tema poco documentado sobre Home Assistant es la posibilidad de interaccionar con nuestro HA desde la aplicación de iOS, Apple Watch y el uso de Siri incluso a través de un HomePod, hasta la fecha, mi forma de proceder, era controlarlo a través de HomeKit activando este en el servidor de Home Assistant, pero existe una vía mucho más directa y eficaz que no requiere hacer uso de la aplicación de Apple. Las acciones de Home Assistant.
Para hacer uso de las acciones, debemos acceder a la «Configuración de la aplicación», en nuestro teléfono y en la lista de opciones seleccionaremos dentro de la sección Integraciones (Integrations) el botón Acciones (Actions). Se desplegará una nueva ventana en la que podemos crear acciones y escenas. Las escenas tienen un funcionamiento similar a las del propio Home Assistant por lo que su configuración resulta sencilla pero sus capacidades están muy limitadas.
Comprendiendo las acciones
A diferencia de lo que intuitivamente podríamos pensar, las acciones no funcionan ejecutando ninguna tarea en si misma, simplemente generan una interrupción en el servidor que puede ser detectada e identificada a través de una automatización. En realidad se trata de un Trigger identificable, algo similar a los WebHooks. Una vez ejecutada la acción e identificada, podemos utilizar una automatización que ejecute la tarea que nos interese al detectar la ejecución.
De una forma más técnica, las acciones ejecutadas en la aplicación de nuestro teléfono se genera un evento ios.action_fired en el bus de eventos de nuestro Home Assistant, siendo posible detectar este evento desde una automatización para ejecutar cualquier tarea como encender o apagar un dispositivo o la ejecución de un script, tal y como haríamos en cualquier automatización.
Creando una acción
Existen dos formas de crear las acciones, directamente desde la App de Home Assistant en nuestro teléfono o a través de nuestro configuration.yaml, para el segundo caso es necesario disponer de la versión 0,115 o posterior.
A través de la APP tendremos que configurar los siguientes parámetros:
Name
: el nombre de la acción que posteriormente será detectada como evento en Home Assistant .Text
: texto descriptivo de la acción que aparecerá en el teléfono o el reloj.Text Color
: color del texto en el botón de ejecución de la acción.Background Color
: color de fondo del botón.Icon
: icono de la acción, seleccionadle de la lista que se muestra en el teléfono, una vez seleccionada se guarda el nombre del icono, este mismo servirá a la hora de generar acciones desde nuestro configuration.yaml.Icon Color
: color del icono seleccionado.
Como hemos indicado, es posible crear la acción directamente desde el fichero de configuración de Home Assistant y estas se sincronizarán con nuestro teléfono, para ellos es necesario indicar los datos anteriores en el fichero con la estructura correcta:
ios: actions: - name: portal background_color: "#000000" label: text: "Abrir portal" color: "#ff0000" icon: icon: earth color: "#ffffff"
Los colores de las acciones se indican en hexadecimal y los iconos son del conjunto de iconos de Material Design. Una vez guardados los cambios con nuestra nueva acción reiniciaremos nuestro Home Assistant y la aplicación del móvil y debería aparecer la nueva acción creada dentro de las «Acciones sincronizadas».
Detectando la ejecución de la acción
Una vez generada la acción, es posible ejecutarla directamente desde la aplicación utilizando el botón que aparece dentro de la acción, al ejecutarla, como hemos explicado envía al bus de eventos en formato json una serie de información que puede ser detectada.
Atributo | Valor |
---|---|
actionID | El id de identificación de la acción. |
actionName | El nombre de la acción. |
sourceDeviceID | ID del dispositivo desde el que se ejecuta la acción. |
sourceDeviceName | El nombre identificativo del dispositivo desde el que ejecutamos la acción. |
sourceDevicePermanentID | Identificador único del dispositivo. |
triggerSource | La fuente desde la que se desencadena la acción, un widget, una acción del AppleWatch, Siri, etc. |
La detección de la acción en Home Assistant se simplifica a través de un desencadente tipo evento en una nueva automatización estableciendo como tipo de evento «ios.action_fired» y especificando el nombre de la acción a través del parámetro actionName.
De esta forma, cuando se ejecute la acción desde el dispositivo, se desencadena la automatización en Home Assistant. El código del desencadenante es el siguiente:
platform: event event_type: ios.action_fired event_data: actionName: portal
En nuestro caso, dentro de la automatización hemos optado por activar un script cuando se detecte la acción que procede a la apertura del portal, Script que creamos en nuestro artículo Domotizando el telefonillo.
service: script.turn_on data: entity_id: script.abrir_portal
Integrando la acción en Atajos de iOS para ejecutarla a través de SIRI, Apple Watch o un Widget
Existen varias formas de ejecutar la acción que acabamos de crear pero la más rápida y que permite una integración total con nuestros dispositivos iOS es a través de la aplicación Atajos de nuestro iPhone o iPad.
En esta aplicación, crearemos un nuevo atajo utilizando el botón + situado en la parte superior derecha. Añadiremos una nueva acción y de la lista localizaremos aquellas que permite utilizar Home Assistant.
Entre estas encontraremos una denominada «Perform Action» que es la encargada de ejecutar las acciones que hayamos creado en nuestro Home Assistant. Una vez seleccionada esta opción, en la lista de acciones seleccionaremos la que acabamos de crear, en nuestro caso la denominada «portal».
Pulsaremos en siguiente y nos pedirá que indiquemos un nombre para el atajo, este mismo nombre será la frase que utilicemos para ejecutar el atajo a través de Siri por lo que en nuestro caso, lo hemos denominado «Abre el portal». De esta forma, podemos utilizar la combinación «Oye Siri, abre el portal», nuestro dispositivo iOS ejecutará el atajo que a su vez ejecuta la acción de Home Assistant.
Buenas noches José Manuel:
Cree una automatización en «Atajos» por la cual cuando mi mujer sube al coche y se conecta el BT del movil al del coche, ejecuta un script en HA que comprueba si esta en zone.home y en tal caso ejecuta un switch.turn_on del switch.garaje que abre la puerta comunitaria
Problema—> está en ios 14.2 PERO esa automatización le pide autorización para ejecutarse…por lo tanto no es una «automatización pura» que digamos.
Se te ocurre alguna otra forma de que no pida «autorización» para su ejecución
Gracias
Buenos días, Apple por su política de seguridad no permite la ejecución automática de las automatizaciones basadas en Bluetooth, Localización, etc, salvo la excepción de las basadas en la localización que considera personales y se generan desde la aplicación Casa, como las de Cuando llegue a casa, Cuando todo el mundo salga de casa, el resto requieren de la aprobación previa del usuario. En principio la única solución, pero ya no actuaría como automatización es crear un atajo del tipo, Abre garaje y ejecutarlo a través de Siri. No se me ocurre otra solución posible. Es un tema de seguridad para evitar que el teléfono facilite datos ya que en versiones anteriores se podían usar este tipo de automatizaciones pero corrias el riesgo de que alguien, utilizando una automatización de este tipo, pudiera conocer la ubicación del terminal. Los de Apple son bastantes extremos con el tema de la seguridad y la privacidad y en algunas ocasiones, como esta, sus limitaciones impiden realizar tareas tan sencillas como la que pretendes hacer. De todas formas lo pensaré y si se me ocurre algo te lo comento.
Buenos días:
Gracias por tu explicación
He pensado hacerlo de otra forma.. Que es que en vez de que ejecute ese script que encienda una luz que no usamos
Y luego una auto en HA con un template como trigger para q si esa luz pasa a ON pues que abra la puerta…
En teoría debería funcionar…
Un saludo
Chimo
Buenas tardes:
Como indicabas…al ser automatización basada en BT «ajo y agua» y necesita confirmación
Chimo
Eso me temía, en la página de soporte de Apple hay un listado de las automatizaciones que se pueden ejecutar sin preguntar y lo que hablábamos, las basadas en bluetooth no están incluidas. https://support.apple.com/es-es/guide/shortcuts/apd602971e63/ios No hay posibilidad de usar el BT como desencadenante de una automatización.
Buenas noches y feliz año:
Estoy aquí para incordiarte otra vez 😀
Creo que podemos tener la solución y es con un input_boolean (teoría)
Creas un input_boolean.salir_garaje y el valor inicial lo marcas a off (viene así por defecto)
Cuando te conectas al coche hacer el get url que llama a tu home assistant (previamente debes crear un token permanente en HA) hace un turn_on entity_id input_boolean.salir_garaje y por lo tanto lo pasas a ON
Por otro lado una automatización con un trigger que será un template que mire el estado o atributo de ese input_boolean y que si pasa a ON llame al script o al switch.turn_on del switch.garaje
Creo que con eso y un bizcocho lo tendríamos solucionado
Nada….jajajaja
Me voy a la piltra