Tu cámara de seguridad funciona perfecto… hasta que se cae internet. Y aunque no se caiga, cada fotograma que miras desde el sillón viajó a un servidor en otro continente y volvió. Hay una forma mejor: casi todas las cámaras IP del mercado, incluso las económicas, saben hablar RTSP. un stream de video que vive dentro de tu propia red y que Home Assistant puede consumir sin pasar por la nube del fabricante.
Esta guía es deliberadamente genérica: el equipo de referencia es una EZVIZ H8c Pro 4K (una domo motorizada 4K de gama de entrada), pero el 90% de los pasos aplica a cualquier cámara con RTSP. Hikvision, Dahua, Reolink, Tapo o la que tengas. Al terminar vas a tener el stream local en el dashboard, sensores de movimiento que no dependen de la nube, control PTZ por automatización, y. lo más importante. vas a saber qué hacer cuando la tarjeta de cámara se quede negra por culpa del códec H.265.

El hardware: qué necesitas y qué no
Antes del software, el inventario. Una integración local necesita tres cosas: la cámara, el servidor donde corre Home Assistant, y una alimentación decente.
- La cámara: cualquiera que exponga RTSP. Ojo con la letra chica. muchos fabricantes traen RTSP desactivado de fábrica y hay que habilitarlo desde su app.
- El servidor de Home Assistant: una Raspberry Pi 5 sobra para esta tarea, incluso transcodificando un stream 720p.
- Alimentación 12 V: la mayoría de estas domos motorizadas no tienen PoE. El conector RJ45 lleva solo datos; la corriente entra siempre por un jack DC aparte. Es el detalle que más planificaciones arruina: si pensabas llevar un solo cable de red al alero, revisa la ficha técnica antes de comprar.
- Tarjeta microSD: para la grabación local. Una cámara de vigilancia escribe 24/7, así que la tarjeta se desgasta mucho más rápido que en un celular. si puedes, usa una de tipo high endurance.

Una advertencia sobre el soporte: los soportes en L de estas cámaras están pensados para montaje en muro. Puestos boca abajo bajo un alero funcionan igual, pero el brazo corto de la L queda a la vista. Si te importa la estética del alero, busca un modelo diseñado para techo.

Configuración inicial: la app del fabricante es inevitable
Aunque el objetivo final sea operar local, el primer arranque casi siempre pasa por la app del fabricante y una cuenta de usuario. No es un abono de pago. es solo registro. , pero sin cuenta la cámara no se inicializa.

El flujo es siempre el mismo: crear cuenta, "Agregar dispositivo", escanear el código QR de la carcasa, y traspasarle tu WiFi a la cámara.



Toma una foto de la etiqueta antes de subirte a la escalera. En esa etiqueta viene el código de verificación de seis dígitos, y lo vas a necesitar dos veces: como contraseña del stream RTSP y para la integración en Home Assistant. Cuando la cámara ya esté a cuatro metros de altura, esa etiqueta deja de ser accesible.

Al final del asistente te van a ofrecer el plan de nube del fabricante. Puedes saltarlo sin culpa: la grabación en microSD funciona sin suscripción, y son unos ~CLP $11.000 mensuales (aproximado) que no necesitas pagar si vas a grabar local.

Fija la IP antes de seguir
Este paso no es opcional y es el que más "se me cayó la cámara del dashboard" causa a las dos semanas: asígnale una IP estática a la cámara desde tu router (reserva DHCP por dirección MAC). Home Assistant apunta al stream por IP; si el router se reinicia y reparte otra, la tarjeta queda negra y vas a perder media hora buscando un problema que no existe.
Habilitar RTSP: el interruptor escondido
De fábrica la cámara transmite solo hacia la nube del fabricante. El servidor RTSP local se activa en la app, y suele estar bien escondido. en el equipo de referencia, el camino completo es: pestaña Cuenta → Ajustes → Vista en vivo LAN → Iniciar escaneo, elegir la cámara encontrada, entrar con usuario admin y el código de verificación, y recién ahí, en el engranaje de arriba a la derecha, aparece Ajustes de servicio local con el switch de RTSP.



