aiobmsble 0.2.3__py3-none-any.whl → 0.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aiobmsble/__init__.py +2 -0
- aiobmsble/__main__.py +4 -2
- aiobmsble/basebms.py +40 -15
- aiobmsble/bms/abc_bms.py +2 -2
- aiobmsble/bms/ant_bms.py +4 -3
- aiobmsble/bms/ant_leg_bms.py +177 -0
- aiobmsble/bms/braunpwr_bms.py +2 -2
- aiobmsble/bms/cbtpwr_bms.py +2 -2
- aiobmsble/bms/cbtpwr_vb_bms.py +2 -2
- aiobmsble/bms/daly_bms.py +2 -2
- aiobmsble/bms/dpwrcore_bms.py +2 -2
- aiobmsble/bms/dummy_bms.py +3 -3
- aiobmsble/bms/ecoworthy_bms.py +2 -2
- aiobmsble/bms/ective_bms.py +2 -2
- aiobmsble/bms/ej_bms.py +9 -3
- aiobmsble/bms/felicity_bms.py +2 -2
- aiobmsble/bms/jbd_bms.py +2 -2
- aiobmsble/bms/jikong_bms.py +2 -2
- aiobmsble/bms/neey_bms.py +2 -2
- aiobmsble/bms/ogt_bms.py +2 -2
- aiobmsble/bms/pro_bms.py +2 -2
- aiobmsble/bms/redodo_bms.py +5 -2
- aiobmsble/bms/renogy_bms.py +2 -2
- aiobmsble/bms/renogy_pro_bms.py +2 -2
- aiobmsble/bms/roypow_bms.py +2 -2
- aiobmsble/bms/seplos_bms.py +3 -3
- aiobmsble/bms/seplos_v2_bms.py +2 -2
- aiobmsble/bms/tdt_bms.py +2 -2
- aiobmsble/bms/tianpwr_bms.py +2 -2
- aiobmsble/test_data/__init__.py +95 -0
- aiobmsble/test_data/abc_bms.json +34 -0
- aiobmsble/test_data/ant_bms.json +18 -0
- aiobmsble/test_data/ant_leg_bms.json +19 -0
- aiobmsble/test_data/braunpwr_bms.json +34 -0
- aiobmsble/test_data/cbtpwr_bms.json +90 -0
- aiobmsble/test_data/cbtpwr_vb_bms.json +20 -0
- aiobmsble/test_data/daly_bms.json +100 -0
- aiobmsble/test_data/dpwrcore_bms.json +18 -0
- aiobmsble/test_data/ecoworthy_bms.json +100 -0
- aiobmsble/test_data/ective_bms.json +104 -0
- aiobmsble/test_data/ej_bms.json +107 -0
- aiobmsble/test_data/felicity_bms.json +24 -0
- aiobmsble/test_data/ignore.json +48 -0
- aiobmsble/test_data/jbd_bms.json +440 -0
- aiobmsble/test_data/jikong_bms.json +54 -0
- aiobmsble/test_data/neey_bms.json +65 -0
- aiobmsble/test_data/ogt_bms.json +16 -0
- aiobmsble/test_data/pro_bms.json +15 -0
- aiobmsble/test_data/redodo_bms.json +151 -0
- aiobmsble/test_data/renogy_bms.json +19 -0
- aiobmsble/test_data/renogy_pro_bms.json +16 -0
- aiobmsble/test_data/roypow_bms.json +54 -0
- aiobmsble/test_data/seplos_bms.json +96 -0
- aiobmsble/test_data/seplos_v2_bms.json +41 -0
- aiobmsble/test_data/tdt_bms.json +14 -0
- aiobmsble/test_data/tianpwr_bms.json +13 -0
- aiobmsble-0.4.dist-info/METADATA +163 -0
- aiobmsble-0.4.dist-info/RECORD +64 -0
- aiobmsble-0.2.3.dist-info/METADATA +0 -122
- aiobmsble-0.2.3.dist-info/RECORD +0 -36
- {aiobmsble-0.2.3.dist-info → aiobmsble-0.4.dist-info}/WHEEL +0 -0
- {aiobmsble-0.2.3.dist-info → aiobmsble-0.4.dist-info}/entry_points.txt +0 -0
- {aiobmsble-0.2.3.dist-info → aiobmsble-0.4.dist-info}/licenses/LICENSE +0 -0
- {aiobmsble-0.2.3.dist-info → aiobmsble-0.4.dist-info}/top_level.txt +0 -0
aiobmsble/bms/roypow_bms.py
CHANGED
@@ -47,9 +47,9 @@ class BMS(BaseBMS):
|
|
47
47
|
)
|
48
48
|
_CMDS: Final[set[int]] = set({field.idx for field in _FIELDS})
|
49
49
|
|
50
|
-
def __init__(self, ble_device: BLEDevice,
|
50
|
+
def __init__(self, ble_device: BLEDevice, keep_alive: bool = True) -> None:
|
51
51
|
"""Initialize BMS."""
|
52
|
-
super().__init__(ble_device,
|
52
|
+
super().__init__(ble_device, keep_alive)
|
53
53
|
self._data_final: dict[int, bytearray] = {}
|
54
54
|
self._exp_len: int = 0
|
55
55
|
|
aiobmsble/bms/seplos_bms.py
CHANGED
@@ -57,9 +57,9 @@ class BMS(BaseBMS):
|
|
57
57
|
field[2] for field in PQUERY.values()
|
58
58
|
}
|
59
59
|
|
60
|
-
def __init__(self, ble_device: BLEDevice,
|
60
|
+
def __init__(self, ble_device: BLEDevice, keep_alive: bool = True) -> None:
|
61
61
|
"""Intialize private BMS members."""
|
62
|
-
super().__init__(ble_device,
|
62
|
+
super().__init__(ble_device, keep_alive)
|
63
63
|
self._data_final: dict[int, bytearray] = {}
|
64
64
|
self._pack_count: int = 0 # number of battery packs
|
65
65
|
self._pkglen: int = 0 # expected packet length
|
@@ -73,7 +73,7 @@ class BMS(BaseBMS):
|
|
73
73
|
"service_uuid": BMS.uuid_services()[0],
|
74
74
|
"connectable": True,
|
75
75
|
}
|
76
|
-
for pattern in {f"SP{num}?B*" for num in range(10)} | {"CSY*"}
|
76
|
+
for pattern in {f"SP{num}?B*" for num in range(10)} | {"CSY*"} | {"SP1??B*"}
|
77
77
|
]
|
78
78
|
|
79
79
|
@staticmethod
|
aiobmsble/bms/seplos_v2_bms.py
CHANGED
@@ -36,9 +36,9 @@ class BMS(BaseBMS):
|
|
36
36
|
_GSMD_LEN: Final[int] = _CELL_POS + max((dp.pos + dp.size) for dp in _PFIELDS) + 3
|
37
37
|
_CMDS: Final[list[tuple[int, bytes]]] = [(0x51, b""), (0x61, b"\x00"), (0x62, b"")]
|
38
38
|
|
39
|
-
def __init__(self, ble_device: BLEDevice,
|
39
|
+
def __init__(self, ble_device: BLEDevice, keep_alive: bool = True) -> None:
|
40
40
|
"""Initialize BMS."""
|
41
|
-
super().__init__(ble_device,
|
41
|
+
super().__init__(ble_device, keep_alive)
|
42
42
|
self._data_final: dict[int, bytearray] = {}
|
43
43
|
self._exp_len: int = BMS._MIN_LEN
|
44
44
|
self._exp_reply: set[int] = set()
|
aiobmsble/bms/tdt_bms.py
CHANGED
@@ -41,9 +41,9 @@ class BMS(BaseBMS):
|
|
41
41
|
) # problem code is not included in the list, but extra
|
42
42
|
_CMDS: Final[list[int]] = [*list({field.idx for field in _FIELDS}), 0x8D]
|
43
43
|
|
44
|
-
def __init__(self, ble_device: BLEDevice,
|
44
|
+
def __init__(self, ble_device: BLEDevice, keep_alive: bool = True) -> None:
|
45
45
|
"""Initialize BMS."""
|
46
|
-
super().__init__(ble_device,
|
46
|
+
super().__init__(ble_device, keep_alive)
|
47
47
|
self._data_final: dict[int, bytearray] = {}
|
48
48
|
self._cmd_heads: list[int] = BMS._CMD_HEADS
|
49
49
|
self._exp_len: int = 0
|
aiobmsble/bms/tianpwr_bms.py
CHANGED
@@ -37,9 +37,9 @@ class BMS(BaseBMS):
|
|
37
37
|
)
|
38
38
|
_CMDS: Final[set[int]] = set({field.idx for field in _FIELDS}) | set({0x87})
|
39
39
|
|
40
|
-
def __init__(self, ble_device: BLEDevice,
|
40
|
+
def __init__(self, ble_device: BLEDevice, keep_alive: bool = True) -> None:
|
41
41
|
"""Initialize BMS."""
|
42
|
-
super().__init__(ble_device,
|
42
|
+
super().__init__(ble_device, keep_alive)
|
43
43
|
self._data_final: dict[int, bytearray] = {}
|
44
44
|
|
45
45
|
@staticmethod
|
@@ -0,0 +1,95 @@
|
|
1
|
+
"""Test advertisements for aiobmsble package."""
|
2
|
+
|
3
|
+
from importlib import resources
|
4
|
+
import json
|
5
|
+
from typing import Any
|
6
|
+
|
7
|
+
from bleak.backends.scanner import AdvertisementData
|
8
|
+
import pytest
|
9
|
+
|
10
|
+
from tests.bluetooth import generate_advertisement_data
|
11
|
+
|
12
|
+
type BmsAdvList = list[tuple[AdvertisementData, str, list[str]]]
|
13
|
+
|
14
|
+
|
15
|
+
def _json_dict_to_advdata(json_dict: dict[str, Any]) -> AdvertisementData:
|
16
|
+
"""Generate an AdvertisementData instance from a JSON dictionary."""
|
17
|
+
|
18
|
+
if "manufacturer_data" in json_dict:
|
19
|
+
json_dict["manufacturer_data"] = {
|
20
|
+
int(k): bytes.fromhex(v) for k, v in json_dict["manufacturer_data"].items()
|
21
|
+
}
|
22
|
+
if "service_data" in json_dict:
|
23
|
+
json_dict["service_data"] = {
|
24
|
+
k: bytes.fromhex(v) for k, v in json_dict["service_data"].items()
|
25
|
+
}
|
26
|
+
if "platform_data" in json_dict:
|
27
|
+
json_dict["platform_data"] = tuple(json_dict.get("platform_data", []))
|
28
|
+
|
29
|
+
return generate_advertisement_data(**json_dict)
|
30
|
+
|
31
|
+
|
32
|
+
@pytest.fixture
|
33
|
+
def bms_advertisements() -> BmsAdvList:
|
34
|
+
"""Provide all available BMS advertisements from test data directory.
|
35
|
+
|
36
|
+
Load all *_bms.json files from the packaged test data directory.
|
37
|
+
"""
|
38
|
+
all_data: BmsAdvList = []
|
39
|
+
|
40
|
+
for resource in resources.files(__package__).iterdir():
|
41
|
+
if resource.name.endswith("_bms.json"):
|
42
|
+
with resource.open("r", encoding="UTF-8") as f:
|
43
|
+
raw_data: Any = json.load(f)
|
44
|
+
assert isinstance(raw_data, list)
|
45
|
+
|
46
|
+
for entry in raw_data:
|
47
|
+
assert isinstance(entry, dict)
|
48
|
+
assert {"advertisement", "type"}.issubset(set(entry.keys()))
|
49
|
+
adv: AdvertisementData = _json_dict_to_advdata(
|
50
|
+
entry["advertisement"]
|
51
|
+
)
|
52
|
+
bms_type: str = entry["type"]
|
53
|
+
comments: list[str] = entry["_comments"]
|
54
|
+
|
55
|
+
assert isinstance(adv, AdvertisementData)
|
56
|
+
assert isinstance(bms_type, str)
|
57
|
+
assert isinstance(comments, list)
|
58
|
+
assert all(isinstance(c, str) for c in comments)
|
59
|
+
assert resource.name == f"{bms_type}.json"
|
60
|
+
|
61
|
+
all_data.append((adv, bms_type, comments))
|
62
|
+
return all_data
|
63
|
+
|
64
|
+
|
65
|
+
@pytest.fixture
|
66
|
+
def ignore_advertisements() -> BmsAdvList:
|
67
|
+
"""Provide a list of advertisements that shall not be identified as a valid BMS.
|
68
|
+
|
69
|
+
Load ignore.json files from the packaged test data directory.
|
70
|
+
"""
|
71
|
+
data: BmsAdvList = []
|
72
|
+
|
73
|
+
with (
|
74
|
+
resources.files(__package__)
|
75
|
+
.joinpath("ignore.json")
|
76
|
+
.open("r", encoding="UTF-8") as f
|
77
|
+
):
|
78
|
+
raw_data: Any = json.load(f)
|
79
|
+
assert isinstance(raw_data, list)
|
80
|
+
|
81
|
+
for entry in raw_data:
|
82
|
+
assert isinstance(entry, dict)
|
83
|
+
assert {"advertisement", "reason"}.issubset(set(entry.keys()))
|
84
|
+
adv: AdvertisementData = _json_dict_to_advdata(entry["advertisement"])
|
85
|
+
reason: str = entry["reason"]
|
86
|
+
comments: list[str] = entry["_comments"]
|
87
|
+
|
88
|
+
assert isinstance(adv, AdvertisementData)
|
89
|
+
assert isinstance(reason, str)
|
90
|
+
assert isinstance(comments, list)
|
91
|
+
assert all(isinstance(c, str) for c in comments)
|
92
|
+
|
93
|
+
data.append((adv, reason, comments))
|
94
|
+
|
95
|
+
return data
|
@@ -0,0 +1,34 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "SOK-24V1127",
|
5
|
+
"service_uuids": [
|
6
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
7
|
+
],
|
8
|
+
"rssi": -94
|
9
|
+
},
|
10
|
+
"type": "abc_bms",
|
11
|
+
"_comments": [
|
12
|
+
"source pcap (https://github.com/patman15/BMS_BLE-HA/issues/168)"
|
13
|
+
]
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"advertisement": {
|
17
|
+
"local_name": "SOK-AA02120",
|
18
|
+
"service_uuids": [
|
19
|
+
"00001800-0000-1000-8000-00805f9b34fb",
|
20
|
+
"00001801-0000-1000-8000-00805f9b34fb",
|
21
|
+
"0000180a-0000-1000-8000-00805f9b34fb",
|
22
|
+
"0000180f-0000-1000-8000-00805f9b34fb",
|
23
|
+
"0000ffe0-0000-1000-8000-00805f9b34fb",
|
24
|
+
"0000fff0-0000-1000-8000-00805f9b34fb",
|
25
|
+
"f000ffc0-0451-4000-b000-000000000000"
|
26
|
+
],
|
27
|
+
"rssi": -62
|
28
|
+
},
|
29
|
+
"type": "abc_bms",
|
30
|
+
"_comments": [
|
31
|
+
"source log (https://github.com/patman15/BMS_BLE-HA/issues/394)"
|
32
|
+
]
|
33
|
+
}
|
34
|
+
]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "ANT-BLE24C-001",
|
5
|
+
"manufacturer_data": {
|
6
|
+
"8979": "88a0aabbcc900001"
|
7
|
+
},
|
8
|
+
"service_uuids": [
|
9
|
+
"0000ffe0-0000-1000-8000-00805f9b34fb"
|
10
|
+
],
|
11
|
+
"rssi": -70
|
12
|
+
},
|
13
|
+
"type": "ant_bms",
|
14
|
+
"_comments": [
|
15
|
+
"source advmon (https://github.com/patman15/BMS_BLE-HA/issues/366)"
|
16
|
+
]
|
17
|
+
}
|
18
|
+
]
|
@@ -0,0 +1,19 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "ANT-BLE16S",
|
5
|
+
"manufacturer_data": {
|
6
|
+
"1623": "88a0aabbcca12345"
|
7
|
+
},
|
8
|
+
"service_uuids": [
|
9
|
+
"0000ffe0-0000-1000-8000-00805f9b34fb",
|
10
|
+
"0000fee7-0000-1000-8000-00805f9b34fb"
|
11
|
+
],
|
12
|
+
"rssi": -31
|
13
|
+
},
|
14
|
+
"type": "ant_leg_bms",
|
15
|
+
"_comments": [
|
16
|
+
"source HA Bluetooth"
|
17
|
+
]
|
18
|
+
}
|
19
|
+
]
|
@@ -0,0 +1,34 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "HSKS-25A-118",
|
5
|
+
"manufacturer_data": {
|
6
|
+
"123": "02ffff7b"
|
7
|
+
},
|
8
|
+
"service_uuids": [
|
9
|
+
"0000ff00-0000-1000-8000-00805f9b34fb"
|
10
|
+
],
|
11
|
+
"rssi": -70
|
12
|
+
},
|
13
|
+
"type": "braunpwr_bms",
|
14
|
+
"_comments": [
|
15
|
+
"source pcap (https://github.com/patman15/BMS_BLE-HA/issues/303)"
|
16
|
+
]
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"advertisement": {
|
20
|
+
"local_name": "BL-25F-170-118",
|
21
|
+
"manufacturer_data": {
|
22
|
+
"123": "02ffff7d"
|
23
|
+
},
|
24
|
+
"service_uuids": [
|
25
|
+
"0000ff00-0000-1000-8000-00805f9b34fb"
|
26
|
+
],
|
27
|
+
"rssi": -76
|
28
|
+
},
|
29
|
+
"type": "braunpwr_bms",
|
30
|
+
"_comments": [
|
31
|
+
"source LOG (https://github.com/patman15/BMS_BLE-HA/issues/303)"
|
32
|
+
]
|
33
|
+
}
|
34
|
+
]
|
@@ -0,0 +1,90 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "170R000121",
|
5
|
+
"manufacturer_data": {
|
6
|
+
"21330": "2134ba03ec110cb4010500010000"
|
7
|
+
},
|
8
|
+
"service_uuids": [
|
9
|
+
"00001800-0000-1000-8000-00805f9b34fb",
|
10
|
+
"00001801-0000-1000-8000-00805f9b34fb",
|
11
|
+
"0000180a-0000-1000-8000-00805f9b34fb",
|
12
|
+
"0000fd00-0000-1000-8000-00805f9b34fb",
|
13
|
+
"0000ff90-0000-1000-8000-00805f9b34fb",
|
14
|
+
"0000ffb0-0000-1000-8000-00805f9b34fb",
|
15
|
+
"0000ffc0-0000-1000-8000-00805f9b34fb",
|
16
|
+
"0000ffd0-0000-1000-8000-00805f9b34fb",
|
17
|
+
"0000ffe0-0000-1000-8000-00805f9b34fb",
|
18
|
+
"0000ffe5-0000-1000-8000-00805f9b34fb",
|
19
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
20
|
+
],
|
21
|
+
"tx_power": 0,
|
22
|
+
"rssi": -75
|
23
|
+
},
|
24
|
+
"type": "cbtpwr_bms",
|
25
|
+
"_comments": [
|
26
|
+
"source LOG, https://github.com/patman15/BMS_BLE-HA/issues/59"
|
27
|
+
]
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"advertisement": {
|
31
|
+
"local_name": "170R000086",
|
32
|
+
"manufacturer_data": {
|
33
|
+
"21330": "2134ba03ec110cf8010500010000"
|
34
|
+
},
|
35
|
+
"service_uuids": [
|
36
|
+
"00001800-0000-1000-8000-00805f9b34fb",
|
37
|
+
"00001801-0000-1000-8000-00805f9b34fb",
|
38
|
+
"0000180a-0000-1000-8000-00805f9b34fb",
|
39
|
+
"0000fd00-0000-1000-8000-00805f9b34fb",
|
40
|
+
"0000ff90-0000-1000-8000-00805f9b34fb",
|
41
|
+
"0000ffb0-0000-1000-8000-00805f9b34fb",
|
42
|
+
"0000ffc0-0000-1000-8000-00805f9b34fb",
|
43
|
+
"0000ffd0-0000-1000-8000-00805f9b34fb",
|
44
|
+
"0000ffe0-0000-1000-8000-00805f9b34fb",
|
45
|
+
"0000ffe5-0000-1000-8000-00805f9b34fb",
|
46
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
47
|
+
],
|
48
|
+
"tx_power": 0,
|
49
|
+
"rssi": -73
|
50
|
+
},
|
51
|
+
"type": "cbtpwr_bms",
|
52
|
+
"_comments": [
|
53
|
+
"source LOG"
|
54
|
+
]
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"advertisement": {
|
58
|
+
"local_name": "140R000288",
|
59
|
+
"manufacturer_data": {
|
60
|
+
"0": "ffffffff6400ff000000000000000000"
|
61
|
+
},
|
62
|
+
"service_uuids": [
|
63
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
64
|
+
],
|
65
|
+
"rssi": -82
|
66
|
+
},
|
67
|
+
"type": "cbtpwr_bms",
|
68
|
+
"_comments": [
|
69
|
+
"source BT monitor (https://github.com/patman15/BMS_BLE-HA/issues/176)"
|
70
|
+
]
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"advertisement": {
|
74
|
+
"local_name": "100R0002E3",
|
75
|
+
"manufacturer_data": {
|
76
|
+
"21330": "2134ba03ec110909010500010000"
|
77
|
+
},
|
78
|
+
"service_uuids": [
|
79
|
+
"000003c1-0000-1000-8000-00805f9b34fb"
|
80
|
+
],
|
81
|
+
"tx_power": 0,
|
82
|
+
"rssi": -76
|
83
|
+
},
|
84
|
+
"type": "cbtpwr_bms",
|
85
|
+
"_comments": [
|
86
|
+
"source advmon (https://github.com/patman15/BMS_BLE-HA/issues/197)",
|
87
|
+
"Creabest"
|
88
|
+
]
|
89
|
+
}
|
90
|
+
]
|
@@ -0,0 +1,20 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "VB024000390",
|
5
|
+
"manufacturer_data": {
|
6
|
+
"16963": "545e0211f82e0ca88942"
|
7
|
+
},
|
8
|
+
"service_uuids": [
|
9
|
+
"0000fff0-0000-1000-8000-00805f9b34fb",
|
10
|
+
"0000ffb0-0000-1000-8000-00805f9b34fb"
|
11
|
+
],
|
12
|
+
"rssi": -73
|
13
|
+
},
|
14
|
+
"type": "cbtpwr_vb_bms",
|
15
|
+
"_comments": [
|
16
|
+
"source advmon (https://github.com/patman15/BMS_BLE-HA/issues/240)",
|
17
|
+
"Creabest"
|
18
|
+
]
|
19
|
+
}
|
20
|
+
]
|
@@ -0,0 +1,100 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "DL-46640102XXXX",
|
5
|
+
"manufacturer_data": {
|
6
|
+
"25670": "010209ac"
|
7
|
+
},
|
8
|
+
"service_uuids": [
|
9
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
10
|
+
],
|
11
|
+
"rssi": -58
|
12
|
+
},
|
13
|
+
"type": "daly_bms",
|
14
|
+
"_comments": [
|
15
|
+
"source LOG (https://github.com/patman15/BMS_BLE-HA/issues/89)"
|
16
|
+
]
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"advertisement": {
|
20
|
+
"local_name": "DL-401710015C9B",
|
21
|
+
"manufacturer_data": {
|
22
|
+
"770": "16401710015c9b444c"
|
23
|
+
},
|
24
|
+
"rssi": -36
|
25
|
+
},
|
26
|
+
"type": "daly_bms",
|
27
|
+
"_comments": [
|
28
|
+
"source LOG, proxy (https://github.com/patman15/BMS_BLE-HA/issues/160)"
|
29
|
+
]
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"advertisement": {
|
33
|
+
"local_name": "JHB-501812XXXXXX",
|
34
|
+
"manufacturer_data": {
|
35
|
+
"260": "0150181201a3b34a4842"
|
36
|
+
},
|
37
|
+
"rssi": -46
|
38
|
+
},
|
39
|
+
"type": "daly_bms",
|
40
|
+
"_comments": [
|
41
|
+
"source BTctl (https://github.com/patman15/BMS_BLE-HA/issues/145)"
|
42
|
+
]
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"advertisement": {
|
46
|
+
"local_name": "Randomname",
|
47
|
+
"manufacturer_data": {
|
48
|
+
"260": "0150181201a4944a4842"
|
49
|
+
},
|
50
|
+
"rssi": -36
|
51
|
+
},
|
52
|
+
"type": "daly_bms",
|
53
|
+
"_comments": [
|
54
|
+
"source LOG (https://github.com/patman15/BMS_BLE-HA/issues/160#issuecomment-2629318416)",
|
55
|
+
"JHB-50181201A494"
|
56
|
+
]
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"advertisement": {
|
60
|
+
"local_name": "BT270-2",
|
61
|
+
"manufacturer_data": {
|
62
|
+
"770": "16401712011197444c"
|
63
|
+
},
|
64
|
+
"rssi": -60
|
65
|
+
},
|
66
|
+
"type": "daly_bms",
|
67
|
+
"_comments": [
|
68
|
+
"source BTctl (https://github.com/patman15/BMS_BLE-HA/issues/174#issuecomment-2637936795)"
|
69
|
+
]
|
70
|
+
},
|
71
|
+
{
|
72
|
+
"advertisement": {
|
73
|
+
"local_name": "DL-40160901534C",
|
74
|
+
"manufacturer_data": {
|
75
|
+
"258": "04"
|
76
|
+
},
|
77
|
+
"rssi": -87
|
78
|
+
},
|
79
|
+
"type": "daly_bms",
|
80
|
+
"_comments": [
|
81
|
+
"source advmon (https://github.com/patman15/BMS_BLE-HA/issues/204)",
|
82
|
+
"16S LiFePo 250A BMS"
|
83
|
+
]
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"advertisement": {
|
87
|
+
"local_name": "DL-FB4C2E0000000",
|
88
|
+
"manufacturer_data": {
|
89
|
+
"771": "00b4c2e0000000444c00"
|
90
|
+
},
|
91
|
+
"rssi": -81
|
92
|
+
},
|
93
|
+
"type": "daly_bms",
|
94
|
+
"_comments": [
|
95
|
+
"proxy LOG (https://github.com/patman15/BMS_BLE-HA/issues/85)",
|
96
|
+
"Bulltron battery",
|
97
|
+
"MAC address (Bouffalo Lab)"
|
98
|
+
]
|
99
|
+
}
|
100
|
+
]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "TBA-13500277",
|
5
|
+
"service_uuids": [
|
6
|
+
"00001800-0000-1000-8000-00805f9b34fb",
|
7
|
+
"00001801-0000-1000-8000-00805f9b34fb",
|
8
|
+
"0000180a-0000-1000-8000-00805f9b34fb",
|
9
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
10
|
+
],
|
11
|
+
"rssi": -72
|
12
|
+
},
|
13
|
+
"type": "dpwrcore_bms",
|
14
|
+
"_comments": [
|
15
|
+
"source BTctl (https://github.com/patman15/BMS_BLE-HA/issues/52#issuecomment-2390048120)"
|
16
|
+
]
|
17
|
+
}
|
18
|
+
]
|
@@ -0,0 +1,100 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"advertisement": {
|
4
|
+
"local_name": "ECO-WORTHY 02_B8EF",
|
5
|
+
"manufacturer_data": {
|
6
|
+
"49844": "e0fab8f0"
|
7
|
+
},
|
8
|
+
"service_uuids": [
|
9
|
+
"00001800-0000-1000-8000-00805f9b34fb",
|
10
|
+
"00001801-0000-1000-8000-00805f9b34fb",
|
11
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
12
|
+
],
|
13
|
+
"rssi": -50
|
14
|
+
},
|
15
|
+
"type": "ecoworthy_bms",
|
16
|
+
"_comments": [
|
17
|
+
"source LOG, proxy (https://github.com/patman15/BMS_BLE-HA/issues/164#issue-2825586172)",
|
18
|
+
"MAC address, correct, public"
|
19
|
+
]
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"advertisement": {
|
23
|
+
"local_name": "ECO-WORTHY 02_50DB",
|
24
|
+
"manufacturer_data": {
|
25
|
+
"47912": "ed0050dc"
|
26
|
+
},
|
27
|
+
"rssi": -49
|
28
|
+
},
|
29
|
+
"type": "ecoworthy_bms",
|
30
|
+
"_comments": [
|
31
|
+
"source BTctl (https://github.com/patman15/BMS_BLE-HA/issues/253)",
|
32
|
+
"MAC address, correct, public"
|
33
|
+
]
|
34
|
+
},
|
35
|
+
{
|
36
|
+
"advertisement": {
|
37
|
+
"local_name": "ECO-WORTHY 0B_5AD4",
|
38
|
+
"manufacturer_data": {
|
39
|
+
"57570": "5a783c31"
|
40
|
+
},
|
41
|
+
"service_uuids": [
|
42
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
43
|
+
],
|
44
|
+
"rssi": -86
|
45
|
+
},
|
46
|
+
"type": "ecoworthy_bms",
|
47
|
+
"_comments": [
|
48
|
+
"source advmon (https://github.com/patman15/BMS_BLE-HA/issues/286)",
|
49
|
+
"MAC address, correct, private"
|
50
|
+
]
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"advertisement": {
|
54
|
+
"local_name": "ECO-WORTHY 02_3DDF",
|
55
|
+
"manufacturer_data": {
|
56
|
+
"15996": "821c3de0"
|
57
|
+
},
|
58
|
+
"rssi": -49
|
59
|
+
},
|
60
|
+
"type": "ecoworthy_bms",
|
61
|
+
"_comments": [
|
62
|
+
"source proxy LOG (https://github.com/patman15/BMS_BLE-HA/issues/295)",
|
63
|
+
"MAC address, correct, public"
|
64
|
+
]
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"advertisement": {
|
68
|
+
"local_name": "DCHOUSE 01_4F9F",
|
69
|
+
"manufacturer_data": {
|
70
|
+
"57570": "5a72a745"
|
71
|
+
},
|
72
|
+
"service_uuids": [
|
73
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
74
|
+
],
|
75
|
+
"rssi": -68
|
76
|
+
},
|
77
|
+
"type": "ecoworthy_bms",
|
78
|
+
"_comments": [
|
79
|
+
"source advmon (https://github.com/patman15/BMS_BLE-HA/issues/326)",
|
80
|
+
"MAC address correct"
|
81
|
+
]
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"advertisement": {
|
85
|
+
"local_name": "ECO-WORTHY 0B_198D",
|
86
|
+
"manufacturer_data": {
|
87
|
+
"59362": "798e373d"
|
88
|
+
},
|
89
|
+
"service_uuids": [
|
90
|
+
"0000fff0-0000-1000-8000-00805f9b34fb"
|
91
|
+
],
|
92
|
+
"rssi": -50
|
93
|
+
},
|
94
|
+
"type": "ecoworthy_bms",
|
95
|
+
"_comments": [
|
96
|
+
"source advmon (https://github.com/patman15/BMS_BLE-HA/issues/386)",
|
97
|
+
"MAC address, correct, private"
|
98
|
+
]
|
99
|
+
}
|
100
|
+
]
|