Skip to content

Commit a1dac35

Browse files
authored
Merge pull request #1263 from jbjornstedt/xm126
Add support for Acconeer XM126
2 parents c002ae9 + d1ae1c7 commit a1dac35

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

custom_components/ble_monitor/ble_parser/acconeer.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
_LOGGER = logging.getLogger(__name__)
88

99
ACCONEER_SENSOR_IDS = {
10-
0x80: "Acconeer XM122"
10+
0x80: "Acconeer XM122",
11+
0x91: "Acconeer XM126",
1112
}
1213

1314
MEASUREMENTS = {
1415
0x80: ["presence", "temperature"],
16+
0x91: ["presence", "temperature"],
1517
}
1618

1719

custom_components/ble_monitor/const.py

+2
Original file line numberDiff line numberDiff line change
@@ -1682,6 +1682,7 @@ class BLEMonitorBinarySensorEntityDescription(
16821682
'Meter TH plus' : [["temperature", "humidity", "battery", "rssi"], [], []],
16831683
'Laica Smart Scale' : [["weight", "impedance", "rssi"], [], []],
16841684
"Acconeer XM122" : [["temperature", "battery", "rssi"], [], ["motion"]],
1685+
"Acconeer XM126" : [["temperature", "battery", "rssi"], [], ["motion"]],
16851686
'K6 Sensor Beacon' : [["temperature", "humidity", "acceleration", "voltage", "battery", "rssi"], [], []],
16861687
'DSL-C08' : [["battery", "rssi", "voltage"], [], ["lock", "childlock"]],
16871688
'SmartDry cloth dryer' : [["temperature", "humidity", "voltage", "battery", "shake", "rssi"], [], ["switch"]],
@@ -1816,6 +1817,7 @@ class BLEMonitorBinarySensorEntityDescription(
18161817
'Meter TH plus' : 'Switchbot',
18171818
'Laica Smart Scale' : 'Laica',
18181819
'Acconeer XM122' : 'Acconeer',
1820+
'Acconeer XM126' : 'Acconeer',
18191821
'K6 Sensor Beacon' : 'KKM',
18201822
'SmartDry cloth dryer' : 'SmartDry',
18211823
}

custom_components/ble_monitor/test/test_acconeer_parser.py

+21
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,24 @@ def test_acconeer_xm122(self):
2323
assert sensor_msg["temperature"] == 22
2424
assert sensor_msg["motion"] == 1
2525
assert sensor_msg["rssi"] == -62
26+
27+
28+
def test_acconeer_xm126(self):
29+
"""Test acconeer parser for Acconeer XM126."""
30+
data_string = "043e22020103013412b69009e01602010612ffc0ac916400160001000000000000000000c2"
31+
32+
data = bytes(bytearray.fromhex(data_string))
33+
34+
# pylint: disable=unused-variable
35+
ble_parser = BleParser()
36+
sensor_msg, tracker_msg = ble_parser.parse_raw_data(data)
37+
38+
assert sensor_msg["firmware"] == "Acconeer"
39+
assert sensor_msg["type"] == "Acconeer XM126"
40+
assert sensor_msg["mac"] == "E00990B61234"
41+
assert sensor_msg["packet"] == "6400160001000000000000000000"
42+
assert sensor_msg["data"]
43+
assert sensor_msg["battery"] == 100
44+
assert sensor_msg["temperature"] == 22
45+
assert sensor_msg["motion"] == 1
46+
assert sensor_msg["rssi"] == -62

0 commit comments

Comments
 (0)