code: def parameter_value(self, parameter, read_cached=True):
          
          # Special handling for battery attribute
          if parameter == MI_BATTERY:
              return self.battery_level()
  
          # Use the lock to make sure the cache isn't updated multiple times
          with self.lock:
              if (read_cached is False) or \
                      (self._last_read is None) or \
                      (datetime.now() - self._cache_timeout > self._last_read):
                  self.fill_cache()
              else:
                  _LOGGER.debug("Using cache (%s < %s)",
                                datetime.now() - self._last_read,
                                self._cache_timeout)
  
          if self.cache_available() and (len(self._cache) == 16):
              return self._parse_data()[parameter]
          else:
              raise BluetoothBackendException("Could not read data from Mi Flora sensor %s" % self._mac)
docs: Return a value of one of the monitored paramaters.
  
          This method will try to retrieve the data from cache and only
          request it by bluetooth if no cached value is stored or the cache is
          expired.
          This behaviour can be overwritten by the "read_cached" parameter.