Skip to content

Commit d029548

Browse files
authored
Merge pull request #1329 from custom-components/kkm
Fix negative temperatures and fraction of KKM K6 sensor
2 parents 7496e66 + 682f567 commit d029548

File tree

3 files changed

+31
-10
lines changed

3 files changed

+31
-10
lines changed

custom_components/ble_monitor/ble_parser/kkm.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,8 @@ def parse_kkm(self, data: bytes, mac: str):
2222
">BBBHbBBBhhh", data[4:19]
2323
)
2424
if frame_type == 0x21 and version == 1:
25-
if temp < 0:
26-
temperature = -(temp + 128 + temp_frac / 100)
27-
else:
28-
temperature = temp + temp_frac / 100
29-
humidity = humi + humi_frac / 100
25+
temperature = temp + temp_frac / 256
26+
humidity = humi + humi_frac / 256
3027
result.update(
3128
{
3229
"temperature": temperature,

custom_components/ble_monitor/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@
1414
"btsocket>=0.2.0",
1515
"pyric>=0.1.6.3"
1616
],
17-
"version": "12.10.1"
17+
"version": "12.10.2"
1818
}

custom_components/ble_monitor/test/test_kkm.py

+28-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class TestKKM:
66
"""Tests for the KKM parser"""
77
def test_kkm_k6(self):
88
"""Test KKM BLE parser for K6 sensors"""
9-
data_string = "043E26020100016CD0060234DD1A0201060303AAFE1216AAFE21010F0E07192A224FFFFCFFEC03EBD3"
9+
data_string = "043E26020100016CD0060234DD1A0201060303AAFE1216AAFE2101070e5b16531f95FFFCFFEC03EBD3"
1010
data = bytes(bytearray.fromhex(data_string))
1111

1212
# pylint: disable=unused-variable
@@ -18,12 +18,36 @@ def test_kkm_k6(self):
1818
assert sensor_msg["mac"] == "DD340206D06C"
1919
assert sensor_msg["packet"] == "no packet id"
2020
assert sensor_msg["data"]
21-
assert sensor_msg["temperature"] == 25.42
22-
assert sensor_msg["humidity"] == 34.79
21+
assert sensor_msg["temperature"] == 22.32421875
22+
assert sensor_msg["humidity"] == 31.58203125
2323
assert sensor_msg["acceleration"] == 1003.2
2424
assert sensor_msg["acceleration x"] == -4
2525
assert sensor_msg["acceleration y"] == -20
2626
assert sensor_msg["acceleration z"] == 1003
27-
assert sensor_msg["voltage"] == 3.591
27+
assert sensor_msg["voltage"] == 3.675
28+
assert sensor_msg["battery"] == 100
29+
assert sensor_msg["rssi"] == -45
30+
31+
def test_kkm_k6_neg_temp(self):
32+
"""Test KKM BLE parser for K6 sensors with negative temperature"""
33+
data_string = "043E26020100016CD0060234DD1A0201060303AAFE1216AAFE2101070e5bffc01f95FFFCFFEC03EBD3"
34+
data = bytes(bytearray.fromhex(data_string))
35+
36+
# pylint: disable=unused-variable
37+
ble_parser = BleParser()
38+
sensor_msg, tracker_msg = ble_parser.parse_raw_data(data)
39+
40+
assert sensor_msg["firmware"] == "KKM"
41+
assert sensor_msg["type"] == "K6 Sensor Beacon"
42+
assert sensor_msg["mac"] == "DD340206D06C"
43+
assert sensor_msg["packet"] == "no packet id"
44+
assert sensor_msg["data"]
45+
assert sensor_msg["temperature"] == -0.25
46+
assert sensor_msg["humidity"] == 31.58203125
47+
assert sensor_msg["acceleration"] == 1003.2
48+
assert sensor_msg["acceleration x"] == -4
49+
assert sensor_msg["acceleration y"] == -20
50+
assert sensor_msg["acceleration z"] == 1003
51+
assert sensor_msg["voltage"] == 3.675
2852
assert sensor_msg["battery"] == 100
2953
assert sensor_msg["rssi"] == -45

0 commit comments

Comments
 (0)