Objetivo
Que una app externa (Tasker, Atajos de iOS, un script) avise a Home Assistant enviando datos, por ejemplo la batería de una tableta que no tiene la app Companion.
Requisitos
- Un identificador de webhook largo y difícil de adivinar. Genéralo tú; no copies uno de internet.
En el editor visual: Añadir disparador → Otros disparadores → Webhook. El editor genera un ID aleatorio y, con el engranaje, puedes elegir los métodos permitidos y si solo se acepta desde la red local.
El código
alias: "Batería de la tableta"
triggers:
- trigger: webhook
webhook_id: "tableta-cocina-8f3k2q9xv7"
allowed_methods:
- POST
local_only: true
conditions:
- condition: template
value_template: "{{ trigger.json.bateria | int(100) < 20 }}"
actions:
- action: notify.mobile_app_mi_movil
data:
message: "La tableta de la cocina está al {{ trigger.json.bateria }} %. Ponla a cargar."
La otra app hace esta petición (aquí con curl):
curl -X POST -H "Content-Type: application/json" \
-d '{"bateria": 15}' \
http://homeassistant.local:8123/api/webhook/tableta-cocina-8f3k2q9xv7
Cómo funciona
- La dirección es
/api/webhook/<webhook_id>. Se crea sola al guardar la automatización. - Si el cuerpo es JSON (con la cabecera
Content-Type: application/json), los datos están entrigger.json. Si es un formulario, entrigger.data. Los parámetros de la URL, entrigger.query. local_only: true(por defecto) solo acepta peticiones desde tu red o desde los webhooks de Home Assistant Cloud.
Seguridad
- Un webhook no pide usuario ni contraseña: quien conozca el ID puede dispararlo. Trátalo como una contraseña.
- No lo uses para acciones peligrosas como abrir cerraduras o la puerta del garaje.
- Mantén
local_onlyactivado si no necesitas acceso desde internet.
Resultado
Acción
POST {"bateria": 15}Resultado
«La tableta de la cocina está al 15 %.
Ponla a cargar.»