Utilizar las pilas durante más tiempo y proteger activamente el medio ambiente
Conectar Home Assistant al dispositivo de actualización
Después de haber conocido en la primera entrada un dispositivo que ya funciona perfectamente, ahora queremos conectarlo a Home Assistant. También en esta ocasión, el protocolo MQTT nos será de gran utilidad.
Una ventaja es que no tenemos que tener en cuenta ninguna pantalla ni elementos de control en el programa. El panel de control del asistente doméstico se encarga de estas tareas. Cuando el dispositivo de actualización está listo, lo vemos en el teléfono móvil, la tableta o el ordenador, e incluso podemos recibir una notificación.
Con la aplicación Home Assistant en el teléfono móvil, siempre tenemos el estado actual a mano.
Veamos qué se necesita para ello
.
El boceto ahora incluye cinco bloques funcionales. El programa principal ha crecido bastante.
En la parte 1 no habíamos integrado ninguna biblioteca. Ahora hay un total de tres, que son necesarias para la conexión WiFi y MQTT. Además, necesitamos
A continuación, en el boceto, se encuentra la configuración de usuario, en la que debe introducir el SSID de su WLAN y la contraseña correspondiente. Esta vez también he asignado una dirección IP estática.
A continuación, se introducen las credenciales para el servidor MQTT y la contraseña MQTT.
Los temas MQTT se crean como variables de cadena. Las tensiones de las baterías reciben los temas «batt1 ... batt4», el estado respectivo de una batería se encuentra en «batt1stat ... batt4stat ». Estos estados son «Sin batería», «Recargando» y «***Finalizado***».
La inicialización que sigue a continuación ya la conocemos de la primera parte. Aquí se añade la matriz «battstat[]», que registra el estado respectivo de la batería. Se inicializa en las cuatro posiciones con «Sin batería».
void setup() sigue con la inicialización del WiFi y el servidor MQTT. Sin particularidades.
void loop() solo muestra pequeños cambios. Al principio se comprueba la conexión MQTT y, si es necesario, se restablece. A continuación, se lleva a cabo el proceso ya conocido de impulsos de carga y mediciones, ahora complementado con los dos subprogramas Statusmeldungen(); y WiFi_MQTT();
El subprograma para los mensajes de estado
Con ayuda de los mensajes de estado, podemos ver si hay una batería insertada en un compartimento, si la batería se está recargando o si el proceso de recarga ha finalizado.
p class="Text">La primera consulta IF comprueba si el voltaje de la batería es igual a cero. Esto equivale a «no hay batería insertada».
Para la programación MQTT propia, puede resultar interesante ver cómo se transmiten las cadenas en MQTT. Los contenidos de battstat[] se definen como cadenas de caracteres de hasta 16 caracteres, pero en realidad son más cortas. El motivo es el carácter terminador «\0»que exige MQTT.
El subprograma WiFi_MQTT
Aquí he resumido las funciones que inician nuestro WiFi, establecen la dirección IP estática, establecen la conexión con el servidor MQTT y se encargan de la publicación.
La publicación es una función sencilla. En primer lugar, se comprueba si la conexión sigue activa. De lo contrario, se vuelve a conectar.
A continuación, se transfiere el valor medido con dos decimales para cada batería. En la jerga MQTT, este valor se denomina «payload» (literalmente, «carga útil»). La función
snprintf(payload, sizeof(payload), "%.2f", battU[0]);
compila la carga útil, que se publica en la línea siguiente en el servidor MQTT en el tema correcto. (Lamentablemente, no existe una expresión equivalente en español).
En la siguiente línea se envía el estado de la batería correspondiente. Para ello, ya habíamos creado la composición correcta, incluido el carácter de terminación, en «Statusmeldungen.ino».
¿Qué hay que hacer en Home Assistant?
Dado que MQTT está bastante bien integrado en Home Assistant y también se ejecuta allí, en esta página tenemos poco trabajo.
Como ya se sabe por mis anteriores entradas en el blog, basta con completar correctamente el archivo configuration.yaml y reiniciar Home Assistant. De este modo, se generan las entidades necesarias y quedan disponibles.
Recuerde que es imprescindible prestar atención al orden de las líneas y utilizar siempre la barra espaciadora para los espacios, ¡nunca la tecla TAB!
Dicho esto, nuestra entrada tiene el siguiente aspecto:
Si ya ha definido sensores MQTT, introduzca sus sensores debajo. De lo contrario, recibirá un mensaje de error, ya que
mqtt:
. . sensor:
solo puede aparecer una vez en configuration.yaml. Esto también se aplica a todos los casos análogos.
En la entrada MQTT, quizá se observe que un
expire_after: 30
. Esta función no existe desde hace mucho tiempo. Ahora se puede especificar en la definición del sensor que, por ejemplo, 30 segundos después del último valor del sensor MQTT, su valor se restablezca. De este modo, no da la impresión de que todavía haya una batería insertada.
Cuando el dispositivo está apagado, los sensores ya no están disponibles y aparece el mensaje correspondiente en el panel de control.
Un complemento a la parte 1 del artículo
No todo el mundo tiene resistencias de medición en su caja de bricolaje (1 % o mejor). Por eso, ahora he añadido otra variable al boceto de la parte 2
float corr[4] ={1.0, 1.0, 1.09, 1.0}; //Valores de corrección
. Se trata de un factor por el que se debe multiplicar el valor medido correspondiente cuando las resistencias de medición no son exactas. La mejor forma de medirlo es con un multímetro adecuado y calcular el factor de corrección. Me faltaba una resistencia y enseguida obtuve un error de medición del 9 %, que se corrigió de esta manera.
Si todos los valores de corrección son = 1,0, sus resistencias son perfectas.
Si necesita o desea utilizar la nueva función, ya está implementada en todo el nuevo boceto.
Uso práctico
Ahora tenemos un bonito dispositivo de recarga que también funciona bien. ¿Cómo lo utilizamos?
Como llevo años recargando pilas alcalinas, presto atención a lo que hacen otras personas. Así conocí a un señor mayor que vendía una caja de pilas en el mercadillo:

Desde entonces, me acompaña. En la parte superior tiene un pequeño dispositivo de prueba que da una idea bastante aproximada de si una pila todavía es útil.
Mis pilas están ordenadas de tal manera que a la izquierda están las pilas AA que han sido probadas y recargadas. Cubren las necesidades del hogar, el laboratorio y el taller.
En el centro y a la derecha están las pilas AA que, a simple vista, no parecen estar dañadas ni tener fugas, pero que aún no he probado ni recargado.
Todo esto ha dado lugar a que, con un consumo anual de unas 60 pilas alcalinas Celdas AA en 2025 no he comprado ni una sola batería nueva y todos los dispositivos funcionan perfectamente. Todavía me queda una reserva.
Me encantaría que usted también contribuyera a la protección del medio ambiente con este proyecto y, al mismo tiempo, ahorrara dinero.
Hasta la próxima entrada del blog,
Su
Michael Klein






