Come controllare lo stato della batteria al litio e monitorare le celle LiFePO4 tramite BMS da Victron Energy Venus OS

25 giugno 2024

Sono oramai più di 2 anni che abbiamo creato la nostra batteria al litio LiFePO4 a 24V, composta da 8 celle a 280 Ah, per un totale appena superiore ai 7 kWh (link per chi vuole saperne di più).

L'abbiamo equipaggiata con un BMS della JK con bluetooth integrato.
Ogni tanto ci connettiamo con l'app della JK per controllare le celle e dobbiamo dire che anche dopo una discreta quantità di cicli, tutte rimangono belle bilanciate.

Grazie alla libreria dbus-serialbattery (link), è possibile farlo direttamente da Victron Energy Venus OS: dal Cerbo GX o, come nel nostro caso, dal Raspberry Pi.

Avendo auto-costruito la nostra batteria potevamo usare anche il cavetto con interfaccia seriale, da collegare al Venus OS e da cui leggere i dati desiderati.
Chi invece ha acquistato una batteria commerciale sigillata non può certo tagliare e smontare tutto :-)

Quindi come fare per monitorare le celle che compongono una batteria LiFePO4 da Victron Venus OS?

Grazie agli sviluppatori è possibile monitorare le celle LiFePO4 anche tramite bluetooth, basta che la batteria sia dotata di BMS JK, o BMS JBD (con bluetooth).

La connessione tramite bluetooth non è stabile quanto il collegamento via cavo, ma in questi ultimi mesi la stabilità è migliorata, quindi ci siamo decisi ad installare e configurare la libreria.

Connettiamoci al Raspberry Pi o al CerboGX tramite console

Abilitiamo l'accesso come Superutente:

Impostazioni > Generali > Livello di accesso > Utente e installatore (la password è ZZZ)

Una volta tornati nel menu Generale, con la riga Livello di accesso sottolineata di azzurro, tenere premuta la freccia a destra della tastiera.
Apparirà il livello di accesso: Superutente

Impostare una password di root:

Impostazioni > Generali > Livello di accesso > Set root password > impostare quello che si vuole

Abilitare SSH:

Impostazioni > Generali > Livello di accesso > SSH su LAN > Abilitare

Colleghiamoci al Raspberry Pi tramite SSH da un altro pc.

ssh root@INDIRIZZO_IP

Se utilizzi Windows puoi collegarti tramite Putty.

Come Installare la libreria dbus-serialbattery su Victron Venus OS

Dopo esserci connessi tramite SSH al sistema Victron scarichiamo la libreria:

wget -O /tmp/install.sh https://raw.githubusercontent.com/Louisvdw/dbus-serialbattery/master/etc/dbus-serialbattery/install.sh

Procediamo poi con l'installazione (digitare 1 o 2 quando verrà chiesto che versione installare):

bash /tmp/install.sh

Riavviare il sistema:

reboot

Trovare il MAC address del BMS

Connettiamoci di nuovo al Venus OS tramite SSH.

Avviamo il tool bluetoothctl:

bluetoothctl
[...]
Agent registered
[CHG] Controller xx:xx:xx:xx:xx:xx Pairable: yes
[...]

Scannerizziamo per trovare il MAC address del BMS:

scan on
[...]
Discovery started
[CHG] Controller xx:xx:xx:xx:xx:xx Discovering: yes
[CHG] Device xx:xx:xx:xx:xx:xx RSSI: -60
[...]

Otteniamo il MAC address desiderato (i dati sono solo di esempio):

devices
[...]
Device xx:xx:xx:xx:xx:xx JK-B2A24S15P
[...]

Stoppiamo la scansione e stampiamo i dati desiderati:

scan off
[...]
Discovery stopped
[CHG] Device xx:xx:xx:xx:xx:xx RSSI is nil
[CHG] Controller xx:xx:xx:xx:xx:xx Discovering: no
[...]

Usciamo dal tool:

quit

Impostiamo la connessione al BMS tramite bluetooth, da Victron Venus OS

Nel manuale della libreria viene consigliato di disabilitare l'accesso bluetooth del sistema tramite Remote Console o Gui, per prevenire riconnessioni ogni minuto:

Impostazioni > Bluetooth > Disabilitare

Se non si è già connessi, riconnettersi a Venus OS tramite SSH.

La configurazione di default è salvata in questa posizione:
/data/etc/dbus-serialbattery/config.default.ini
Da qui è possibile copiare le porzioni di codice che ci interessano.

Impostiamo la connessione bluetooth con il BMS:

nano /data/etc/dbus-serialbattery/config.ini
[...]
; --------- Bluetooth BMS ---------
; Description:
; Specify the Bluetooth BMS and it's MAC address that you want to install. Leave emty to disable
; Available Bluetooth BMS:
; Jkbms_Ble, LltJbd_Ble
; Example for one BMS:
; BLUETOOTH_BMS = Jkbms_Ble C8:47:8C:00:00:00
; Example for multiple BMS:
; BLUETOOTH_BMS = Jkbms_Ble C8:47:8C:00:00:00, Jkbms_Ble C8:47:8C:00:00:11, Jkbms_Ble C8:47:8C:00:00:22
BLUETOOTH_BMS = Jkbms_Ble xx:xx:xx:xx:xx:xx
[...]

