1 puntos por GN⁺ 2023-08-17 | 1 comentarios | Compartir por WhatsApp
  • 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_PULLDOWN de ESPHome en GPIO14, pero no funcionó
    • Como hay muchas variantes chinas de la ESP32-CAM, puede haber diferencias entre placas

Componentes y archivos públicos

  • Los componentes principales son los siguientes
    • ESP32-CAM
      • Se recomienda una placa con botón flash/download/io0 para facilitar el primer flasheo con ESPHome
      • Las placas sin ese botón deben flashearse usando un adaptador FTDI
    • Pulsador momentáneo
    • Anillo de luz LED RGB de 8 luces
    • Cable Micro USB de 10 m
  • Los archivos de impresión 3D y los archivos de configuración están disponibles públicamente

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/io0 mientras 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
  • En la configuración YAML generada, pega el código de configuración del repositorio de GitHub debajo de captive_portal:
  • Pulsa Save e Install, luego selecciona Plug 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
  • 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

 
GN⁺ 2023-08-17
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.

    • Me encanta la idea de 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
    • Yo hice exactamente lo mismo y puse un sensor de contacto Aqara Zigbee con un interruptor reed adentro, dentro del timbre real. Justo había una superficie plana sobre la bobina, así que funciona bien.
    • ¿No tienen el problema de que el interruptor reed se queda pegado y no se despega? Para este uso me fue muy bien con un sensor Hall, aunque quizá solo he visto interruptores reed de mala calidad.
    • Los interruptores reed son excelentes para usarlos así.
      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.

    • Para IoT DIY, ver PoE ESP32:
      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...
    • Exacto. Pasar cables una vez es mucho trabajo, pero incluso en el peor caso crece de forma lineal. Si tienes más dispositivos, necesitas más cableado, y como puedes derivar desde cajas de conexión existentes, quizá hasta se acerque a un crecimiento logarítmico.
      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.
    • Creo que Zigbee es un gran protocolo para estos usos. Funciona localmente, ni siquiera se sube al Wi-Fi, y los sensores duran años con una sola pila de botón.
    • Quiero alimentación solar. ¿Un timbre no se presiona quizá una vez cada 5 días? Cubres la carcasa con un panel solar y pones un supercapacitor para la energía nocturna.
    • Esas baterías son realmente molestas. Los dispositivos a batería también tienden a ser inestables. Cada semana hay que volver a emparejar algo o cambiar una batería.
      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.

    • DIY AirTags: https://github.com/seemoo-lab/openhaystack
    • Tengo MicroPython en una placa ESP32 devkit, conectada a Wi-Fi y MQTT, enviando valores de sensores 24/7, y lleva semanas funcionando sin problemas.
    • No encaja perfectamente con los requisitos, pero ¿probaste https://www.room-assistant.io/?
    • Si es MicroPython o CircuitPython, 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

    • Suena bastante frío. Cuando compré mi casa y me mudé, los vecinos vinieron a saludar, y algunos incluso trajeron regalos de bienvenida. No quisiera aislarme voluntariamente de esa vida de barrio
    • Parte de la demanda de timbres inteligentes parece apuntar al problema de los visitantes desconocidos. Te avisan quién está en la puerta incluso cuando el dueño no está en casa, y permiten ocultar el hecho de que la casa está vacía
    • Las casas en el Reino Unido son tan pequeñas que normalmente basta con tocar la puerta
      Los timbres se sienten anacrónicos. En mi calle casi nadie tiene uno
    • ¿Nunca piden paquetes por internet? ¿Nunca recibieron correo certificado de la autoridad fiscal? En especial, la razón por la que despegaron los timbres inteligentes es que están en un lugar donde es fácil conectarlos a una fuente de energía que ya existe fuera de la casa
    • No es tanto que la gente realmente quisiera hacer “inteligente” el timbre, sino que los avances en electrónica de consumo hicieron que fuera fácil instalar una cámara de seguridad/vigilancia en una ubicación de alta prioridad, la entrada, aprovechando una alimentación de unos 20 V que ya está cableada hasta el lugar perfecto en la mayoría de las casas
  • 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

    • ¿Qué tal el UniFi Doorbell? No necesita conexión a la nube, se mantiene local y puede integrarse con HomeAssistant / Scrypted / Homebridge
    • Amcrest también fabrica productos que admiten uso solo local y se integran con 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

    • ¿Qué cosas están construyendo?
  • 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-IS para ahorrar costos. Es un producto de Axis Communications
    Me 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

    • Dos núcleos RISC a 240 MHz son bastante potentes. 40 nm no está mal para un microcontrolador. Por ejemplo, la serie nRF52 de Nordic, un competidor, se fabrica con un proceso de 55 nm
    • No realmente. Hay versiones más recientes del chip, incluidas variantes RISC-V y versiones Zigbee/Thread, pero es difícil ver una mejora drástica en rendimiento/energía. En este segmento del mercado, las limitaciones de rendimiento son habituales, y ese es el trade-off que se acepta
      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