Skip to content

Commit

Permalink
Merge pull request #49 from sverrham/master
Browse files Browse the repository at this point in the history
Handle disconnect issue
  • Loading branch information
MartyTremblay authored Mar 17, 2021
2 parents cb9ff2f + 47d879c commit ffe540c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 22 deletions.
53 changes: 32 additions & 21 deletions custom_components/airthings_wave/airthings.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import bluepy.btle as btle


from uuid import UUID

_LOGGER = logging.getLogger(__name__)
Expand Down Expand Up @@ -199,9 +198,13 @@ def get_info(self):
if self._dev is not None:
device = AirthingsDeviceInfo(serial_nr=mac)
for characteristic in device_info_characteristics:
char = self._dev.getCharacteristics(uuid=characteristic.uuid)[0]
data = char.read()
setattr(device, characteristic.name, data.decode(characteristic.format))
try:
char = self._dev.getCharacteristics(uuid=characteristic.uuid)[0]
data = char.read()
setattr(device, characteristic.name, data.decode(characteristic.format))
except btle.BTLEDisconnectError:
_LOGGER.exception("Disconnected")
self._dev = None

self.devices[mac] = device
self.disconnect()
Expand All @@ -212,13 +215,17 @@ def get_sensors(self):
for mac in self.airthing_devices:
self.connect(mac)
if self._dev is not None:
characteristics = self._dev.getCharacteristics()
sensor_characteristics = []
for characteristic in characteristics:
_LOGGER.debug(characteristic)
if characteristic.uuid in sensors_characteristics_uuid_str:
sensor_characteristics.append(characteristic)
self.sensors[mac] = sensor_characteristics
try:
characteristics = self._dev.getCharacteristics()
sensor_characteristics = []
for characteristic in characteristics:
_LOGGER.debug(characteristic)
if characteristic.uuid in sensors_characteristics_uuid_str:
sensor_characteristics.append(characteristic)
self.sensors[mac] = sensor_characteristics
except btle.BTLEDisconnectError:
_LOGGER.exception("Disconnected")
self._dev = None
self.disconnect()
return self.sensors

Expand All @@ -228,16 +235,20 @@ def get_sensor_data(self):
for mac, characteristics in self.sensors.items():
self.connect(mac)
if self._dev is not None:
for characteristic in characteristics:
if str(characteristic.uuid) in sensor_decoders:
char = self._dev.getCharacteristics(uuid=characteristic.uuid)[0]
data = char.read()
sensor_data = sensor_decoders[str(characteristic.uuid)].decode_data(data)
_LOGGER.debug("{} Got sensordata {}".format(mac, sensor_data))
if self.sensordata.get(mac) is None:
self.sensordata[mac] = sensor_data
else:
self.sensordata[mac].update(sensor_data)
try:
for characteristic in characteristics:
if str(characteristic.uuid) in sensor_decoders:
char = self._dev.getCharacteristics(uuid=characteristic.uuid)[0]
data = char.read()
sensor_data = sensor_decoders[str(characteristic.uuid)].decode_data(data)
_LOGGER.debug("{} Got sensordata {}".format(mac, sensor_data))
if self.sensordata.get(mac) is None:
self.sensordata[mac] = sensor_data
else:
self.sensordata[mac].update(sensor_data)
except btle.BTLEDisconnectError:
_LOGGER.exception("Disconnected")
self._dev = None
self.disconnect()

return self.sensordata
Expand Down
2 changes: 1 addition & 1 deletion custom_components/airthings_wave/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"domain": "airthings_wave",
"name": "Airthings Wave",
"version": "3.0",
"version": "3.0.1",
"documentation": "https://github.com/custom-components/sensor.airthings_wave/",
"issue_tracker": "https://github.com/custom-components/sensor.airthings_wave/issues",
"dependencies": [],
Expand Down

0 comments on commit ffe540c

Please sign in to comment.