Daly BMS: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 50: Строка 50:
 
подключаем нашу BMS к uart порту либо через usb-uart адаптер либо через uart разъем на одноплатнике (необходимо включить порт в настройках), далее будет рассмотрено подключение через usb-uart
 
подключаем нашу BMS к uart порту либо через usb-uart адаптер либо через uart разъем на одноплатнике (необходимо включить порт в настройках), далее будет рассмотрено подключение через usb-uart
 
Подключаем следующим образом:
 
Подключаем следующим образом:
  +
<PRE>
 
 
BMS — UART
 
BMS — UART
 
GND — GND
 
GND — GND
 
RX — TX
 
RX — TX
 
TX — RX
 
TX — RX
  +
</PRE>
 
После подключения usb-uart адаптера смотрим имя адаптера введя команду
 
После подключения usb-uart адаптера смотрим имя адаптера введя команду
  +
<PRE>
 
 
ls -n /dev/ttyU*
 
ls -n /dev/ttyU*
  +
</PRE>
 
 
должен показать устройства
 
должен показать устройства
  +
<PRE>
 
crw-rw—- 1 0 20 188, 0 Feb 24 21:12 /dev/ttyUSB0
 
crw-rw—- 1 0 20 188, 0 Feb 24 21:12 /dev/ttyUSB0
 
crw-rw—-+ 1 0 20 188, 0 Feb 24 19:57 /dev/ttyUSB1
 
crw-rw—-+ 1 0 20 188, 0 Feb 24 19:57 /dev/ttyUSB1
  +
</PRE>
где /dev/ttyUSB0 и /dev/ttyUSB1 это наши USB устройства, у меня их 2 и с этим могут быть проблемы поскольку при перезагрузки они могут иметь имена наоборот и после перезагрузки устройства не будут работать. Для того чтобы это исключить мы будем обращаться к устройства по ID, получаем id наших устройств, вводим команду:
+
где <code>/dev/ttyUSB0</code> и <code>/dev/ttyUSB1</code> это наши USB устройства, у меня их 2 и с этим могут быть проблемы поскольку при перезагрузки они могут иметь имена наоборот и после перезагрузки устройства не будут работать. Для того чтобы это исключить мы будем обращаться к устройства по ID, получаем id наших устройств, вводим команду:
 
  +
<PRE>
 
ls -n /dev/serial/by-id/*
 
ls -n /dev/serial/by-id/*
  +
</PRE>
 
 
получаем список
 
получаем список
  +
<PRE>
 
lrwxrwxrwx 1 0 0 13 Sep 8 09:58 /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_12967c31b312ec11b6da21c7bd930c07-if00-port0 -> ../../ttyUSB0
 
lrwxrwxrwx 1 0 0 13 Sep 8 09:58 /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_12967c31b312ec11b6da21c7bd930c07-if00-port0 -> ../../ttyUSB0
 
lrwxrwxrwx 1 0 0 13 Feb 24 22:18 /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -> ../../ttyUSB1
 
lrwxrwxrwx 1 0 0 13 Feb 24 22:18 /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -> ../../ttyUSB1
  +
</PRE>
  +
<PRE>
  +
ls -n /dev/serial/by-id/*
  +
lrwxrwxrwx 1 0 0 13 Jan 12 15:29 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5XK3RJT-if00-port0 -> ../../ttyUSB0
  +
</PRE>
 
синим это наши устройства, в дальнейшем в конфигах и командах можно использовать как /dev/ttyUSB0 так и полный путь к id устройству.
 
синим это наши устройства, в дальнейшем в конфигах и командах можно использовать как /dev/ttyUSB0 так и полный путь к id устройству.
 
У меня как видно Sonoff Zigbee USB стик и USB-UART адаптер на чипе CP2102 (USB-UART адаптеры бывают на разных чипах)
 
У меня как видно Sonoff Zigbee USB стик и USB-UART адаптер на чипе CP2102 (USB-UART адаптеры бывают на разных чипах)
 
Теперь проверим соединение с нашей BMS.
 
Теперь проверим соединение с нашей BMS.
  +
<PRE>
 
daly-bms-cli -d /dev/ttyUSB1 --all
+
daly-bms-cli -d /dev/ttyUSB0 --all
  +
</PRE>
 
 
или можно по id,
 
или можно по id,
  +
<PRE>
 
 
daly-bms-cli -d /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 --all
 
daly-bms-cli -d /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 --all
  +
</PRE>
 
 
мы получим все параметры. Если данные не получены то возможно Ваша BMS сделана на другом чипе, для этого надо добавить флаг —sinowealth
 
мы получим все параметры. Если данные не получены то возможно Ваша BMS сделана на другом чипе, для этого надо добавить флаг —sinowealth
   
  +
<PRE>
daly-bms-cli -d /dev/ttyUSB1 --all --sinowealth
+
daly-bms-cli -d /dev/ttyUSB0 --all --sinowealth
 
  +
</PRE>
 
Теперь есть несколько вариантов просмотра данных, не зависимо от того какую систему домашней автоматизации Вы используете мы будем передавать данные в систему домашней автоматизации по популярному протоколу mqtt, команда которую мы написали выше будет иметь вид:
 
Теперь есть несколько вариантов просмотра данных, не зависимо от того какую систему домашней автоматизации Вы используете мы будем передавать данные в систему домашней автоматизации по популярному протоколу mqtt, команда которую мы написали выше будет иметь вид:
  +
<PRE>
 
 
daly-bms-cli -d /dev/ttyUSB0 --all --mqtt
 
daly-bms-cli -d /dev/ttyUSB0 --all --mqtt
  +
</PRE>
 
нам надо сделать периодический опрос нашей BMS, lдобавим периодический запуск в планировщик:
 
 
crontab - e
 
 
в конец вставляем команду:
 
 
*/1 * * * * daly-bms-cli -d /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 --all --mqtt
 
 
сохраняем, теперь команда будет запускаться каждую минуту (чаще в crontab не сделать)
 
