Este proyecto permite automatizar y securizar la activación y desactivación de una cámara Blink mediante Latch y Alexa.
1️⃣ Mediante Herramienta de Localización detecto que llegaste o te fuiste de casa y envía un webhook a Misco-LB.
2️⃣ Misco-LB llama a Latch para bloquear/desbloquear la operación.
3️⃣ Latch notifica a Misco-LB el cambio de estado.
4️⃣ Misco-LB llama al Ayudante Binario de Home Assistant, que a través de Alexa activa o desactiva la cámara.
✅ Cuenta en Latch y acceso al portal de desarrolladores.
✅ Home Assitant con un Interruptor detectado con Alexa.
✅ Alexa configurada con una rutina que arma y desarma la cámara Blink con los cambios del Interruptor.
✅ Python 3 y Ngrok instalado en tu sistema.
- Accede a Latch Developer Portal.
- Crea una nueva aplicación y obtén:
- LATCH_APP_ID
- LATCH_SECRET_KEY
- Añade una operación llamada
"Control Cámara"y guarda su CONTROL_CAMARA_ID.
- En el panel de desarrolladores de Latch, busca la opción "Webhooks".
- Introduce la URL del Misco-LB:
https://TU_DOMINIO_O_IP/latch_webhook
- Si estás en localhost, usa
ngrokpara exponer Misco-LB:ngrok http 3000
- En tu herramienta de localización, configura el siguiente webhook cuando salgas de la zona de tu casa:
curl -X POST "http://TU_DOMINIO_O_IP/webhook" -H "Content-Type: application/json" -d '{"action": "left"}'- En tu herramienta de localización, configura el siguiente webhook cuando entres en la zona de tu casa:
curl -X POST "http://TU_DOMINIO_O_IP/webhook" -H "Content-Type: application/json" -d '{"action": "arrived"}'- Dentro de Home Assistant, ve a Configuracion, Usuarios, y obtén un Token de larga duración
- HOMEASSISTANT_TOKEN
- Crea un Ayudante Binario llamado activate_cam, para usar como activador de la Rutina de Alexa que activa la camara y apunta sus URLs
- HOMEASSISTANT_URL_ACTIVATE = "http://URL_HOMEASSISTANT:8123/api/services/input_boolean/turn_on"
- HOMEASSISTANT_URL_DEACTIVATE = "http://URL_HOMEASSISTANT:8123/api/services/input_boolean/turn_off"
git clone https://github.com/JoaquinRuiz/misco-lb.git
cd misco-lbpip install -r requirements.txttouch .env
nano .envLATCH_APP_ID = ""
LATCH_SECRET_KEY = ""
ACCOUNT_ID = ""
CONTROL_CAMARA_ID = ""
HOMEASSISTANT_TOKEN = ""
HOMEASSISTANT_URL_ACTIVATE = ""
HOMEASSISTANT_URL_DEACTIVATE = ""python miscolb.pySi es la primera vez, Latch pedirá un código de pareado. Genera un código en la app móvil de Latch y parealo con:
curl -X POST "http://localhost:3000/pair" -H "Content-Type: application/json" -d '{"pair_code": "ABC123"}'curl -X POST "http://localhost:3000/webhook" -H "Content-Type: application/json" -d '{"action": "arrived"}'✔️ Debería bloquear Latch y apagar Blink.
curl -X POST "http://localhost:3000/webhook" -H "Content-Type: application/json" -d '{"action": "left"}'✔️ Debería activar Latch y encender Blink.
curl -X POST "http://localhost:3000/latch_webhook" -H "Content-Type: application/json" -d '{
"t": XXX,
"accounts": {
"TU_ACCOUNT_ID": [
{
"type": "UPDATE",
"source": "DEVELOPER_UPDATE",
"id": "XXX",
"new_status": "off"
}
]
}
}'✔️ Alexa debería recibir el evento y desactivar Blink.
/alexa-latch-blink
│── miscolb.py # Código principal de Misco-LB
│── .env # Archivo con credenciales
│── requirements.txt # Librerías necesarias
│── README.md # Este archivo
│── account_id.txt # ID pareado de Latch (se genera tras el pareo)-
/pair → Realiza el pareado con Latch usando un código de la App móvil.
-
load_account_id() → Carga tu account_id pareado con Latch
-
save_account_id(account_id) → Guarda el account_id que acabas de parear
-
/webhook → Alexa avisa al Misco-LB cuando llegas o te vas.
-
lock_latch() → Bloquea Latch cuando llegas.
-
unlock_latch() → Desbloquea Latch cuando te vas.
-
/latch_webhook → Latch avisa al Misco-LB cuando cambia de estado.
-
trigger_homeassistant_routine(activate) → Llama a Home Assistant.
✅ Añadir soporte para múltiples cámaras en una misma cuenta de Latch. ✅ Ampliar la compatibilidad a otras cámaras o sistemas de seguridad.
🔹 Desarrollado por: Joaquín Ruiz Web
🔹 GitHub: Profile
🔹 Fecha: Febrero 2025
echo ".env" >> .gitignore
echo "account_id.txt" >> .gitignore