Skip to content
/ dalybms Public
forked from MindFreeze/dalybms

Scripts for interfacing with Daly Smart BMS

License

Notifications You must be signed in to change notification settings

Arfa03/dalybms

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Daly Smart BMS MQTT sensor for generic application/HA

Thanks to @mindFreeze for the great work!

Monitor a Daly Smart BMS connected through UART USB to raspberry and publish the data to MQTT. If HA have MQTT discovery enabled, the sensors will be added automatically to HA.

Preferisci l'italiano? lingua italiana

bms image

Based on the protocol docs found here https://github.com/jblance/mpp-solar/blob/master/docs/protocols/DALY-Daly_RS485_UART_Protocol.pdf and the discussion here https://diysolarforum.com/threads/decoding-the-daly-smartbms-protocol.21898/

Original repo here: https://github.com/MindFreeze/dalybms

The main code is in monitor.py, if you want to expand or change it.

Preferisci l'italiano? lingua italiana

Install

Using docker:

Clone this repo in your preferred directory:

git clone https://github.com/Arfa03/dalybms

Set your MQTT and battery data in config.py

cd dalybms
sudo nano config.py

Then exit nano with ctrl+s and ctrl+x. Left the folder and build docker image:

cd ..
docker build dalybms

Copy the image ID in the message Succesfully built >id< Then run the image for checking if data flows, correct the USB port if needed

docker run -it --device=/dev/ttyUSB0 --name bms-daly --restart unless-stopped <image-id>

When you see data flowing, in about 1 mins, you're set! Stop the execution by hitting ctrl+c. Now you can start the container in background for leave him do it's magics.

docker container start bms-daly

You're set! The sensors will automatically appear in HomeAssistant if you have enabled MQTT autodiscovery, otherwise you've to add it manually.

Without using docker

Just execute monitor.py after configured parameter in config.py. In dalybms folder:

python3 monitor.py

Here the guide for execute automatically on startup:

https://raspberrypi-guide.github.io/programming/run-script-on-boot

Energy and power

You can do this easily. For power in W, just create a template sensor and multiply current * voltage. https://www.home-assistant.io/integrations/template/

Then to get kWh for energy you can create an integration sensor from the power sensor. https://www.home-assistant.io/integrations/integration/

New function: Set SoC Percent

For those who are hurted by the inaccurate SoC reading of the Daly, being strange with the pass of time! Now you can set an automation in Home Assistant, which send an MQTT message with the SoC value in the topic "homeassistant/command/dalybms/soc" with an integer number, eg. 80, and the Daly SoC will be immediately set to this value! You can for example set up an automation which when the battery voltage reach 55v in charging mode, will be send once an MQTT message with the value 90, so, at every full charge you're set with you're correct SoC.

///////////////////////////////////////////////////////////////////////////////////////////////////////////

Italian Language:

Controlla uno Smart BMS Daly collegato ad un raspberry tramite USB e pubblica i dati su un server MQTT. Se la tua istanza di Home Assistant ha la funzione autodiscovery dei dispositivi MQTT abilitata, i sensori saranno aggiunti automaticamente.

Installazione

Usando docker:

Clona questa repo nella directory che preferisci

git clone https://github.com/Arfa03/dalybms

Imposta i dati del tuo server MQTT e della batteria in config.py

cd dalybms
sudo nano config.py

Dopodiché esci da nano con ctrl+s, poi ctrl+x Esci dalla cartella ed effettua il build con docker dell'immagine

cd ..
docker build dalybms

Copia l'ID dell'immagine appena creata nel messaggio Succesfully built >id< A questo punto avvia l'immagine e controlla che dopo circa un minuto arrivino i dati. Seleziona la porta USB corretta se necessario.

docker run -it --device=/dev/ttyUSB0 --name bms-daly --restart unless-stopped <image-id>

Quando vedrai i dati a schermo, tutto è andato come dovrebbe! Ferma l'esecuzione premendo ctrl+c. Ora puoi far partire il container in background, per lasciargli fare le sue magie.

docker container start bms-daly

Finito! I sensori appariranno automaticamente in HomeAssistant se hai precedentemente abilitato la funzione autodiscovery, altrimenti dovrai aggiungerli manualmente.

Senza usare docker

Avvia semplicemente monitor.py dopo aver configurato i parametri in config.py. Recati nella cartella dalybms ed esegui il comando:

python3 monitor.py

Per far sì che si avvii automaticamente all'avvio del sistema, qui trovi la guida:

https://raspberrypi-guide.github.io/programming/run-script-on-boot

Energia e potenza

Puoi ottenerle facilmente. Per la potenza in W crea un modello template e moltiplica corrente * tensione https://www.home-assistant.io/integrations/template/

Per ottenere l'energia in kWh invece, puoi creare un sensore integrativo. https://www.home-assistant.io/integrations/integration/

Nuova funzione: Impostazione manuale percentuale SoC

Per coloro che sono infastiditi dalla lettura imprecisa del SoC del Daly, che peggiora con il passare del tempo! Ora puoi impostare un'automazione in Home Assistant, che invia un messaggio MQTT con il valore SoC nel topic "homeassistant/command/dalybms/soc" con un numero intero, ad es. 80, e il SoC verrà subito impostato su questo valore! Puoi ad esempio impostare un'automazione che quando la tensione della batteria raggiunge i 55v in modalità di ricarica, invierà una volta un messaggio MQTT con il valore 90, quindi, ad ogni carica completa sei allineato con il tuo SoC corretto.

About

Scripts for interfacing with Daly Smart BMS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 97.8%
  • Dockerfile 2.0%
  • Shell 0.2%