Utilizzare le batterie più a lungo e proteggere attivamente l'ambiente
Collegare Home Assistant al dispositivo di ricarica
Dopo aver visto nel primo articolo un dispositivo già perfettamente funzionante, ora vogliamo collegarlo a Home Assistant. Anche in questo caso il protocollo MQTT ci sarà di grande aiuto.
Un vantaggio è che non dobbiamo tenere conto di display o elementi di comando nel programma. Il dashboard di Home Assistant svolge questi compiti. Quando il dispositivo di ricarica è pronto, lo vediamo sul cellulare, sul tablet o sul PC e possiamo persino ricevere una notifica.
Con l'app Home Assistant sul cellulare abbiamo sempre a portata di mano lo stato attuale.
Vediamo cosa è necessario per farlo.
Lo sketch ora comprende cinque blocchi funzionali. Il programma principale è cresciuto notevolmente.
Nella parte 1 non avevamo integrato alcuna libreria. Ora ce ne sono tre in totale, necessarie per la connessione WiFi e MQTT. Inoltre, abbiamo bisogno di
Segue la configurazione utente nello sketch, in cui è necessario inserire l'SSID della propria rete WLAN e la password corrispondente. Anche questa volta ho assegnato un indirizzo IP statico.
Seguono ora le credenziali per il server MQTT e la password MQTT.
Gli argomenti MQTT vengono creati come variabili stringa. Le tensioni delle batterie ricevono gli argomenti "batt1 ... batt4", lo stato rispettivo di una batteria si trova in "batt1stat ... batt4stat ". Questi stati sono "Nessuna batteria", "In ricarica" e "***Terminato***".
L'inizializzazione che segue è già nota dalla prima parte. Qui si aggiunge l'array "battstat[]", che registra lo stato della batteria. Viene inizializzato su tutte e quattro le posizioni con "Nessuna batteria".
void setup() segue con l'inizializzazione del WiFi e del server MQTT. Nessuna particolarità.
void loop() mostra solo piccole modifiche. All'inizio viene verificata la connessione MQTT e, se necessario, ristabilita. Segue il processo già noto di impulso di carica e misurazioni, ora integrato dai due sottoprogrammi Statusmeldungen(); e WiFi_MQTT();
Il sottoprogramma per i messaggi di stato
Grazie ai messaggi di stato possiamo vedere se in un vano è inserita una batteria, se la batteria è in fase di ricarica o se il processo di ricarica è terminato.
p class="Text">La prima query IF verifica se la tensione della batteria è pari a zero. Ciò equivale a dire che "non è inserita alcuna batteria".
Per la propria programmazione MQTT può essere interessante vedere come vengono trasmesse le stringhe in MQTT. I contenuti di battstat[] sono definiti come stringhe di caratteri con un massimo di 16 caratteri, ma in realtà sono più brevi. Il motivo è il carattere terminatore '\0'richiestoda MQTT.
Il sottoprogramma WiFi_MQTT
Qui ho riassunto le funzioni che avviano il nostro WiFi, impostano l'indirizzo IP statico, stabiliscono la connessione al server MQTT e si occupano della pubblicazione.
La pubblicazione è una funzione semplice. Innanzitutto viene verificato se la connessione è ancora attiva. In caso contrario, viene eseguita una riconnessione.
Successivamente, per ogni batteria viene trasmesso il valore misurato con due cifre decimali. Nel gergo MQTT, un valore di questo tipo è chiamato "payload" (letteralmente: "carico pagato"). La funzione
snprintf(payload, sizeof(payload), "%.2f", battU[0]);
compone il payload, che viene pubblicato nella riga seguente sul server MQTT nell'argomento corretto. (Purtroppo non esiste un'espressione equivalente in italiano).
Nella riga seguente viene inviato lo stato della rispettiva batteria. Per questo avevamo già creato la composizione corretta, compreso il carattere di terminazione, in "Statusmeldungen.ino".
Cosa bisogna fare in Home Assistant?
Poiché MQTT è ben integrato in Home Assistant e funziona anche lì, abbiamo poco lavoro da fare su questa pagina.
Come già sapete dai miei precedenti post sul blog, è sufficiente completare correttamente il file configuration.yaml e riavviare Home Assistant. In questo modo vengono generate le entità necessarie, che sono quindi disponibili.
Ricordate che è fondamentale prestare attenzione alla disposizione delle righe e utilizzare sempre e solo il tasto spazio per gli spazi, mai il tasto TAB!
Detto questo, la nostra voce appare come segue:
Se avete già definito dei sensori MQTT, inseriteli qui sotto. In caso contrario, riceverete un messaggio di errore perché
mqtt:
. . sensor:
può comparire solo una volta in configuration.yaml. Questo vale anche per tutti i casi analoghi.
Nell'inserimento MQTT si può notare che un
expire_after: 30
. Questa funzione non esiste da molto tempo. Nel frattempo, nella definizione del sensore è possibile specificare che, ad esempio, 30 secondi dopo l'ultimo valore del sensore MQTT, il suo valore venga reimpostato. In questo modo non si ha l'impressione che sia ancora inserita una batteria.
Quando il dispositivo è spento, i sensori non sono più disponibili e nella dashboard viene visualizzato il messaggio corrispondente.
Un'aggiunta al contributo Parte 1
Non tutti hanno resistenze di misura nella scatola degli attrezzi (1% o meglio). Per questo motivo ho aggiunto una variabile nello sketch della Parte 2
float corr[4] ={1.0, 1.0, 1.09, 1.0}; //Valori di correzione
. Si tratta di un fattore con cui moltiplicare il rispettivo valore misurato quando le resistenze di misura non sono esatte. Il modo migliore per misurarlo è utilizzare un multimetro adeguato e calcolare il fattore di correzione. Mi mancava una resistenza e ho subito riscontrato un errore di misurazione del 9%, che è stato corretto in questo modo.
Se tutti i valori di correzione sono = 1.0, le resistenze sono perfette.
Se avete bisogno o desiderate utilizzare la nuova funzione, essa è già implementata ovunque nel nuovo sketch.
Uso pratico
Ora abbiamo un bel dispositivo di ricarica che funziona bene. Come lo utilizziamo?
Dato che ricarico batterie alcaline da anni, faccio attenzione a ciò che fanno gli altri. Così ho incontrato un signore anziano che vendeva una scatola di batterie al mercatino delle pulci:

Da allora mi accompagna sempre. Nella parte superiore contiene un piccolo dispositivo di prova che fornisce un'indicazione piuttosto approssimativa sulla funzionalità di una batteria.
Le mie batterie sono disposte in modo tale che a sinistra si trovano le batterie AA testate e ricaricate. Esse coprono il fabbisogno della casa, del laboratorio e dell'officina.
Al centro e a destra ci sono le batterie AA che a prima vista non sembrano danneggiate o scariche, ma che non ho ancora testato e/o ricaricato.
Tutto ciò ha portato a un fabbisogno annuale di circa 60 batterie alcaline. Nel 2025 non avrò acquistato nemmeno una batteria AA nuova e tutti i dispositivi funzionano perfettamente. Ne ho ancora una scorta.
Mi farebbe piacere se anche voi voleste contribuire alla tutela dell'ambiente con questo progetto e allo stesso tempo risparmiare denaro.
Alla prossima pubblicazione sul blog,
Il vostro
Michael Klein






