code: def add_resource_subscription(self, device_id, resource_path, fix_path=True, queue_size=5):
          
          # When path starts with / we remove the slash, as the API can't handle //.
          # Keep the original path around however, as we use that for queue registration.
          fixed_path = resource_path
          if fix_path and resource_path.startswith("/"):
              fixed_path = resource_path[1:]
  
          # Create the queue and register it with the dict holding all queues
          q = queue.Queue(queue_size) if queue_size > 0 else None
  
          # FIXME: explicit behaviour on replacing an existing queue
          self._queues[device_id][resource_path] = q
  
          # Send subscription request
          self._add_subscription(device_id, fixed_path)
  
          # Return the Queue object to the user
          return q
docs: Subscribe to resource updates.
  
          When called on a valid device and resource path a subscription is setup so that
          any update on the resource path value triggers a new element on the FIFO queue.
          The returned object is a native Python Queue object.
  
          :param device_id: Name of device to subscribe on (Required)
          :param resource_path: The resource path on device to observe (Required)
          :param fix_path: Removes leading / on resource_path if found
          :param queue_size: Sets the Queue size. If set to 0, no queue object will be created
          :returns: a queue of resource updates
          :rtype: Queue