Теперь в программе автоматизации надо подписаться на топик daly_bms и разобрать полученные данные.
 
 
Если в консоль я получил данные читаемо, то в mqtt не удалось корректно получить данные.
 
 
 
 
https://kusheev.com/archives/1539
 

Версия 15:57, 12 января 2026

Daly BMS

C version

cd /opt
git clone https://github.com/immortalserg/DalyBMS_linux.git
cd DalyBMS_linux

cmake . && make

в папке появится файл smart_bms,
отредактируйте файл bms.conf указав порт к которому подключен Daly BMS и интервал опроса, в mqtt появятся соответствующие топики, добавьте в crontab строку запуска

crontab - e

@reboot cd /opt/DalyBMS_linux ./smart_bms

перезагрузите устройство. Подписавшись на топик Вы получите данные.

Dalybms на python.

Icon-caution.gif

У меня напряжение было 3.3В

В консоли устанавливаем python-pip

sudo apt install python3-pip

Далее создать virtualenv и устанавливаем dalybms

pip3 install dalybms

для работы с uat портом и mqtt сервером ставим соответствующие пакеты

pip3 install pyserial

pip3 install paho-mqtt

необходимо так же установить mqtt сервер если он ещё не установлен и нужен <ЗКУ> sudo apt install mosquitto

на этом установка завершена подключаем нашу BMS к uart порту либо через usb-uart адаптер либо через uart разъем на одноплатнике (необходимо включить порт в настройках), далее будет рассмотрено подключение через usb-uart Подключаем следующим образом:

BMS — UART
GND — GND
RX — TX
TX — RX

После подключения usb-uart адаптера смотрим имя адаптера введя команду

ls -n /dev/ttyU*

должен показать устройства

crw-rw—- 1 0 20 188, 0 Feb 24 21:12 /dev/ttyUSB0
crw-rw—-+ 1 0 20 188, 0 Feb 24 19:57 /dev/ttyUSB1

где /dev/ttyUSB0 и /dev/ttyUSB1 это наши USB устройства, у меня их 2 и с этим могут быть проблемы поскольку при перезагрузки они могут иметь имена наоборот и после перезагрузки устройства не будут работать. Для того чтобы это исключить мы будем обращаться к устройства по ID, получаем id наших устройств, вводим команду:

ls -n /dev/serial/by-id/*

получаем список

lrwxrwxrwx 1 0 0 13 Sep 8 09:58 /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_12967c31b312ec11b6da21c7bd930c07-if00-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 0 0 13 Feb 24 22:18 /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -> ../../ttyUSB1
ls -n /dev/serial/by-id/*
lrwxrwxrwx 1 0 0 13 Jan 12 15:29 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5XK3RJT-if00-port0 -> ../../ttyUSB0

синим это наши устройства, в дальнейшем в конфигах и командах можно использовать как /dev/ttyUSB0 так и полный путь к id устройству. У меня как видно Sonoff Zigbee USB стик и USB-UART адаптер на чипе CP2102 (USB-UART адаптеры бывают на разных чипах) Теперь проверим соединение с нашей BMS.

daly-bms-cli -d /dev/ttyUSB0 --all

или можно по id,

daly-bms-cli -d /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 --all

мы получим все параметры. Если данные не получены то возможно Ваша BMS сделана на другом чипе, для этого надо добавить флаг —sinowealth

daly-bms-cli -d /dev/ttyUSB0 --all --sinowealth

Теперь есть несколько вариантов просмотра данных, не зависимо от того какую систему домашней автоматизации Вы используете мы будем передавать данные в систему домашней автоматизации по популярному протоколу mqtt, команда которую мы написали выше будет иметь вид:

daly-bms-cli -d /dev/ttyUSB0 --all --mqtt