BMS system status data can be retrieved over TCP/IP using either MODBUS-TCP or JSON queries
The summary of the protocol configuration for data access is provided right in the BMS itself.
If you navigate in any BMS to the "Tools->Field Access Information" page, you'll get back a page showing you all the currently accessible system data fields, their protocol values, and how to access them either JSON or MODBUS-TCP.
Here is an example of the output of that page (go to any real world BMS for the latest version):
You will also see on that page (on a real BMS) that there are active clickable links that do the actual JSON (or plain text) retrieval 'right there' - click on them (on a real BMS) to try them out!
For another access example - the script below is the sort of thing you might write in order to retrieve the main SoC value from a BMS and use it to 'do something'.
This is a script that you'd augment to add commands to turn your battery charger on and off, in response (in this example) to hitting particular state-of-charge levels.
while [ 1 ] ; do
CURRENT_SOC=$( curl -s http://$BMS_IP:3000/rest/1.0/dio/fields/soc_all.txt )
echo Current SOC $CURRENT_SOC, previous $LAST_SOC
# check if SOC has risen above 60
if expr $CURRENT_SOC '>' 60 >/dev/null && \
expr $LAST_SOC '<=' 60 >/dev/null ; then
echo Turning a device on might go here
# check if SOC has dropped below 30
elif expr $CURRENT_SOC '<' 30 >/dev/null && \
expr $LAST_SOC '>=' 30 >/dev/null ; then
echo turning a device off might go here
Note that you can also use the built in 'rules engine' (BMS Menu path via: Configure -> Digital I/O) to perform similar operations based on any BMS field values, and you can then express the outcomes as outputs sent via various available 'endpoint methods' in the BMS to external systems directly.