Skip to content

Commit 5e7b9a4

Browse files
authored
Merge pull request #1338 from custom-components/acconeer
Use autosensors for Acconeer sensors
2 parents 5c6cb87 + 8ba12bd commit 5e7b9a4

File tree

3 files changed

+9
-39
lines changed

3 files changed

+9
-39
lines changed

custom_components/ble_monitor/ble_parser/acconeer.py

+6-32
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,10 @@
88

99
ACCONEER_SENSOR_IDS = {
1010
0x80: "Acconeer XM122",
11-
0x90: "Acconeer XM126 Distance",
11+
0x90: "Acconeer XM126",
1212
0x91: "Acconeer XM126",
1313
}
1414

15-
MEASUREMENTS = {
16-
0x80: ["presence", "temperature"],
17-
0x90: ["distance_mm", "temperature"],
18-
0x91: ["presence", "temperature"],
19-
}
20-
2115

2216
def parse_acconeer(self, data: bytes, mac: str):
2317
"""Acconeer parser"""
@@ -31,48 +25,28 @@ def parse_acconeer(self, data: bytes, mac: str):
3125
# Acconeer Sensors
3226
device_type = ACCONEER_SENSOR_IDS[device_id]
3327

34-
if "Distance" in device_type:
35-
measurements = MEASUREMENTS[device_id]
28+
if device_id == 0x90:
3629
(
3730
battery_level,
3831
temperature,
3932
distance_mm,
4033
reserved2
4134
) = unpack("<HhHQ", xvalue)
42-
43-
if "distance_mm" in measurements:
44-
result.update({
45-
"distance mm": distance_mm,
46-
})
47-
48-
if "temperature" in measurements:
49-
result.update({
50-
"temperature": temperature,
51-
})
52-
5335
result.update({
36+
"distance mm": distance_mm,
37+
"temperature": temperature,
5438
"battery": battery_level,
5539
})
5640
else:
57-
measurements = MEASUREMENTS[device_id]
5841
(
5942
battery_level,
6043
temperature,
6144
presence,
6245
reserved2
6346
) = unpack("<HhHQ", xvalue)
64-
65-
if "presence" in measurements:
66-
result.update({
67-
"motion": 0 if presence == 0 else 1,
68-
})
69-
70-
if "temperature" in measurements:
71-
result.update({
72-
"temperature": temperature,
73-
})
74-
7547
result.update({
48+
"motion": 0 if presence == 0 else 1,
49+
"temperature": temperature,
7650
"battery": battery_level,
7751
})
7852
else:

custom_components/ble_monitor/const.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -1856,9 +1856,6 @@ class BLEMonitorBinarySensorEntityDescription(
18561856
'Meter TH S1' : [["temperature", "humidity", "battery", "rssi"], [], []],
18571857
'Meter TH plus' : [["temperature", "humidity", "battery", "rssi"], [], []],
18581858
'Laica Smart Scale' : [["weight", "impedance", "rssi"], [], []],
1859-
"Acconeer XM122" : [["temperature", "battery", "rssi"], [], ["motion"]],
1860-
"Acconeer XM126" : [["temperature", "battery", "rssi"], [], ["motion"]],
1861-
"Acconeer XM126 Distance" : [["temperature", "battery", "rssi"], ["distance mm"], []],
18621859
'K6 Sensor Beacon' : [["temperature", "humidity", "acceleration", "voltage", "battery", "rssi"], [], []],
18631860
'DSL-C08' : [["battery", "rssi", "voltage"], [], ["lock", "childlock"]],
18641861
'SmartDry cloth dryer' : [["temperature", "humidity", "voltage", "battery", "shake", "rssi"], [], ["switch"]],
@@ -1993,9 +1990,6 @@ class BLEMonitorBinarySensorEntityDescription(
19931990
'Meter TH S1' : 'Switchbot',
19941991
'Meter TH plus' : 'Switchbot',
19951992
'Laica Smart Scale' : 'Laica',
1996-
'Acconeer XM122' : 'Acconeer',
1997-
'Acconeer XM126' : 'Acconeer',
1998-
'Acconeer XM126 Distance' : 'Acconeer',
19991993
'K6 Sensor Beacon' : 'KKM',
20001994
'SmartDry cloth dryer' : 'SmartDry',
20011995
}
@@ -2030,6 +2024,8 @@ class BLEMonitorBinarySensorEntityDescription(
20302024

20312025
# Sensors that support automatic adding of sensors and binary sensors
20322026
AUTO_MANUFACTURER_DICT = {
2027+
'Acconeer XM122' : 'Acconeer',
2028+
'Acconeer XM126' : 'Acconeer',
20332029
'Amazfit Smart Scale' : 'Amazfit',
20342030
'Blustream' : 'Blustream',
20352031
'BTHome' : 'BTHome',

custom_components/ble_monitor/test/test_acconeer_parser.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def test_acconeer_xm126_distance(self):
5757
sensor_msg, tracker_msg = ble_parser.parse_raw_data(data)
5858

5959
assert sensor_msg["firmware"] == "Acconeer"
60-
assert sensor_msg["type"] == "Acconeer XM126 Distance"
60+
assert sensor_msg["type"] == "Acconeer XM126"
6161
assert sensor_msg["mac"] == "E00990B61234"
6262
assert sensor_msg["packet"] == "6400160058050000000000000000"
6363
assert sensor_msg["data"]

0 commit comments

Comments
 (0)