Skip to content

Commit

Permalink
fix: data alignment (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
bdraco authored Aug 25, 2022
1 parent de559cf commit 12cac30
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 17 deletions.
7 changes: 4 additions & 3 deletions src/thermobeacon_ble/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def _start_update(self, service_info: BluetoothServiceInfo) -> None:
if not MFR_IDS.intersection(service_info.manufacturer_data):
return
changed_manufacturer_data = self.changed_manufacturer_data(service_info)
if changed_manufacturer_data is None:
if not changed_manufacturer_data:
return
last_id = list(changed_manufacturer_data)[-1]
data = (
Expand All @@ -70,11 +70,12 @@ def _start_update(self, service_info: BluetoothServiceInfo) -> None:
def _process_update(self, data: bytes) -> None:
"""Update from BLE advertisement data."""
_LOGGER.debug("Parsing ThermoBeacon BLE advertisement data: %s", data)
if len(data) != 22:
if len(data) != 20:
return

button_pushed = data[3] & 0x80
xvalue = data[12:18]
xvalue = data[10:16]

(volt, temp, humi) = unpack("<HhH", xvalue)

if volt >= 3000:
Expand Down
29 changes: 15 additions & 14 deletions tests/test_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,26 +43,27 @@ def test_can_create():
)


def test_with_20_byte_update():
def test_with_22_byte_update():
parser = ThermoBeaconBluetoothDeviceData()
parser.supported(MFR_20) is True
assert parser.title == "Lanyard/mini hygrometer EEFF"
parser.supported(MFR_22) is True
assert parser.title == "Smart hygrometer EEFF"


def test_supported_set_the_title():
parser = ThermoBeaconBluetoothDeviceData()
parser.supported(MFR_22) is True
assert parser.title == "Smart hygrometer EEFF"
parser.supported(MFR_20) is True
assert parser.title == "Lanyard/mini hygrometer EEFF"


def test_22_byte_update():
def test_20_byte_update():
parser = ThermoBeaconBluetoothDeviceData()
assert parser.update(MFR_22) == SensorUpdate(
title="Smart hygrometer EEFF",
update = parser.update(MFR_20)
assert update == SensorUpdate(
title="Lanyard/mini hygrometer EEFF",
devices={
None: SensorDeviceInfo(
name="Smart hygrometer EEFF",
model=21,
name="Lanyard/mini hygrometer EEFF",
model=16,
manufacturer="ThermoBeacon",
sw_version=None,
hw_version=None,
Expand Down Expand Up @@ -99,22 +100,22 @@ def test_22_byte_update():
DeviceKey(key="humidity", device_id=None): SensorValue(
device_key=DeviceKey(key="humidity", device_id=None),
name="Humidity",
native_value=26.44,
native_value=43.38,
),
DeviceKey(key="voltage", device_id=None): SensorValue(
device_key=DeviceKey(key="voltage", device_id=None),
name="Voltage",
native_value=0.10,
native_value=3.3,
),
DeviceKey(key="temperature", device_id=None): SensorValue(
device_key=DeviceKey(key="temperature", device_id=None),
name="Temperature",
native_value=0.0,
native_value=24.0,
),
DeviceKey(key="battery", device_id=None): SensorValue(
device_key=DeviceKey(key="battery", device_id=None),
name="Battery",
native_value=0,
native_value=100,
),
DeviceKey(key="signal_strength", device_id=None): SensorValue(
device_key=DeviceKey(key="signal_strength", device_id=None),
Expand Down

0 comments on commit 12cac30

Please sign in to comment.