class LinakdeskWorker(BaseWorker): SCAN_TIMEOUT = 20 def _setup(self): from linak_dpg_bt import LinakDesk self.desk = LinakDesk(self.mac) def status_update(self): return [ MqttMessage(topic=self.format_topic('height/cm'), payload=self._get_height()) ] def _get_height(self): with timeout( SCAN_TIMEOUT, exception=TimeoutError( 'Retrieving the height from {} device {} timed out after {} seconds' .format(repr(self), self.mac, SCAN_TIMEOUT))): self.desk.read_dpg_data() return self.desk.current_height_with_offset.cm return -1
class LinakdeskWorker(BaseWorker): SCAN_TIMEOUT = 20 def _setup(self): from linak_dpg_bt import LinakDesk self.desk = LinakDesk(self.mac) _LOGGER.info("Created LinakDesk worker") def status_update(self): return [ MqttMessage(topic=self.format_topic("height/cm"), payload=self._get_height()) ] def _get_height(self): from bluepy import btle with timeout( self.SCAN_TIMEOUT, exception=DeviceTimeoutError( "Retrieving the height from {} device {} timed out after {} seconds" .format(repr(self), self.mac, self.SCAN_TIMEOUT)), ): try: self.desk.read_dpg_data() return self.desk.current_height_with_offset.cm + self.desk_offset_cm except btle.BTLEException as e: logger.log_exception( _LOGGER, "Error during update of linak desk '%s' (%s): %s", repr(self), self.mac, type(e).__name__, suppress=True, ) raise DeviceTimeoutError def on_command(self, topic, value): target_height = float(value) if target_height >= self.min_height_cm and target_height <= self.max_height_cm: _LOGGER.info("Start moving desk to the target height: %.1f", target_height) self.desk.move_to_cm(target_height - self.desk_offset_cm)
class LinakdeskWorker(BaseWorker): def _setup(self): from linak_dpg_bt import LinakDesk self.desk = LinakDesk(self.mac) def status_update(self): return [ MqttMessage(topic=self.format_topic('height/cm'), payload=self._get_height()) ] def _get_height(self): with timeout(20): self.desk.read_dpg_data() return self.desk.current_height_with_offset.cm return -1
class LinakdeskWorker(BaseWorker): SCAN_TIMEOUT = 20 def _setup(self): from linak_dpg_bt import LinakDesk self.desk = LinakDesk(self.mac) def status_update(self): return [ MqttMessage( topic=self.format_topic("height/cm"), payload=self._get_height() ) ] def _get_height(self): from bluepy import btle with timeout( self.SCAN_TIMEOUT, exception=DeviceTimeoutError( "Retrieving the height from {} device {} timed out after {} seconds".format( repr(self), self.mac, self.SCAN_TIMEOUT ) ), ): try: self.desk.read_dpg_data() return self.desk.current_height_with_offset.cm except btle.BTLEException as e: logger.log_exception( _LOGGER, "Error during update of linak desk '%s' (%s): %s", repr(self), self.mac, type(e).__name__, suppress=True, ) raise DeviceTimeoutError
def _setup(self): from linak_dpg_bt import LinakDesk self.desk = LinakDesk(self.mac)
def _setup(self): from linak_dpg_bt import LinakDesk self.desk = LinakDesk(self.mac) _LOGGER.info("Created LinakDesk worker")