Al posto di xx:xx:xx:xx:xx:xx utilizziamo il MAC address che abbiamo trovato sopra.

In caso il vostro BMS sia JBD, la stringa sarà:

BLUETOOTH_BMS = LltJbd_Ble xx:xx:xx:xx:xx:xx

In caso si vogliano leggere i dati di 2 batterie, con BMS JK, la stringa sarà:

BLUETOOTH_BMS = Jkbms_Ble xx:xx:xx:xx:xx:xx, Jkbms_Ble yy:yy:yy:yy:yy:yy

Mentre in caso si vogliano leggere i dati di 2 batterie, con BMS JBD, la stringa sarà:

BLUETOOTH_BMS = LltJbd_Ble xx:xx:xx:xx:xx:xx, LltJbd_Ble yy:yy:yy:yy:yy:yy

Salviamo e chiudiamo il file:

CRTL + X

Attiviamo i parametri appena impostati:

/data/etc/dbus-serialbattery/reinstall-local.sh

Riavviamo il sistema:

reboot

Una volta avviato il sistema, dopo qualche secondo, la lettura dei dati apparirà nell'elenco dispositivi di Victron Venus OS.
Ogni tanto sono necessari alcuni minuti, quindi attendere con pazienza.

Risoluzione dei problemi

Se non si è già connessi, riconnettersi a Venus OS tramite SSH.

In caso di problemi è possibile analizzare il file di log, con questo comando:

tail -F -n 100 /data/log/dbus-blebattery.*/current | tai64nlocal

Per uscire dall'analisi del log:

CRTL + C

Utilizzare uno SmartShunt oppure il BMS come monitor batteria in Victron Venus OS?

Una volta installata la libreria dbus-serialbattery è possibile utilizzare il BMS come monitor batteria di default sul Venus OS, oppure utilizzare il Victron SmartShunt (link) o per esempio un Victron BMV-712 Smart (link).

Personalmente non mi fido dei conteggi del BMS, specialmente quello dello stato di carica.
Spesso i BMS non hanno uno Shunt integrato, oppure ne hanno uno con livelli di lettura molto approssimativi.
Non riuscendo a rilevare le micro correnti, spesso infatti la percentuale di SOC rilevata dai BMS è errata.

Consiglio quindi di impostare Victron SmartShunt o Victron BMV come monitor della batteria ed usare i dati letti dal BMS come controllo visuale.

Come impostare SmartShunt o BMV come monitor batteria su Victron Venus OS

Per eseguire la configurazione è possibile utilizzare lo schermo touch.

In alternativa possiamo connetterci al Raspberry Pi o al CerboGX tramite Console Remota:
http://venus.local
Oppure:
http://INDIRIZZO_IP

Oppure tramite Victron VRM:
https://vrm.victronenergy.com
Andando alla voce:
Nome impianto > Consolle remota

Impostiamo il monitor batteria:

Impostazioni > Configurazione sistema > Monitor batteria: SmartShunt...

Impostiamo la visualizzazione nel Portale VRM (opzionale):

Impostazioni > Configurazione sistema > Misurazioni batteria > SmartShunt...: Visibile
Impostazioni > Configurazione sistema > Misurazioni batteria > Nome BMS: Nascosto

Come impostare il BMS come monitor batteria su Victron Venus OS

Per chi invece preferisce impostare il BMS come Monitor batteria, ecco la guida.

Per eseguire la configurazione è possibile utilizzare lo schermo touch.

In alternativa possiamo connetterci al Raspberry Pi o al CerboGX tramite Console Remota:
http://venus.local
Oppure:
http://INDIRIZZO_IP

Oppure tramite Victron VRM:
https://vrm.victronenergy.com
Andando alla voce:
Nome impianto > Consolle remota

Impostiamo il monitor batteria:

Impostazioni > Configurazione sistema > Monitor batteria: Dispositivo xx:xx:xx:xx:xx:xx

Impostiamo la visualizzazione nel Portale VRM (opzionale):

Impostazioni > Configurazione sistema > Misurazioni batteria > SmartShunt...: Nascosto
Impostazioni > Configurazione sistema > Misurazioni batteria > Nome BMS: Visibile

Se si imposta il BMS come monitor batteria, conviene impostare i limiti massimi di carica e scarica.

nano /data/etc/dbus-serialbattery/config.ini
[...]
MAX_BATTERY_CHARGE_CURRENT = 50.0
MAX_BATTERY_DISCHARGE_CURRENT = 60.0
[...]

Salviamo e chiudiamo il file:

CRTL + X

Attiviamo i parametri appena impostati:

/data/etc/dbus-serialbattery/reinstall-local.sh

Riavviamo il sistema:

reboot

Una volta impostati i limiti è possibile abilitare DVCC:

Impostazioni > DVCC > DVCC: On

Impostare poi il BMS, che dovrebbe in realtà già esser stato rilevato automaticamente:

Impostazioni > DVCC > Controllo BMS: Nome BMS o Selezione automatica

In questo modo verranno utilizzati i dati rilevati dal BMS, sia per la carica che per la scarica della batteria.

Per maggiori informazioni ecco di nuovo il link alla libreria dbus-serialbattery:
https://louisvdw.github.io/dbus-serialbattery/

Al prossimo tutorial ;-)

Condividi

Potrebbero interessarti