Daly BMS: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| Строка 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/ |
+ | 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/ |
+ | 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.
|
У меня напряжение было 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