Ich habe mir diese Micro-USB-Boards geholt, um mein Daly BMS auszulesen:
Ich habe schon mal 4 Kabel angelötet, obwohl laut Anleitung nur die 3 gebraucht werden: D-, D+ und GND.
Das ist der Anschluss am BMS:
Laut Anleitung sollte also von links nach rechts sein:
Rot = Rx
Weiss = Tx
Gelb = Aktivierung indem man Gelb kurz auf Masse legt. (was fatal wäre, weil 22,6 Volt anliegen !!! )
Sollte laut Anleitung Power Supply sein, ist aber nicht belegt.
Grün = + 3,3 Volt
Schwarz = GND
Tatsächlich messe ich aber an allen 3,3 Volt gegen GND, außer auf ID, also Gelb, da liegen 22,6 Volt an.
Jetzt habe ich sowohl über UART direkt, als auch mit USB-Serial-Adapter versucht, etwas an Daten zu entlocken, aber es kommen keine.
Angeschlossen habe ich nur D+, D- und GND.
Weder mit dem Pythonscript, noch mit einem seriellen Monitor wie z.B. cutecom sehe ich Daten auf /dev/serial0 mit UART oder /dev/ttyUSB0 mit USB-Adapter.
Zur Sicherheit habe ich auch schon Tx und Rx vertauscht, aber nichts.
Überbrücke ich am Pi Tx und Rx mit einem Jumperkabel, kann ich empfangen, was ich sende.
Das ganze nochmal etwas unscharf:
Am BMS müsste also Weiss und Grün Tx und Rx sein.
Am Adapter müsste Schwarz = D+ sein und Weiss = D-
Ist aber:
Rot = VBUS
Weiss = D-
Gelb = ID
Grün = D+
Schwarz = GND
Dann würde die Anleitung auch stimmen.
Ausgabe daly-bms-cli -d /dev/ttyUSB0 --all --uart
und daly-bms-cli -d /dev/serial0 --all --uart
ERROR [daly_bms.py:95] 94 failed after 5 tries
ERROR [daly_bms.py:95] 90 failed after 5 tries
ERROR [daly_bms.py:95] 91 failed after 5 tries
ERROR [daly_bms.py:95] 92 failed after 5 tries
ERROR [daly_bms.py:95] 93 failed after 5 tries
ERROR [daly_bms.py:95] 94 failed after 5 tries
ERROR [daly_bms.py:246] get_status has to be called at least once before calling get_cell_voltages
ERROR [daly_bms.py:246] get_status has to be called at least once before calling get_cell_voltages
ERROR [daly_bms.py:95] 97 failed after 5 tries
ERROR [daly_bms.py:95] 98 failed after 5 tries
Traceback (most recent call last):
File "/usr/local/bin/daly-bms-cli", line 185, in <module>
result = bms.get_all()
File "/usr/local/lib/python3.9/dist-packages/dalybms/daly_bms.py", line 359, in get_all
"errors": self.get_errors()
File "/usr/local/lib/python3.9/dist-packages/dalybms/daly_bms.py", line 328, in get_errors
if int.from_bytes(response_data, byteorder='big') == 0:
TypeError: cannot convert 'bool' object to bytes
Display More
Mit daly-bms-cli -d /dev/serial0 --all --sinowealth
Traceback (most recent call last):
File "/usr/local/bin/daly-bms-cli", line 185, in <module>
result = bms.get_all()
File "/usr/local/lib/python3.9/dist-packages/dalybms/daly_sinowealth.py", line 240, in get_all
"errors": self.get_errors()
File "/usr/local/lib/python3.9/dist-packages/dalybms/daly_sinowealth.py", line 215, in get_errors
if response[key] == "1":
TypeError: 'bool' object is not subscriptable
Den mitgelieferten Micro-USB-Bluetooth-Dongle möchte ich nicht zerstören, nur um reinzusehen.
Ich habe schon /dev/ttyAMA0, /dev/ttyS0, /dev/ttyUSB0 und /dev/serial0 durchprobiert, mit --sinowealth und ohne.
Da der Micro-USB ja nur 5 Anschlüsse hat, bin ich jetzt am Ende meines Lateins.
Hat schonmal jemand Daten aus dem Daly BMS bekommen und kann mir einen Tip geben ?
EDIT:
Ich habe herausgefunden, dass der Parameter --sinowealth schon richtig war, aber einige andere Parameter das Script abstürzen lassen.
Ohne Absturz geht daly-bms-cli -d /dev/serial0 --uart --sinowealth --status --cell-voltages --temperatures --balancing --errors
Die Ausgaben sind aber für die Tonne:
{
"cycles": 2580
}
{
"1": 2.561,
"2": 2.562,
"3": 2.563,
"4": 2.564,
"5": 2.565,
"6": 2.566,
"7": 2.567,
"8": 2.568,
"9": 2.569,
"10": 2.57
}
{
"external1": -15.8,
"external2": -15.7
}
{}
[
"UTD: Discharge low temperature protection",
"OTD: Discharge high temperature protection",
"OCC: Charge overcurrent protection occurs",
"UV: Undervoltage protection occurs"
]
Display More
Zyklen müssten 0 sein, Spannungen zwischen 3,331 und 3,332 Volt, Temperatur 21°C.
Es gibt auch eine Software für Windows, die zeigt nichts an.
Nochmal EDIT:
Ich habe hier einen USB-Adapter mit CH340-Chipsatz gesehen, bei dem scheinen 3 Kabel an das BMS zu gehen, jeweils die äusseren:
Leider sieht man den Stecker nicht so gut.
Also Auflösung:
Die Belegung stimmt, die Chinesen halten sich halt nicht an den Standard:
Ganz links ist Rx (rot), rechts daneben Tx (weiss), ganz rechts GND (schwarz).
Somit muss das rote Rx-Kabel vom BMS an VBUS vom MicroUSB-Board und an Tx vom Pi.
Das weisse Tx-Kabel vom BMS an D+ vom MicroUSB-Board und an Rx vom Pi.
Ganz rechts (schwarz) ist GND und kommt an GND vom MicroUSB-Board und an GND vom Pi.
Die Ausgabe von daly-bms-cli -d /dev/ttyUSB0 --uart --all:
ERROR [daly_bms.py:257] unkonwn status_field cells
ERROR [daly_bms.py:257] unkonwn status_field temperature_sensors
{
"soc": {
"total_voltage": 26.6,
"current": 0.0,
"soc_percent": 95.0
},
"cell_voltage_range": {
"highest_voltage": 3.331,
"highest_cell": 8,
"lowest_voltage": 3.33,
"lowest_cell": 1
},
"temperature_range": {
"highest_temperature": 21,
"highest_sensor": 1,
"lowest_temperature": 21,
"lowest_sensor": 1
},
"mosfet_status": {
"mode": "stationary",
"charging_mosfet": true,
"discharging_mosfet": true,
"capacity_ah": 19.0
},
"status": {
"cells": 8,
"temperature_sensors": 1,
"charger_running": false,
"load_running": false,
"states": {
"DI1": false
},
"cycles": 0
},
"cell_voltages": null,
"temperatures": null,
"balancing_status": {
"error": "not implemented"
},
"errors": []
}
Display More
Und mit daly-bms-cli -d /dev/serial0 --status --soc --mosfet --cell-voltages --temperatures --balancing --errors --check
{
"cells": 8,
"temperature_sensors": 1,
"charger_running": false,
"load_running": false,
"states": {
"DI1": false
},
"cycles": 0
}
{
"total_voltage": 26.6,
"current": 0.0,
"soc_percent": 94.8
}
{
"mode": "stationary",
"charging_mosfet": true,
"discharging_mosfet": true,
"capacity_ah": 18.96
}
{
"1": 3.33,
"2": 3.33,
"3": 3.33,
"4": 3.33,
"5": 3.33,
"6": 3.33,
"7": 3.331,
"8": 3.33
}
{
"1": 21
}
{
"error": "not implemented"
}
[]
OK - 26.6 volt, 0.0 amper | total_voltage=26.6 current=0.0 soc_percent=94.8
Display More