2 puntos por GN⁺ 2024-04-24 | 1 comentarios | Compartir por WhatsApp
  • ESPHome es una plataforma que convierte placas como ESP32, ESP8266, BK72xx y RP2040 en dispositivos de smart home, configurándolos mediante YAML en lugar de C++
  • Admite control local y actualizaciones inalámbricas para reducir la dependencia de la nube, y permite crear diversos dispositivos combinando sensores, pantallas y componentes
  • Su alcance es amplio: desde usuarios DIY hasta integradores profesionales y fabricantes que crean productos certificados Made for ESPHome
  • Los entornos compatibles incluyen Espressif ESP32 y ESP8266, Raspberry Pi RP2040, Nordic Semiconductor nRF52, Realtek RTL87xx, Beken BK72xx, e incluso una plataforma host para algunos componentes
  • Para empezar, la ruta con Home Assistant es la más sencilla; los usuarios avanzados pueden partir de la guía de línea de comandos o de proyectos preconfigurados

Dispositivos locales de smart home configurados con YAML

  • ESPHome convierte ESP32, ESP8266, BK72xx, RP2040 y otras placas compatibles en dispositivos de smart home
  • En lugar de código C++ complejo, los dispositivos se configuran mediante archivos de configuración YAML
  • Funciones principales

    • Configuración sin programar: usa una configuración YAML simple sin C++ complejo
    • Actualizaciones inalámbricas: permite actualizar sin acceder físicamente al dispositivo
    • Diseño modular: admite cientos de sensores, pantallas y otros componentes
    • Control local: funciona localmente sin depender de la nube
  • Recursos relacionados

Alcance de usuarios y rutas para empezar

  • Quién lo usa

    • Usuarios DIY: crean sensores, interruptores y pantallas adaptados a necesidades específicas
    • Aficionados al smart home: amplían sus sistemas de automatización del hogar con dispositivos personalizados de bajo costo
    • Integradores profesionales: despliegan dispositivos inteligentes con control local para clientes
    • Fabricantes: crean productos certificados Made for ESPHome con firmware estandarizado
  • Microcontroladores y entornos de ejecución compatibles

    • Espressif ESP32 y ESP8266: admite los microcontroladores ESP32 y ESP8266 usados en muchos proyectos de IoT
    • RP2040: admite el microcontrolador RP2040 de Raspberry Pi
    • Otros chips: admite Nordic Semiconductor nRF52, Realtek RTL87xx y Beken BK72xx
    • Plataforma host de escritorio: muchos componentes de ESPHome también pueden ejecutarse en computadoras de escritorio
  • Cómo empezar

    • Empezar mediante la app de Home Assistant es la ruta más sencilla: Home Assistant Guide
    • Los usuarios avanzados que prefieran trabajar desde la línea de comandos pueden usar una guía aparte: Command Line Guide
    • Los casos de uso comunes pueden iniciarse a partir de proyectos preconfigurados: Browse Projects

