Skip to content

Commit

Permalink
feat: add support for IO Series 7 (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
bdraco authored Oct 25, 2022
1 parent a337c3f commit cc4d965
Show file tree
Hide file tree
Showing 2 changed files with 129 additions and 5 deletions.
10 changes: 5 additions & 5 deletions src/oralb_ble/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class OralBBinarySensor(StrEnum):

class Models(Enum):

IOSerial7 = auto()
IOSeries7 = auto()
SmartSeries7000 = auto()


Expand All @@ -53,8 +53,8 @@ class ModelDescription:


DEVICE_TYPES = {
Models.IOSerial7: ModelDescription(
device_type="IO Serial 7",
Models.IOSeries7: ModelDescription(
device_type="IO Series 7",
modes={
0: "daily clean",
1: "sensitive",
Expand Down Expand Up @@ -140,9 +140,9 @@ def _process_mfr_data(
no_of_sectors,
) = UNPACK_BBHBBBB(data[3:11])

device_bytes = data[4:7]
device_bytes = data[0:3]
if device_bytes == b"\x062k":
model = Models.IOSerial7
model = Models.IOSeries7
else:
model = Models.SmartSeries7000

Expand Down
124 changes: 124 additions & 0 deletions tests/test_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,15 @@
service_data={},
source="local",
)
ORALB_IO_SERIES_7 = BluetoothServiceInfo(
name="78:DB:2F:C2:48:BE",
address="78:DB:2F:C2:48:BE",
rssi=-63,
manufacturer_data={220: b"\x062k\x02 \x00\x01\x01\x01\x03\x04"},
service_uuids=[],
service_data={},
source="local",
)


def test_can_create():
Expand Down Expand Up @@ -517,3 +526,118 @@ def test_dataset_4():
},
events={},
)


def test_io_series_7():
parser = OralBBluetoothDeviceData()
service_info = ORALB_IO_SERIES_7
result = parser.update(service_info)
assert result == SensorUpdate(
title="IO Series 7 48BE",
devices={
None: SensorDeviceInfo(
name="IO Series 7 48BE",
model="IO Series 7",
manufacturer="OralB",
sw_version=None,
hw_version=None,
)
},
entity_descriptions={
DeviceKey(key="number_of_sectors", device_id=None): SensorDescription(
device_key=DeviceKey(key="number_of_sectors", device_id=None),
device_class=None,
native_unit_of_measurement=None,
),
DeviceKey(key="sector_timer", device_id=None): SensorDescription(
device_key=DeviceKey(key="sector_timer", device_id=None),
device_class=None,
native_unit_of_measurement=None,
),
DeviceKey(key="signal_strength", device_id=None): SensorDescription(
device_key=DeviceKey(key="signal_strength", device_id=None),
device_class=SensorDeviceClass.SIGNAL_STRENGTH,
native_unit_of_measurement=Units.SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
),
DeviceKey(key="sector", device_id=None): SensorDescription(
device_key=DeviceKey(key="sector", device_id=None),
device_class=None,
native_unit_of_measurement=None,
),
DeviceKey(key="toothbrush_state", device_id=None): SensorDescription(
device_key=DeviceKey(key="toothbrush_state", device_id=None),
device_class=None,
native_unit_of_measurement=None,
),
DeviceKey(key="mode", device_id=None): SensorDescription(
device_key=DeviceKey(key="mode", device_id=None),
device_class=None,
native_unit_of_measurement=None,
),
DeviceKey(key="pressure", device_id=None): SensorDescription(
device_key=DeviceKey(key="pressure", device_id=None),
device_class=None,
native_unit_of_measurement=None,
),
DeviceKey(key="counter", device_id=None): SensorDescription(
device_key=DeviceKey(key="counter", device_id=None),
device_class=None,
native_unit_of_measurement=None,
),
},
entity_values={
DeviceKey(key="number_of_sectors", device_id=None): SensorValue(
device_key=DeviceKey(key="number_of_sectors", device_id=None),
name="Number " "of " "sectors",
native_value=4,
),
DeviceKey(key="sector_timer", device_id=None): SensorValue(
device_key=DeviceKey(key="sector_timer", device_id=None),
name="Sector " "Timer",
native_value=3,
),
DeviceKey(key="signal_strength", device_id=None): SensorValue(
device_key=DeviceKey(key="signal_strength", device_id=None),
name="Signal " "Strength",
native_value=-63,
),
DeviceKey(key="sector", device_id=None): SensorValue(
device_key=DeviceKey(key="sector", device_id=None),
name="Sector",
native_value="sector " "1",
),
DeviceKey(key="toothbrush_state", device_id=None): SensorValue(
device_key=DeviceKey(key="toothbrush_state", device_id=None),
name="Toothbrush " "State",
native_value="idle",
),
DeviceKey(key="mode", device_id=None): SensorValue(
device_key=DeviceKey(key="mode", device_id=None),
name="Mode",
native_value="sensitive",
),
DeviceKey(key="pressure", device_id=None): SensorValue(
device_key=DeviceKey(key="pressure", device_id=None),
name="Pressure",
native_value="unknown " "pressure " "32",
),
DeviceKey(key="counter", device_id=None): SensorValue(
device_key=DeviceKey(key="counter", device_id=None),
name="Counter",
native_value=1,
),
},
binary_entity_descriptions={
DeviceKey(key="brushing", device_id=None): BinarySensorDescription(
device_key=DeviceKey(key="brushing", device_id=None), device_class=None
)
},
binary_entity_values={
DeviceKey(key="brushing", device_id=None): BinarySensorValue(
device_key=DeviceKey(key="brushing", device_id=None),
name="Brushing",
native_value=False,
)
},
events={},
)

0 comments on commit cc4d965

Please sign in to comment.