Timbre inteligente con ESP32 y enfocado en la privacidad mediante integración local con Home Assistant
(tristam.ie)- Proyecto para crear un timbre DIY que se integra localmente con Home Assistant usando ESP32-CAM y ESPHome, pensado para usuarios que quieren evitar los timbres inteligentes dependientes de la nube
- La configuración básica incluye Home Assistant, el add-on de ESPHome y la app móvil complementaria de Home Assistant; al presionar el botón, se envía una captura de la cámara como notificación al teléfono
- El hardware está compuesto por una ESP32-CAM, un pulsador momentáneo, un anillo LED RGB de 8 luces opcional, un cable Micro USB de 10 m y una carcasa impresa en 3D; también se puede reemplazar por el LED integrado como flash
- Según la variante de ESP32-CAM, la distribución de pines y el comportamiento del pulldown pueden variar, por lo que se requiere cableado con una resistencia pulldown de 10kΩ entre la entrada del botón en GPIO14 y GND
- La carcasa de PLA se usó en el ejemplo, pero para resistencia al agua son más adecuados PETG o ABS, y debido al orificio de la cámara se necesita una ubicación de instalación protegida de la lluvia
Configuración del timbre local y materiales necesarios
- Este timbre inteligente busca una configuración amigable con la privacidad y se integra con Home Assistant mediante ESPHome
- Para comenzar, se necesita lo siguiente
- Una instancia de Home Assistant en funcionamiento
- El add-on de ESPHome
- La app móvil complementaria de Home Assistant para recibir notificaciones cuando se presione el botón
- En la compilación de ejemplo se usó un anillo de luz LED RGB de 8 luces, pero si se quiere simplificar se puede omitir y usar el LED integrado de la ESP32-CAM como flash
- Es posible que la versión AI-Thinker de la ESP32-CAM no tenga todas las resistencias pull-up y pull-down como una ESP32 normal
- Se intentó usar la función
INPUT_PULLDOWNde ESPHome en GPIO14, pero no funcionó - Como hay muchas variantes chinas de la ESP32-CAM, puede haber diferencias entre placas
- Se intentó usar la función
Componentes y archivos públicos
- Los componentes principales son los siguientes
- ESP32-CAM
- Se recomienda una placa con botón
flash/download/io0para facilitar el primer flasheo con ESPHome - Las placas sin ese botón deben flashearse usando un adaptador FTDI
- Se recomienda una placa con botón
- Pulsador momentáneo
- Anillo de luz LED RGB de 8 luces
- Cable Micro USB de 10 m
- ESP32-CAM
- Los archivos de impresión 3D y los archivos de configuración están disponibles públicamente
- Archivo .stl en Printables
- thatguy-za/esp32-cam-doorbell: configuración de Home Assistant y ESPHome
Impresión y ensamblaje de la carcasa
- La carcasa se imprime en tres piezas
- Cuerpo principal
- Placa de fijación para la ESP32-CAM
- Placa trasera que también funciona como soporte de pared
- Las carcasas delantera y trasera deben imprimirse usando soportes
- En el ejemplo se usó PLA, pero para resistencia al agua se recomienda filamento PETG o ABS con un relleno de 20 a 30%
- Después de imprimir, se añaden dos insertos roscados M2.5
- Se insertan en la cubierta frontal para poder atornillar el soporte de fijación de la ESP32-CAM
- Se inserta uno en la parte inferior de la placa trasera para fijar la placa frontal con un tornillo M2.5 de 10 mm
Flashear la ESP32-CAM con ESPHome
- Para arrancar la ESP32-CAM en modo de flasheo, se mantiene presionado el botón
flash/download/io0mientras se conecta a la computadora con el cable Micro USB - En Home Assistant, abre el add-on de ESPHome y crea un nuevo dispositivo
- La ruta es
Settings -> Add-ons -> ESPHome -> Open Web UI - El nombre del nuevo dispositivo puede ser, por ejemplo,
Doorbell - Elige ESP32 como tipo de dispositivo y marca
use recommended settings
- La ruta es
- En la configuración YAML generada, pega el código de configuración del repositorio de GitHub debajo de
captive_portal: - Pulsa
SaveeInstall, luego seleccionaPlug into this computer - Flashea el firmware desde el navegador mediante ESPHome Web
- Google Chrome se usa como el navegador más estable para flashear el firmware de la ESP32-CAM
- Tras compilar el firmware, se puede pulsar
Download Project, lo que puede tardar varios minutos
- Una vez flasheado el nuevo firmware, Home Assistant detectará el nuevo dispositivo y podrás agregar las entidades deseadas al panel
Automatización de notificaciones del botón
- Se configura una automatización para tomar una captura de la cámara y enviarla al teléfono cuando se presione el botón del timbre
- En Home Assistant, crea una nueva automatización
- La ruta es
Settings -> Automations -> + Create Automation - Crea una nueva automatización desde cero y en el menú superior derecho selecciona
Edit in YAML
- La ruta es
- Pega el YAML de automatización del repositorio de GitHub y luego ajusta el nombre de la entidad del dispositivo, como el teléfono móvil, según tu entorno
- Después de guardar, reinicia Home Assistant para activar la nueva automatización
Cableado y limitaciones de instalación
- Existen varias variantes de la placa ESP32-CAM, por lo que hay que verificar la distribución de pines de la placa real
- El cableado se arma soldando en la parte trasera del PCB inferior donde está el puerto Micro USB
- Se añade una resistencia pulldown de 10kΩ entre GPIO14 y GND
- Sin esta resistencia, se observó que GPIO14 suele quedar flotando en estado high
- Se recomienda cubrir la resistencia con tubo termorretráctil
- Debido al orificio de la cámara, no es una estructura completamente impermeable y debe instalarse en un lugar protegido de la lluvia
- La alimentación se suministra mediante el cable Micro USB de 10 m incluido en la lista de componentes
1 comentarios
Comentarios de Hacker News
Está bueno. También me gusta la iluminación.
También se podría pegar un interruptor reed (como un sensor común de puerta abierta/cerrada) cerca de la bobina magnética que hace sonar el timbre de un timbre tonto y hacer que envíe la información a Home Assistant.
Conecté un interruptor reed de USD 0.50 al timbre existente y lo llevé a un puerto digital de entrada/salida de un ESP alimentado por la misma fuente que la bobina del timbre. Cuando se presiona el timbre, envía por email una captura de la cámara de entrada solo local y reproduce una grabación del carillón del timbre en el estéreo del piso de arriba. Al principio intenté monitorear el voltaje de la bobina con una entrada analógica, pero era demasiado inestable; el enfoque más simple del interruptor reed detecta la corriente de forma muy estable.
la misma fuente que la bobina del timbre. Me pregunto qué otras fuentes de voltaje ambiguas habrá disponibles dentro de una casa. Cosas como la unidad principal del HVAC o una línea telefónica analógica.Una línea telefónica POTS (Plain Old Telephone Service) debería entregar unos 48 V DC cuando todos los teléfonos están colgados. Si un teléfono en la misma línea se descuelga, baja al rango de 3 a 9 V. Un teléfono descolgado normalmente consume unos 20 mA DC para funcionar, y su resistencia DC es de unos 180 Ω. El resto de la caída de voltaje ocurre en el recorrido del cable de cobre y en el circuito de la compañía telefónica, que normalmente tiene una resistencia en serie de 200 a 400 Ω para protección contra cortocircuitos y aislamiento del circuito de audio.
https://www.jkaudio.com/article_03.htm
De manera similar, alguna vez lo pegué en la carcasa superior de un relé para detectar si la bobina estaba energizada sin tener que pinchar directamente el circuito de control ni el circuito de carga.
Lo único que quiero en estos dispositivos IoT es que no dependan de la nube y que usen PoE. Preferiría tender miles de millones de cables antes que lidiar con baterías tontas que se mueren todo el tiempo. Las baterías también se están volviendo demasiado caras.
No aislado: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
Aislado: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
Cambiar baterías una vez al año es poco trabajo, pero si tienes decenas de dispositivos se acumula rápido y se repite periódicamente, así que no es mejor que un crecimiento lineal.
Cuando tenga mi propia casa, pienso irme por KNX.
Un poco fuera de tema, pero mi esposa tiene ADD bastante severo y pierde cosas con frecuencia. Tile solo permite encontrar objetos dentro de cierta distancia y parece fallar seguido.
Aunque es poco probable, me pregunto si alguien ha hecho un sistema de rastreo de ubicación en interiores que use beacons Bluetooth Low Energy para localizar objetos dentro de la casa en espacio 3D con un margen de error de unos pocos cm.
Más cerca del tema principal: el ESP32 es bastante impresionante. Sin embargo, con MicroPython o CircuitPython no logré mantener una conexión Wi-Fi de forma estable, aunque el rango de cosas posibles es sorprendente. Mi placa es bastante vieja, así que tal vez comprar una placa nueva marque la diferencia.
MicroPythonoCircuitPython, no sé qué esperabas. Para sistemas embebidos que necesitan confiabilidad, están prácticamente prohibidos.Es interesante que en algunas partes del mundo la existencia del timbre sea tan importante que incluso surja la necesidad de hacerlo “inteligente”. El éxito de los timbres inteligentes muestra bien esa demanda
Yo no tengo timbre. Si una visita no sabe cómo contactarme a mí o a otra persona de la casa, lo más probable es que, para empezar, no tenga mucho motivo para venir
Y no soy el único. Según una encuesta muy poco científica que hice caminando la semana pasada, la mayoría de mi calle era similar, y probablemente también la mayor parte de mi ciudad
Los timbres se sienten anacrónicos. En mi calle casi nadie tiene uno
Según las reseñas que vi, la cámara timbre Reolink parece ser la única opción comercial que cumple con los requisitos del autor. Funciona localmente y se puede integrar con Home Assistant
Sin embargo, para el intercomunicador se necesita una app aparte. La solución casera del autor no parece ofrecer comunicación de audio y, al menos solo con el protocolo de la cámara, tampoco parece haber forma de usar audio bidireccional directamente desde Home Assistant
El ESP32 es realmente una madriguera de conejo profunda. Ya hay muchísimos proyectos que usan ESP32 o están en desarrollo con él, y ahora tengo una cosa más para tener en cuenta
Gran proyecto. La cámara ESP32 puede tener una calidad de imagen bastante mala. Sería útil que el blog incluyera una foto en resolución completa tomada desde el timbre
Excelente proyecto. Es bueno ver la variedad de timbres ESP32 que crean los makers
Sería bueno tener algún video o foto de ejemplo. Hace tiempo probé una ESP32 Cam y, aunque por sí sola es impresionante, personalmente no tenía la calidad que quería. Claro que mi uso de un timbre inteligente está más orientado a seguridad que simplemente a “ver quién está”
Ahora estoy usando un timbre PoE bastante caro que compré en estado
AS-ISpara ahorrar costos. Es un producto de Axis CommunicationsMe encanta que pueda recibir eventos ONVIF. Si puedes consumir eventos, en la práctica puedes hacer lo que quieras, lo que aumenta mucho la flexibilidad de estos productos. Por ejemplo, también hay una forma de crear eventos personalizados, como cuando alguien tapa con la mano el lente de la cámara
Home Assistant tiene un soporte excelente para ONVIF. Quiero hacer una especie de wrapper alrededor de scripts (como un booleano de puerta abierta/cerrada) para obtener eventos ONVIF nativos
Uno de los comentarios de este sitio señalaba problemas de rendimiento del ESP32. Nunca he trabajado con dispositivos IoT ni con placas de este tipo, pero como son relativamente baratas me dieron ganas de probarlas, y al investigar descubrí que el ESP32 se fabrica con un proceso de 40 nm
Me pregunto si existe una versión más reciente fabricada con un proceso más avanzado que ofrezca mayor rendimiento con un presupuesto de energía similar
Hay familias de SoC que ofrecen mejores trade-offs, pero no muchas son tan amigables para aficionados como el ESP32. Quizá Nordic, o irse hacia una computadora de placa única pequeña como una Pi Zero
Aun así, el ESP32 es mucho más potente de lo que necesitan la mayoría de los dispositivos de automatización del hogar. Solo empieza a encontrar límites en algunas tareas más pesadas, como streaming de video o machine learning. Incluso entonces, si uno es ingenioso, se pueden hacer bastantes cosas