1 comentarios

 
GN⁺ 2024-04-24
Opiniones de Hacker News
  • Soy una de las personas que lideran ESPHome. Si tienen preguntas, avísenme.
    El sábado pasado anunciamos que ESPHome ahora pertenece a Open Home Foundation.
    Open Home Foundation es una organización que busca proteger la privacidad, la libertad de elección y la sostenibilidad para el hogar inteligente y todas las personas que viven en él: https://www.openhomefoundation.org/blog/announcing-the-open-...

    • Quienes quieran probar ESPHome pueden instalar proyectos ya listos y empezar de inmediato, sin escribir ni una sola línea de configuración: https://esphome.io/projects/
      Pueden convertir un microcontrolador barato directamente desde el navegador en un asistente de voz, un proxy Bluetooth o un reproductor multimedia.
    • No tengo preguntas, solo elogios. ESPHome es realmente excelente, y cada vez que veo sus funciones me sorprende.
      Había profundizado bastante en el SDK de Espressif e implementado casi por completo un interruptor inalámbrico con sensor de temperatura y MQTT, pero en cuanto descubrí ESPHome todo ese trabajo dejó de ser necesario.
      Todas las funciones que había escrito ya existían, y además venían con muchas más.
    • ESPHome es excelente, pero quiero alejarme del IoT por Wi-Fi. La gran razón es que me gustan las redes mesh con autorrecuperación que funcionan completamente offline sin tener que configurar demasiado.
      Parece que Espressif tiene algunos dispositivos con funciones Zigbee, y me pregunto si en el futuro habrá una vía para crear dispositivos Zigbee directamente.
    • El proyecto ESPHome es inusualmente competente y centrado en el usuario; funciona tan bien que casi resulta extraño.
      Dicho eso, no sé bien si lo que quiero entra dentro del alcance de ESPHome ni si puede implementarse de forma limpia, pero me gustaría poder ejecutar dentro del dispositivo bucles de retroalimentación rápidos y algoritmos onboard más complejos.
      Por ejemplo, quisiera que un sensor de luminosidad controle una bombilla, ajustando continuamente el brillo con cambios tan pequeños que casi no se perciban, y usando algo como un filtro de Kalman para mantener una iluminación y una temperatura de color constantes según la hora del día.
      También quisiera controlar continuamente purificadores de aire, ventilación, calefacción, humidificación, deshumidificación y aire acondicionado para optimizar el ambiente y el consumo eléctrico. La ventilación reduce CO2/TVOC, pero introduce PM2.5 y temperatura exterior, y calefacción/refrigeración, ventilación y humedad están entrelazadas de forma compleja.
      La calefacción auxiliar es mucho más cara que la calefacción principal, pero en días muy fríos es necesaria; además, cuando no hay nadie en casa cambian las prioridades, así que cuando hay presencia quiero una humedad habitable y, cuando no, minimizar la humedad.
      En segundo lugar, me gustaría poder crear con ESPHome no solo dispositivos Wi-Fi, sino también dispositivos Zigbee.
    • ESPHome hizo que flashear, compilar, ver logs y hacer actualizaciones OTA fuera fácil. Antes siempre eran tareas molestas, pero ahora son simples.
      Ver logs por Wi-Fi es tan sencillo que cuesta creerlo.
      Hice un mini receptor/transmisor infrarrojo para controlar mi sistema de audio con el control remoto de la TV, y la configuración fue muy fácil; la integración con Home Assistant también es excelente.
  • Tengo más de 20 dispositivos funcionando con ESPHome; alrededor de tres cuartas partes están dentro de la red de Home Assistant, y unos 6 funcionan de forma independiente, con ESPHome comunicándose con otros mediante MQTT.
    Estoy monitoreando una estación meteorológica china barata a la que le cambié el interior por un ESP32, tanques de agua de lluvia, humedad del suelo en el invernadero, temperatura y humedad en varios puntos de la casa, calidad del aire en la cocina y en los cuartos de los niños, etc.
    ESPHome es un proyecto realmente subestimado. Literalmente, con 5 minutos, hardware de 10 dólares y sin programar, puedes crear tus propios dispositivos IoT para la casa y obtener datos en tiempo real desde cualquier lugar de la propiedad.

    • Me pasa algo parecido; son tan baratos que tengo una docena de distintas variantes de placas ESP32 en mi caja de componentes electrónicos.
      Tener hardware al alcance de la mano cuando se te ocurre una idea da una libertad enorme.
      Son sorprendentemente estables, y módulos como el controlador de aspersores se pueden programar para operar de forma independiente, así que mientras tengan energía siguen funcionando.
      Me enteré varios meses después de que la tarjeta microSD de Home Assistant se había dañado, porque mi equipo de hidroponía seguía funcionando normalmente.
      Lo que más tiempo me tomó fue cablear un convertidor DC/DC para accionar relés dentro de una Sockitbox impermeable.
      También es muy útil tener a mano placas breakout con bornes de tornillo: https://www.amazon.com/whiteeeen-Development-Expansion-ESP-W...
      CloudFree también es una buena opción para conseguir componentes IoT comerciales que se pueden reprogramar con ESPHome: https://cloudfree.shop/
    • Deberías compartir con más detalle el hardware, las carcasas, la alimentación y el proceso de trabajo que usaste para esos dispositivos.
    • Me da curiosidad cómo los alimentas.
      Hace tiempo usé ESPHome con un Wittycloud ESP8266 de 3 dólares para extraer datos de análisis solar y ver el consumo en Home Assistant.
      Pero, aparte de un adaptador USB, todavía no encontré una forma elegante de alimentarlos. Para sensores exteriores me gustaría tener una solución prolija con batería.
    • En general estoy de acuerdo, pero quitaría lo de hardware de 10 dólares.
      Parece que usan chips bastante avanzados.
      Si quieres ahorrar más, con ESP8266 puedes bajar hasta 4 dólares, lo cual es realmente impresionante.
    • Me pregunto si pueden recomendar componentes adecuados para uso de seguridad.
      Por ejemplo, para el caso de que alguien entre a mi casa alquilada sin dejar señales de intrusión.
      La documentación muestra varias opciones, pero no sé si debería ir por detección de movimiento/presencia o por un detector binario de presencia. Me interesa saber qué sensor sería mejor y más rentable.
  • Lo mejor de ESPHome es su comunidad fuerte y activa.
    Para el monitor de calidad del aire de hardware open source que creamos [1], un miembro de la comunidad desarrolló una integración sofisticada con ESPHome [2].
    Esa integración incluye todas las funciones del firmware open source básico y, a veces, incluso implementó funciones nuevas más rápido que nosotros.
    En cierto sentido, esta competencia open source nos ayudó y nos motivó a mejorar nuestra versión del software.
    [1] https://www.airgradient.com/
    [2] https://github.com/MallocArray/airgradient_esphome

  • Como material relacionado, hay una colección de configuraciones de dispositivos ESPHome para hardware comercial: https://devices.esphome.io/
    También hay una colección de configuraciones de Tasmota para dispositivos que, en muchos casos, también pueden ejecutar ESPHome: https://templates.blakadder.com/

  • Saliéndome un poco del tema, me gusta ESPHome y lo he usado para varios sensores de temperatura basados en IoT en mi casa.
    Pero el punto donde siempre choca con el WAF, es decir, la aceptación por parte de mi esposa, es meter y esconder en un contenedor que se vea bien el ESP32, los sensores y el enredo de cables.
    Me da curiosidad qué usan los demás para ocultar los componentes electrónicos.

    • Si tienes una impresora 3D, puedes hacer algo que pase mi criterio de WAF.
      Los productos de Apollo están hechos de forma bastante discreta: https://apolloautomation.com/products/sensor-stand?pr_prod_s...
    • Para lo que necesito como dispositivo independiente, primero reviso si ya existe un producto comercial listo. Normalmente es más costo-efectivo y se ve mejor que hacerlo uno mismo.
      Para sensores de temperatura, normalmente elijo productos comerciales compatibles con este firmware: https://github.com/pvvx/ATC_MiThermometer
      Como plus, pueden funcionar más de un año con batería.
    • Puedo recomendar recipientes Tupperware. Hay de muchas formas y tamaños, y son muy baratos.
      Si usas un recipiente de vidrio o de plástico transparente, los componentes no se ensucian y además puedes ver el interior.
      Para instalarlo en la pared, puedes atornillar la placa al interior de la tapa y fijar esa tapa a la pared. Así puedes acceder fácilmente con solo sacar el recipiente de la tapa.
      La desventaja es que puede verse feo si lo pones en un lugar muy visible.
    • Imprimo en 3D los gabinetes para proyectos.
      Normalmente busco en Thingiverse algún diseño existente que encaje más o menos. Si usas componentes comunes, hay más probabilidad de encontrar un modelo que calce exactamente.
    • Aquí la respuesta es M5Stack.
  • Hay una pregunta para la que no encontré respuesta buscando.
    Tengo un sistema de alarma para fosa séptica, y cuando un interruptor de flotador detecta que el tanque está 3/4 lleno, se activa una alarma sonora y visual.
    Hay un par de contactos secos NO que se cierran cuando suena la alarma.
    Me pregunto cómo debería monitorear si esos contactos están cerrados o abiertos. Parece que debería poder hacerse con un pin GPIO, pero no encontré una respuesta útil al buscar.
    Estoy pensando en rendirme y usar un relé empaquetado RIB01BDC [0] para encender una Raspberry Pi y hacer que envíe un correo cuando se cierre el contacto de la fosa séptica.
    [0] https://www.functionaldevices.com/product/rib01bdc/

    • Sin asumir qué microcontrolador usas, puedes conectar un contacto a tierra y conectar en serie el pin GPIO, el otro contacto, una resistencia de 10k o 100k y VCC.
      Si haces que el microcontrolador lea periódicamente el pin GPIO, un nivel alto significa que el contacto está abierto y la alarma no está sonando; un nivel bajo significa que el contacto está cerrado y la alarma está sonando.
      La configuración GPIO/contacto/resistencia/VCC actúa como un circuito pull-up que lleva un lado del circuito a un nivel lógico alto, y la resistencia limita la corriente que circula cuando el contacto se cierra.
      Si el microcontrolador admite configurar un pull-up interno en el pin GPIO, también podrías conectar el pin directamente al contacto sin hardware adicional.
      A la inversa, si tiene configuración de pull-down interno, puedes invertirlo conectando VCC al contacto y el GPIO directamente al otro lado. Debes consultar la documentación del microcontrolador para ver las funciones disponibles y la limitación de corriente.
    • Uso un sensor ultrasónico y ESPHome para monitorear el nivel de agua de un pozo de bombeo de drenaje.
      Dependiendo de la información que quieras obtener del monitoreo de la fosa séptica, esto también podría ser una opción útil.
  • Hice un reloj de fichaje de entrada y salida con ESPHome y M5StickC.
    Cuando registro entrada/salida, Home Assistant envía la hora a Google Sheet, y funciona de forma muy estable.

  • Un dato interesante: el ESP32 admite detección táctil capacitiva en algunos pines, así que puedes convertir una superficie conductora en un botón o dispositivo de entrada para el hogar inteligente.
    También está bien soportado en ESPHome: https://esphome.io/components/binary_sensor/esp32_touch.html

  • Tengo un pequeño proyecto que quería intentar hacer
    Quiero consultar con la API de transporte local los horarios de llegada de los buses en una parada cerca de mi casa, y mostrar los horarios de los 3 buses principales en una pantalla grande o en 3 pantallas pequeñas, una por bus
    No hace falta que sea de alta resolución, pero sí que sea lo bastante grande y brillante para que mi familia pueda verlo de un vistazo desde lejos. Por ejemplo, algo como mostrar con displays de 7 segmentos los 3 dígitos del número de bus y 4 dígitos de los minutos restantes hasta la llegada
    Debería poder actualizarse por Wi-Fi, y no me molesta que lleve conectado un dispositivo de bajo consumo como un Arduino/Raspberry Pi. Mejor aún si pudiera funcionar con pilas AA
    Lo primero sé hacerlo, pero de lo segundo no tengo idea, y nunca he soldado. Me vendría bien que alguien con experiencia me oriente

    • ESPHome es un buen punto de partida porque es un framework ideal para ensamblar varios componentes en capas
      Puedes combinar cosas como el componente display para dibujar en una grilla de píxeles https://esphome.io/components/display/, un renderizador de texto, la plataforma addressable_light que crea una matriz de visualización sobre drivers LED direccionables https://esphome.io/components/light/neopixelbus https://esphome.io/components/display/addressable_light, y paneles LED 8x32 baratos https://www.google.com/search?q=8x32+ws2812b
      Si necesitas más espacio, puedes hacer varios o unir paneles
      Por supuesto, tampoco hace falta reinventar la rueda; puedes seguir una guía como esta: https://community.home-assistant.io/t/led-matrix-with-esphom...
      En especial, si vas por el camino de reutilizar hardware existente como Ulanzi, no hace falta soldar mucho; lo clave es la conexión de datos correcta y la alimentación adecuada
    • Si parece que ya estás familiarizado con Arduino, simplemente úsalo como framework
      Puedes programar un ESP32 con Arduino y seguir usando las librerías conocidas y el manejo de Wi-Fi de siempre
      En Adafruit puedes comprar una matriz RGB, y también venden placas ESP32 capaces de manejarla directamente, así que en la práctica es casi plug-and-play y requiere muy poco conocimiento de hardware
      Si quieres hacerlo tú, pero necesitas una guía, mira este proyecto que documenta tanto el hardware como el software de un display de texto conectado por Wi-Fi muy parecido a lo que buscas: https://github.com/BlueAndi/esp-rgb-led-matrix
  • Personalmente no lo uso, pero me parece una idea realmente excelente
    Antes hice una placa de sensores y escribí el firmware yo mismo; tendría que ver si puedo configurar ESPHome fácilmente para que corra en esa placa
    Eso sí, una función imprescindible que ya tengo en mi firmware son las actualizaciones OTA por pull
    Ahora, si copio el firmware a una carpeta, todos los sensores de la casa se actualizan automáticamente a ese firmware a través de un servidor HTTP
    En ESPHome hay que empujar la actualización a cada sensor por separado, así que con decenas de dispositivos se vuelve tedioso

    • Yo hice casi lo mismo, pero la última vez que revisé, casi no había recursos que ayudaran a crear firmware personalizado para una placa nueva con varios sensores, aparte de leer el código de ESPHome
      Me parecía más fácil y rápido escribir mi propio firmware que se comunicara con un backend simple
      También me pregunto cómo encaja el código para dispositivos ESP32. Si quieres OTA en un dispositivo con 4 MB de flash, en la práctica el límite del programa es de alrededor de 1 MB
      Incluso un programa sencillo que solo llama a GPIO, ADC, UART, Wi-Fi, HTTPS, servidor HTTPS, interrupciones, FreeRTOS, MQTT, NVS, información del chip, logs, OTA y funciones de la biblioteca estándar ya supera el límite de 1 MB. Solo scanf usa 30 KB
      Si desactivas todos los logs y compilas, puedes reducirlo a un programa de aproximadamente 800 KB, pero aun sin lógica de programa ya queda bastante cerca del límite
      La próxima vez que necesite un dispositivo de monitoreo remoto, pienso volver a revisarlo
    • La interfaz web tiene un botón de update all, así que resulta bastante cómodo
      Si hay algún dispositivo que no quiero actualizar, pongo por un momento una palabra clave inesperada en el archivo YAML para hacer que falle la compilación y la actualización
    • Usar esto podría reducir la cantidad de bugs y la necesidad de arreglos
      Tengo bastantes dispositivos ESP con sondas de temperatura por toda la casa, y estoy intentando migrarlos a ESPHome para reducir el código que tengo que mantener
    • Vale la pena probarlo. ESPHome es muy conveniente
      En especial, me gusta que al principio puedas flashear desde el navegador y luego actualizar de forma inalámbrica
    • Esta función está prevista para la próxima versión