|
1 |
| -"""Parser for Oras BLE advertisements.""" |
| 1 | +"""Parser for Oras/Garnet BLE advertisements.""" |
2 | 2 | import logging
|
3 | 3 |
|
4 | 4 | from .helpers import to_mac, to_unformatted_mac
|
|
7 | 7 |
|
8 | 8 |
|
9 | 9 | def parse_oras(self, data: bytes, mac: str):
|
10 |
| - """Parser for Oras toothbrush.""" |
| 10 | + """Parser for Oras toothbrush or Garnet tank.""" |
11 | 11 | msg_length = len(data)
|
12 |
| - firmware = "Oras" |
13 |
| - result = {"firmware": firmware} |
14 |
| - if msg_length == 22: |
| 12 | + result = {"mac": to_unformatted_mac(mac)} |
| 13 | + |
| 14 | + if msg_length == 18: |
| 15 | + firmware = "Garnet" |
| 16 | + device_type = "Garnet 709BT" |
| 17 | + |
| 18 | + sensor_id = data[7] |
| 19 | + sensor_data = data[8:11].decode("ASCII") |
| 20 | + sensor_volume = data[11:14].decode("ASCII") |
| 21 | + sensor_total = data[14:17].decode("ASCII") |
| 22 | + sensor_alarm = chr(data[17]) |
| 23 | + |
| 24 | + # remove later |
| 25 | + result.update({ |
| 26 | + "sensor_id": sensor_id, |
| 27 | + "sensor_data": sensor_data, |
| 28 | + "sensor_volume": sensor_volume, |
| 29 | + "sensor_total": sensor_total, |
| 30 | + "sensor_alarm": sensor_alarm, |
| 31 | + }) |
| 32 | + _LOGGER.info( |
| 33 | + "BLE ADV from Oras DEVICE: %s, result: %s", |
| 34 | + device_type, |
| 35 | + result |
| 36 | + ) |
| 37 | + if sensor_id == 13: |
| 38 | + result.update({"voltage": int(sensor_data) / 10}) |
| 39 | + elif msg_length == 22: |
| 40 | + firmware = "Oras" |
15 | 41 | device_type = "Electra Washbasin Faucet"
|
16 | 42 | battery = data[5]
|
17 | 43 | result.update({"battery": battery})
|
18 | 44 | else:
|
19 |
| - if self.report_unknown == "Oras": |
| 45 | + if self.report_unknown in ["Oras", "Garnet"]: |
20 | 46 | _LOGGER.info(
|
21 |
| - "BLE ADV from UNKNOWN Oras DEVICE: MAC: %s, ADV: %s", |
| 47 | + "BLE ADV from UNKNOWN Oras/Garnet DEVICE: MAC: %s, ADV: %s", |
22 | 48 | to_mac(mac),
|
23 | 49 | data.hex()
|
24 | 50 | )
|
25 | 51 | return None
|
26 | 52 |
|
27 | 53 | result.update({
|
28 |
| - "mac": to_unformatted_mac(mac), |
29 | 54 | "type": device_type,
|
30 | 55 | "packet": "no packet id",
|
31 | 56 | "firmware": firmware,
|
|
0 commit comments