Poco antes de irme de vacaciones revisé el código de Meteo-home para intentar optimizar el consumo. La idea era dejar el cacharro conectado a una placa solar y ver si aguantaba todas las vacaciones por si mismo. Por las observaciones que había hecho, conectarme a la red local mediante dhcp era un proceso que llegaba a tardar más de 20 segundos, incluso tenía un timeout en el código para evitarlo. Dicho de otro modo después de cada deepSleep de un minuto, si todo iba bien gastaba un par de segundos consumiendo el pico máximo de energía, pero si no había que multiplicar ese pico por 20.
Con el polímetro el pico de consumo era de 80mAh mientras que en el ciclo de deepSleep se reducía a 11,1mAh. Así pues en el peor de los casos tenemos que un ciclo completo presenta un consumo de 80mAh durante 20 segundos más 60 segundos a 11,1mAh. Para una batería de unos 2400mAh esto supondría funcionar durante día y medio aproximadamente. Por alguna razón que desconozco el DHCP del router que tengo es bastante lento entregando la IP y este timeout ocurre muchas más veces de las deseables.
Viendo esto, si modificamos el código para asignar una IP directamente deberíamos obtener un consumo mucho más próximo al mejor caso que había visto con DHCP, en el que se observaban los mismos 11,1mAh durante 60 segundos y sólo 5 segundos a 80mAh. Esos cinco segundos fueron medidos observando el polímetro cronómetro en mano y corresponden con el tiempo de conexión y envío de información de los sensores. Con estos consumos y la misma batería llegaríamos casi a los 6 días de funcionamiento ininterrumpido. Esta duración es bastante interesante porque si añadimos una placa solar que alimente al dispositivo debería estar 6 días sin recibir nada de energía y eso donde yo vivo es realmente difícil.
Tras las modificaciones, el formulario de MeteoHome permite introducir una IP, máscara de red y puerta de enlace. Como es natural ahora el funcionamiento es mucho mejor, los tiempos de conexión y envío de datos de los sensores son de un par de segundos siempre y el consumo de energía baja bastante en consecuencia.
Después de llegar a ese punto me decidí a instalarlo al fin con una placa solar alimentando a la batería, usando un controlador de carga que compré en ebay. En el momento de escribir esto, el dispositivo lleva funcionando 150 días de forma ininterrumpida alimentándose de energía solar. La placa está orientada al suroeste y en pleno verano el controlador encendía el led verde (carga completa) antes de las 17h. En este período hemos tenido varios días consecutivos nublados y la batería no se ha descargado nunca por completo. Queda ver que ocurrirá durante este invierno con peor clima y menos horas de luz.
Los datos técnicos de la placa solar utilizada son los siguientes:
- Tamaño: 178*154*15mm
- Longitud de cable: 2.9m
- Voltaje de salida: 5V
- Corriente de salida: 800mA
- Potencia de salida: 4W
Esa corriente de salida de 800mA quiere decir que en condiciones ideales recargaríamos una batería de 2400mA en tres horas. Naturalmente, estas condiciones no las tendremos nunca, al menos de forma sostenida.
El que quiera probar o dar un vistazo al código puede obtenerlo en el repositorio de github
Para terminar os dejo un par de imágenes de los datos recogidos por el dispositivo. En primer lugar un día de verano típico de esta zona. Aunque las etiquetas pongan la palabra "room" mi MeteoHome está instalado en el balcón.
Y en segundo lugar aquí está entrando en acción la tormenta Ana el 11 de Diciembre de 2017. Por aquí no fue para tanto pero como se puede ver la lluvia empezó a las 8:15
Nota (artículo editado el 4 de Enero de 2017): Meteohome ha superado hace un par de semanas el día más corto del año y por tanto el de menor cantidad de horas de sol.