Seleccione su idioma

Diseño de MeteoHome en Kicad
Diseño de MeteoHome en Kicad

Durante estas vacaciones de verano, me dediqué a cambiar mi pequeño servidor de domótica donde se ejecuta HomeAssistant, un SolidRun Cubox-i que ha funcionado a las mil maravillas, por un nuevo minipc de Beelink . Poco a poco me fui liando con diferentes cosas y, cuando me di cuenta, me vi retomando el desarrollo de MeteoHome, modificando cosas y con muchas ideas nuevas para mejorarlo.

Pero, ¿qué es MeteoHome? Pues es un proyecto de programación DIY que comencé allá por 2016. Se trata esencialmente de una estación meteorológica que utiliza una devboard ESP8266  y sensores DHT22 y BMPP180. La diferencia con otros proyectos similares es que la configuración se lleva a cabo de manera sencilla a través de un portal web cautivo. Además, utiliza MQTT para enviar los datos a un servidor y está pensado para que todos estos datos puedan ser recolectados por Home Assistant, lo que significa que puedes ver fácilmente el estado actual de los sensores y los gráficos históricos.

Unificando MeteoHome y CO2 Detector

A parte de esto, durante los peores momentos que vivimos con el COVID, creé un proyecto paralelo, reaprovechando prácticamente todo el código de MeteoHome, pero teniendo como objetivo la detección de niveles de CO2. Y así fue como nació CO2 Detector, realmente tras leer un interesante artículo que me motivó a ello. Tras investigar qué sensor utilizar, opté por el SGP30, que parecía ser una excelente elección. Luego de algunos experimentos, modifiqué el código del otro proyecto y construí dos prototipos que utilicé en mi casa en aquella complicada época. Al igual que el otro, este dispositivo utiliza una cola MQTT para enviar datos a una pasarela IoT (en mi caso, de nuevo Home Assistant). Además, cuenta con tres LED para mostrar el estado actual del aire según los niveles de CO2 PPM, de la siguiente forma:

  • La luz verde se enciende cuando hay menos de 600 PPM de CO2.
  • La luz amarilla indica una concentración de CO2 entre 600 y 800 PPM.
  • La luz roja alerta cuando la concentración de CO2 supera los 800 PPM.

El tiempo libre de estas vacaciones me hizo pensar que no eran tan distintos los proyectos y que se podían unificar tanto a nivel hardware como software. El proceso solo acaba de empezar y la combinación de MeteoHome y CO2 Detector ya ofrece muchas posibilidades tanto dentro como en el exterior de nuestra casa. En estos momentos tengo algún dispositivo combinando un DHT22 con un BMP180 para conocer temperatura y humedad, otros con un DHT22 y un SGP30 para tener temperatura y calidad del aire y, por último estoy intentando recuperar el prototipo de exterior que es como el primero pero funcionando con una batería y una placa solar.

Resumiendo un poco, las principales características del nuevo proyecto unificado serían:

  • Dependiendo de los sensores que se instale en la placa, mide temperatura, humedad, presión atmosférica y calidad del aire.
  • Configuración de la red WiFi y MQTT mediante un portal web.
  • Incluye opcionalmente el modo de suspensión (deep sleep) para funcionar con baterías.
  • Totalmente compatible con Home Assistant.
  • Publicación como Open Source Hardware

A parte de esto, también estuve cambiando algunas cosas a nivel técnico que creo que vale la pena comentar:

Código adaptado para el desarrollo en PlatformIO. Este IDE supera con creces, al menos en mi opinión, al aportado por Arduino y gracias a sus herramientas (concretamente el programa para shell pio), se facilitan tareas de compilación que pueden ser automatizadas.

A partir de lo que acabo de mencionar, ahora estoy utilizando Github Actions para hacer un CI/CD muy básico, de momento comprobando que el código se construye correctamente cuando llega al repositorio.

Refactorizado de código. Si programas habitualmente, sabrás que no te gusta cualquier código que hayas escrito hace más de tres meses. Esta fue una de las razones para empezar a cambiar el código, más el cambio a PlatfomIO y la idea de modularizar un poco el uso de sensores.

En cuanto al hardware, las placas que creé para CO2 Detector es un buen punto de partida. De hecho, ya está certificada como open source hardware y es la que estoy usando junto con la nueva versión del código fuente. El único cambio que he hecho de momento es le de añadir alguna etiqueta para identificar mejor las conexiones en la PCB.

Si te gusta lo que he contado, ahora te toca a ti

Este nuevo viaje acaba de empezar. Si deseas unirte a la diversión te invito a visitar el repositorio en GitHub ¿Qué necesitas para unirte? Aquí tienes una lista de requisitos y elementos necesarios:

Requisitos:

Hardware:

  • Un NodeMCU ESP8266 devboard.
  • Al menos un sensor DHT22, BMPP180 o SGP30
  • LEDs para mostrar el estado del aire.
  • Una breadboard con cables o bien mandar a fabricar la parte hardware del proyecto a PCBWay o similar
  • Otros componentes como resistencias, etc que debes comprobar en el listado BOM.

Software:

  • PlatformIO para el desarrollo y la programación con Arduino framework.
  • Bibliotecas adicionales necesarias: WiFiManager, Arduino Json, PubSubClient, DHT y Adafruit BMP085 (consulta el archivo platformio.ini en el repositorio).
  • Servidor MQTT
  • Home Assistant para la visualización de datos.

El futuro de MeteoHome está lleno de emocionantes posibilidades, y tengo muchas ideas en la cabeza que iré compartiendo poco a poco.