Skip to content

Commit

Permalink
feat: init repo with sample data
Browse files Browse the repository at this point in the history
  • Loading branch information
bdraco committed Jan 24, 2023
1 parent 731d5ad commit 9b8e45c
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions src/mopeka_iot_ble/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,13 @@ class MopekaDevice:


DEVICE_TYPES = {
0x3: MopekaDevice("M1015", "Bottom up propane", 10),
0x3: MopekaDevice("", "Bottom up propane", 10),
0x4: MopekaDevice("", "Top down air space", 10),
0x5: MopekaDevice("", "Bottom up water", 10),
0x8: MopekaDevice("M1015", "Pro+", 10),
}

SUPPORTED_DEVICE_TYPES = {0x3}
SUPPORTED_DEVICE_TYPES = {0x3, 0x8}


def hex(data: bytes) -> str:
Expand All @@ -59,7 +60,7 @@ def battery_to_voltage(battery: int) -> float:

def battery_to_percentage(battery: int) -> float:
"""Convert battery value to percentage."""
return round(min(0, max(100, (((battery / 32.0) - 2.2) / 0.65) * 100)), 1)
return round(max(0, min(100, (((battery / 32.0) - 2.2) / 0.65) * 100)), 1)


def temp_to_celsius(temp: int) -> int:
Expand Down Expand Up @@ -97,10 +98,12 @@ def _start_update(self, service_info: BluetoothServiceInfo) -> None:
MOPEKA_MANUFACTURER not in manufacturer_data
or MOKPEKA_PRO_SERVICE_UUID not in service_uuids
):
_LOGGER.debug("Not a Mopeka IOT BLE advertisement: %s", service_info)
return
data = manufacturer_data[MOPEKA_MANUFACTURER]
model_num = data[0]
if not (device_type := DEVICE_TYPES.get(model_num)):
_LOGGER.debug("Unsupported Mopeka IOT BLE advertisement: %s", service_info)
return
adv_length = device_type.adv_length
if len(data) != adv_length:
Expand All @@ -126,7 +129,10 @@ def _start_update(self, service_info: BluetoothServiceInfo) -> None:
SensorLibrary.BATTERY__PERCENTAGE, battery_percentage
)
self.update_predefined_sensor(
SensorLibrary.VOLTAGE__ELECTRIC_POTENTIAL_VOLT, battery_voltage
SensorLibrary.VOLTAGE__ELECTRIC_POTENTIAL_VOLT,
battery_voltage,
name="Battery Voltage",
key="battery_voltage",
)
self.update_predefined_binary_sensor(
BinarySensorDeviceClass.OCCUPANCY, button_pressed
Expand Down Expand Up @@ -155,7 +161,7 @@ def _start_update(self, service_info: BluetoothServiceInfo) -> None:
self.update_sensor(
"reading_quality",
None,
reading_quality,
reading_quality * "⭐",
None,
"Reading quality",
)

0 comments on commit 9b8e45c

Please sign in to comment.