def get_data(self):
    data = None
    self.__power_management(True)

    try:
      data = func_timeout(self._UPDATE_TIME_OUT, self._get_data)
    except FunctionTimedOut:
      # What ever fails... does not matter, as the data is still None and will raise a terrariumSensorUpdateException and trigger the retry
      logger.error(f'Sensor {self} timed out after {self._UPDATE_TIME_OUT} seconds during updating...')
    except Exception as ex:
      logger.error(f'Sensor {self} has exception: {ex}')

    self.__power_management(False)

    if data is None:
      raise terrariumSensorUpdateException(f'Invalid reading from sensor {self}')

    return data