docs: def update(self, config, force_cache=False, **kwargs):
          """Update camera info."""
          # force = kwargs.pop('force', False)
          self.name = config['name']
          self.camera_id = str(config['id'])
          self.network_id = str(config['network_id'])
          self.serial = config['serial']
          self.motion_enabled = config['enabled']
          self.battery_voltage = config['battery_voltage']
          self.battery_state = config['battery_state']
          self.temperature = config['temperature']
          self.wifi_strength = config['wifi_strength']
  
          # Retrieve calibrated temperature from special endpoint
          resp = api.request_camera_sensors(self.sync.blink,
                                            self.network_id,
                                            self.camera_id)
          try:
              self.temperature_calibrated = resp['temp']
          except KeyError:
              self.temperature_calibrated = self.temperature
              _LOGGER.warning("Could not retrieve calibrated temperature.")
  
          # Check if thumbnail exists in config, if not try to
          # get it from the homescreen info in teh sync module
          # otherwise set it to None and log an error
          new_thumbnail = None
          if config['thumbnail']:
              thumb_addr = config['thumbnail']
          else:
              thumb_addr = self.get_thumb_from_homescreen()
  
          if thumb_addr is not None:
              new_thumbnail = "{}{}.jpg".format(self.sync.urls.base_url,
                                                thumb_addr)
  
          try:
              self.motion_detected = self.sync.motion[self.name]
          except KeyError:
              self.motion_detected = False
  
          clip_addr = None
          if self.name in self.sync.last_record:
              clip_addr = self.sync.last_record[self.name]['clip']
              self.last_record = self.sync.last_record[self.name]['time']
              self.clip = "{}{}".format(self.sync.urls.base_url,
                                        clip_addr)
  
          # If the thumbnail or clip have changed, update the cache
          update_cached_image = False
          if new_thumbnail != self.thumbnail or self._cached_image is None:
              update_cached_image = True
          self.thumbnail = new_thumbnail
  
          update_cached_video = False
          if self._cached_video is None or self.motion_detected:
              update_cached_video = True
  
          if new_thumbnail is not None and (update_cached_image or force_cache):
              self._cached_image = api.http_get(self.sync.blink,
                                                url=self.thumbnail,
                                                stream=True,
                                                json=False)
          if clip_addr is not None and (update_cached_video or force_cache):
              self._cached_video = api.http_get(self.sync.blink,
                                                url=self.clip,
                                                stream=True,
                                                json=False)