Un detalle que se pasa por alto: hay que guardar con el botón de arriba a la derecha. Recién después de eso la cámara acepta conexiones en el puerto 554.
Prueba el stream antes de tocar Home Assistant
Regla de oro de depuración: verifica el stream con VLC (Medio → Abrir ubicación de red) antes de configurar nada en Home Assistant. Si funciona en VLC, cualquier problema posterior es de Home Assistant, no de la cámara. Reemplaza VERIFIZIERUNGSCODE por el código de verificación de la etiqueta y KAMERA-IP por la IP local que fijaste:
# Stream principal (4K)
rtsp://admin:VERIFIZIERUNGSCODE@KAMERA-IP:554/h264/ch01/main/av_stream
# Sub-stream (menor resolucion, ideal para vista previa/deteccion)
rtsp://admin:VERIFIZIERUNGSCODE@KAMERA-IP:554/h264/ch01/sub/av_stream
El usuario es siempre admin y la contraseña es el código de verificación de la etiqueta, no la de tu cuenta en la app. Es el error número uno.
En este modelo también funciona la notación estilo Hikvision /Streaming/Channels/101 (principal) y /102 (sub). Si tienes otra marca, la ruta cambia. estas son las más comunes:
| Marca | Ruta RTSP típica |
|---|---|
| Hikvision / EZVIZ | /Streaming/Channels/101 (main), /102 (sub) |
| Dahua / Amcrest | /cam/realmonitor?channel=1&subtype=0 |
| Reolink | /h264Preview_01_main, /h264Preview_01_sub |
| TP Link Tapo | /stream1 (main), /stream2 (sub) |
| ONVIF genérico | consulta la ruta con onvif-cli o con ONVIF Device Manager |
Main stream vs sub stream: el principal entrega 3840 × 2160 y el sub 1280 × 720. Para el dashboard y las notificaciones al celular, el sub stream sobra y consume una fracción del ancho de banda (unos 1 a 2 Mbps contra 8 a 16 Mbps). Deja el 4K para la grabación en la tarjeta, no para la tarjeta del dashboard.
Montaje y alimentación
El montaje en sí es rápido: pegar la plantilla de perforación, tres hoyos con broca de 6 mm, tarugos, atornillar el soporte y encajar la cámara. Un par de cosas que conviene saber de antemano:
- El cable del transformador que viene en la caja suele medir menos de dos metros. Mide la distancia real al enchufe antes de decidir el punto de montaje.
- Si no hay enchufe cerca. el caso más común en Chile en fachadas y aleros. , la alternativa limpia es alimentar la cámara con una fuente de 12 V instalada en una caja de derivación estanca, y llevar desde ahí un tramo corto de cable hasta el conector jack DC de la cámara. Con un consumo máximo de unos 12 W, una fuente de 12 V 2 A (24 W) tiene holgura de sobra.
- Advertencia eléctrica: la conexión a los 230 V (220 V en Chile) es trabajo de un eléctrico certificado. Corta el automático, verifica ausencia de tensión y deja todos los empalmes dentro de la caja estanca. Para los empalmes al aire libre, los terminales impermeables IP68 son mucho más confiables que aislar con cinta.
- Actualiza el firmware antes de colgarla. La actualización deja la cámara inaccesible unos minutos y es mucho más cómodo hacerla sobre el escritorio.
Integrar la cámara en Home Assistant
Acá viene la parte que confunde a mucha gente, así que vale la pena decirlo antes: la mejor configuración usa tres integraciones en paralelo, y no se pisan entre ellas. Cada una hace una cosa que las otras no saben hacer.
La integración del fabricante (nube)
Si tu cámara tiene integración oficial en Home Assistant (EZVIZ, Reolink, Tapo…), instálala primero: Ajustes → Dispositivos y servicios → Agregar integración. En el caso de EZVIZ, el modelo es híbrido: los interruptores, sensores y comandos PTZ pasan por la API en la nube, mientras que el video se toma local por RTSP.
Después del login vas a obtener unas dos docenas de entidades: el stream de cámara, el binary sensor de movimiento, cuatro botones PTZ (arriba, abajo, izquierda, derecha), la sirena, el modo privacidad (que gira el objetivo hacia adentro del soporte), interruptores de audio y LED de estado, más sensores de IP local, estado PIR y última alarma.
El escollo real: "Error desconocido" al vincular RTSP
En el equipo de prueba (firmware V5.3.9), el diálogo que pide las credenciales RTSP fallaba de forma reproducible con "Error desconocido", con usuario y código correctos, y con el mismo stream funcionando sin problemas en VLC.
La causa está en el log de Home Assistant: la librería pyezvizapi que usa la integración se cae con un UnicodeDecodeError al interpretar la respuesta RTSP de la cámara, porque llega un carácter binario que no espera. Es un bug de la librería, no un error de tus datos. Cómo diagnosticarlo tú: si el diálogo falla, anda a Ajustes → Sistema → Registros y busca la traza; si aparece un UnicodeDecodeError o un codec can't decode byte, deja de probar contraseñas. no es la contraseña.
El workaround es limpio y, de hecho, es lo que recomiendo hacer siempre, aunque la vinculación funcione:
- Cancela el diálogo.
- Agrega la integración Generic Camera.
- Como fuente del stream, pon la URL RTSP del sub stream.
- Cambia el protocolo de transporte RTSP a TCP (con UDP vas a ver artefactos y cortes en cuanto el WiFi tenga algo de pérdida de paquetes).
- Deja el resto de los campos con sus valores por defecto.
Así la entidad de Generic Camera entrega el video local, y la integración del fabricante sigue aportando interruptores, sensores y PTZ.
Cuando el video se ve negro: H.265 y go2rtc
Este es el problema más frecuente de todos, y casi nunca está bien explicado.
Estas cámaras transmiten en H.265 (HEVC) de fábrica, porque a igual calidad ocupa cerca de la mitad del bitrate que H.264. El problema es que HEVC arrastra un lío de licencias de patentes, así que muchos navegadores. Chrome a la cabeza. no lo decodifican por software y solo lo reproducen si el equipo tiene decodificador HEVC por hardware. Resultado: la tarjeta del dashboard queda negra, sin ningún mensaje de error, mientras el mismo stream se ve perfecto en VLC (que trae sus propios decodificadores).
Dos aclaraciones que ahorran horas:
- El selector de "calidad" o "resolución" de la app no cambia el códec. Solo afecta lo que muestra la app, que usa su propio canal por el puerto 8000. Los streams RTSP siguen saliendo en H.265 antes y después.
- Cambiar a H.264 desde la app ya no siempre está disponible. En los firmware recientes esa opción simplemente desapareció del menú.
Si tu navegador no puede con HEVC, la solución real es meter un intermediario que transcodifique: go2rtc o Frigate.
La trampa del go2rtc integrado
Circula por internet la receta de crear un go2rtc.yaml en la carpeta de configuración para el go2rtc que Home Assistant trae incorporado. Eso ya no funciona: el servidor integrado genera su propia configuración y no lee archivos externos (verificado en el código fuente de Home Assistant 2026.7). El archivo se ignora sin decir nada y el stream responde 404.
El camino documentado es instalar un go2rtc independiente. En Home Assistant OS, lo más cómodo es el add on del propio desarrollador:
- En Ajustes → Complementos → Tienda de complementos, menú de tres puntos, agrega el repositorio
https://github.com/AlexxIT/hassio-addons. - Instala el add on go2rtc y arráncalo. La versión estándar ya trae transcodificación por hardware para Intel y Raspberry Pi.
- Con el File Editor, crea el archivo
go2rtc.yamlen la carpeta de configuración (en el File Editor se llama/homeassistant; la reconoces porque ahí estáconfiguration.yaml).
El contenido son tres líneas:
streams:
hausture:
- ffmpeg:rtsp://admin:VERIFIZIERUNGSCODE@KAMERA-IP:554/h264/ch01/sub/av_stream#video=h264
El sufijo #video=h264 es la instrucción clave: le dice a go2rtc que reempaquete o transcodifique el video a H.264 dejando el audio como está.
Trampa de copiar y pegar: al copiar desde webs o chats se cuelan caracteres invisibles que el parser de YAML rechaza sin dar explicaciones. El File Editor los marca como puntos o símbolos ¤. Si el add on no levanta y la configuración "se ve bien", escribe las tres líneas a mano.
Tras reiniciar el add on, go2rtc publica el stream ya convertido en rtsp://127.0.0.1:8554/hausture (el nombre después del puerto es el que definiste en el YAML). Esa es la URL que va como fuente en la Generic Camera. usuario y contraseña quedan vacíos, porque las credenciales ya están dentro del go2rtc.yaml.
Sobre el costo en CPU: transcodificar 720p es liviano y una Raspberry Pi 5 lo mueve sin despeinarse. Transcodificar 4K es otra historia. si de verdad necesitas el main stream en el dashboard, revisa las variantes del add on con aceleración por hardware.
Para el dashboard basta una tarjeta picture glance que muestre el video en vivo y deje los interruptores importantes a mano:
type: picture-glance
title: Haustür
camera_image: camera.hausture_kamera
camera_view: live
entities:
- switch.hausture_kamera_schlafen
- siren.hausture_kamera_sirene
- binary_sensor.hausture_kamera_bewegung
Los entity_id de arriba dependen del nombre que le hayas puesto al dispositivo en Home Assistant. reemplázalos por los tuyos.
ONVIF: movimiento local y presets PTZ
Además de RTSP, la mayoría de estas cámaras habla ONVIF (puerto 80), el estándar abierto de cámaras que Home Assistant también soporta. Vale mucho la pena agregarlo, porque entrega dos cosas que la integración en la nube no da:
- Binary sensors de movimiento locales (Motion Alarm y Cell Motion Detection), que se disparan sin pasar por la nube. más rápidos y sin depender del internet.
- La acción
onvif.ptz, que mueve la cámara a una posición guardada. Los botones PTZ de la integración en la nube solo mueven paso a paso; con ONVIF apuntas directo a un preset.
Se agrega desde Ajustes → Dispositivos y servicios → Agregar integración → ONVIF, dejando marcada la casilla "auto" para que descubra la cámara sola. Después van el puerto 80, el usuario admin y otra vez el código de verificación de la etiqueta.
Dos cosas que sorprenden: los presets que creaste en la app aparecen solo como números (1, 2, 3…) en orden de creación, porque el fabricante no exporta los nombres; y la página del dispositivo ONVIF se ve vacía, sin botones de control. El manejo es exclusivamente por la acción onvif.ptz, que puedes probar en Herramientas para desarrolladores → Acciones. Para el día a día, conviene una tarjeta de botón por posición:
type: button
name: Kamera → Haustür
icon: mdi:door
tap_action:
action: perform-action
perform_action: onvif.ptz
target:
entity_id: camera.hausture_onvif_mainstream
data:
move_mode: GotoPreset
preset: "1"
Si ONVIF falla con "NotAuthorized"
Si el login ONVIF rebota con NotAuthorized aunque el usuario y el código estén correctos, revisa el reloj de la cámara. La autenticación ONVIF usa WS UsernameToken, que firma cada petición con una marca de tiempo UTC; el estándar acepta apenas unos segundos de diferencia entre el reloj del cliente y el de la cámara. En el equipo de prueba el firmware calculaba mal el horario de verano y el reloj interno iba una hora adelantado, así que la cámara rechazaba absolutamente todos los logins correctos.
Lo tramposo es que la app muestra la hora bien y no ofrece ajuste de zona horaria. La solución fue fijar la zona horaria directamente por comando ONVIF (SetSystemDateAndTime) a un UTC fijo sin cambio automático de horario. En Chile este problema es especialmente probable: cambiamos de horario dos veces al año y muchos firmware asiáticos traen tablas de zonas horarias desactualizadas para nuestro país. Si tu cámara empieza a fallar justo el lunes después de un cambio de hora, ya sabes dónde mirar.
Qué integración usa para qué
| Integración | Qué entrega | Para qué la usas |
|---|---|---|
| Fabricante (nube) | Modo privacidad, sirena, panel de alarma, botones PTZ paso a paso | Ajustes del equipo y funciones de comodidad |
| Generic Camera (+ go2rtc) | El stream RTSP local, convertido a H.264 compatible con el navegador | La imagen: dashboard, capturas, notificaciones |
| ONVIF | Binary sensors de movimiento locales y presets por onvif.ptz |
Disparadores y giros de cámara en automatizaciones |
En resumen: la imagen viene de Generic Camera, los interruptores de la integración del fabricante, y las automatizaciones se disparan con ONVIF. Si solo quieres ver la cámara en el dashboard, con Generic Camera basta; las otras dos son la mejora opcional. Y como disparador de movimiento, prefiere siempre el binary sensor de ONVIF: responde local y no se cae junto con tu conexión a internet.
Limitaciones que conviene tener claras
- La parte de control sigue dependiendo de la nube. El video es local, pero interruptores, sensores en la nube y PTZ del fabricante necesitan internet. Una operación 100% local solo se logra con el RTSP puro más algo como Frigate para la detección.
- El WiFi manda. Un stream 4K estable exige buena señal. Si el punto de montaje tiene recepción dudosa, el cable de red resuelve el problema de raíz. recuerda que lleva datos pero no corriente.
- Sin zonas de detección. Muchas de estas cámaras analizan la imagen completa. La delimitación hay que hacerla con la orientación física y los presets.
- Cuenta obligatoria. Sin registro en la app del fabricante, la cámara no se inicializa. Es el peaje de entrada de esta gama.
Variantes y mejoras
Tres formas concretas de llevar esto más lejos:
- Detección de personas 100% local con Frigate. En vez de confiar en la IA del fabricante, envía el sub stream a Frigate y deja que corra la detección de objetos en tu propia red. Con una Raspberry Pi 5 más un acelerador USB de IA obtienes detección de personas y vehículos sin que salga un solo fotograma de tu casa. y a diferencia de la IA de la cámara, sí puedes definir zonas de detección.
- Notificación con imagen al celular al tocar el timbre. Un módulo relé/entrada WiFi conectado al pulsador del timbre existente le avisa a Home Assistant, y una automatización dispara
onvif.ptzpara girar la cámara al preset de la puerta, espera un segundo, toma una captura y te la manda por notificación. No necesitas un videoportero inteligente para tener el efecto de un videoportero inteligente. - Grabación de respaldo en NAS o disco USB. La microSD de la cámara se degrada con el tiempo. Si dejas go2rtc corriendo, puedes engancharle un
ffmpegque grabe segmentos de 10 minutos en un disco montado por red y que rote los archivos con más de N días. Es la diferencia entre "creo que tengo el video" y tenerlo.
Personalización para Chile
La cámara EZVIZ del tutorial original no se vende en MechatronicStore, pero todo lo demás sí. y como esta guía sirve para cualquier cámara con RTSP, lo importante es el resto de la instalación:
- Raspberry Pi 5 2/4/8GB RAM (SKU A-403). $139.990 CLP. El servidor de Home Assistant. La versión de 2 GB sobra para HA con go2rtc en 720p; si además vas a correr Frigate, apunta a la de 4 u 8 GB.
- Micro SD tarjeta de memoria 8/16/32/64 GB (SKU B-450). $12.990 CLP. Sirve tanto para el sistema de la Raspberry Pi como para la grabación local de la cámara.
- Transformador Cargador Fuente de Alimentación 12V 2A (SKU B-011). $4.490 CLP. Los 24 W dejan holgura frente a los ~12 W que consume una domo motorizada con los focos encendidos.
- Conector Jack DC macho recubierto 2.1x5.5mm (SKU GB6-12). $600 CLP. Es el estándar de facto en cámaras de seguridad: te permite armar el tramo final de cable a la medida en vez de pelear con el largo del transformador original.
- Clable De Red Ethernet 1.5mt (SKU F-505). $2.990 CLP. Si el punto de montaje tiene mal WiFi, este cable resuelve el problema (recuerda: datos sí, corriente no).
- Terminal empalme rápido Impermeable IP68 2 polos (SKU M-662). $3.890 CLP. Para los empalmes a la intemperie. Reemplazan a los bornes tipo Wago dentro de la caja de derivación y aguantan la humedad de un invierno chileno mucho mejor que la cinta aislante.
Dos ítems del listado no están en el catálogo y hay que conseguirlos aparte: la cámara IP con RTSP y la caja de derivación estanca IP65 para la instalación fija.
Nota práctica sobre privacidad: si la cámara apunta a la calle o al patio del vecino, achica el campo de visión con la orientación y los presets. En Chile la captación de imágenes de espacios ajenos entra en terreno delicado bajo la normativa de protección de datos personales, y en la práctica es la principal fuente de conflictos vecinales con este tipo de equipos. Apunta a tu propiedad y listo.
Recursos
- Tutorial original (alemán): EZVIZ H8c Pro 4K im Test: 4K-Schwenkkamera in Home Assistant einbinden
- Add on go2rtc para Home Assistant OS: AlexxIT/hassio addons
- go2rtc (proyecto y documentación de configuración): AlexxIT/go2rtc
- Librería pyezvizapi (donde está reportado el bug de
UnicodeDecodeError): RenierM26/pyEzvizApi - Documentación oficial de la integración Generic Camera: home assistant.io/integrations/generic
- Documentación oficial de la integración ONVIF: home assistant.io/integrations/onvif
Guía inspirada en el artículo de Philipp Schweizer en raspberry.tips, re enfocada como manual genérico de integración RTSP y con los componentes en stock local en MechatronicStore.










