diff --git a/MQTT.py b/MQTT.py index ab0f119..88ac1ff 100644 --- a/MQTT.py +++ b/MQTT.py @@ -391,10 +391,10 @@ def pubcomp(self, messageId): self.transport.write(str(header)) self.transport.write(str(varHeader)) - def subscribe(self, topic, requestedQoS=0, messageId=None): + def subscribe(self, topics, messageId=None): """ - Only supports QoS = 0 subscribes - Only supports one subscription per message + Subscribe to the given topics. Topics is expected to be a list + of (topic, qos) tuples. """ header = bytearray() varHeader = bytearray() @@ -408,8 +408,9 @@ def subscribe(self, topic, requestedQoS=0, messageId=None): else: varHeader.extend(self._encodeValue(messageId)) - payload.extend(self._encodeString(topic)) - payload.append(requestedQoS) + for topic, qos in topics: + payload.extend(self._encodeString(topic)) + payload.append(qos) header.extend(self._encodeLength(len(varHeader) + len(payload)))