diff --git a/MQTT.py b/MQTT.py index ab0f119..dae5018 100644 --- a/MQTT.py +++ b/MQTT.py @@ -434,7 +434,13 @@ def suback(self, grantedQos, messageId): self.transport.write(str(varHeader)) self.transport.write(str(payload)) - def unsubscribe(self, topic, messageId=None): + def unsubscribe(self, topics, messageId=None): + """ + Unsubscribe from one or more named topics. + """ + if isinstance(topics, basestring): + topics = [topics] + header = bytearray() varHeader = bytearray() payload = bytearray() @@ -442,11 +448,12 @@ def unsubscribe(self, topic, messageId=None): header.append(0x0A << 4 | 0x01 << 1) if messageId is not None: - varHeader.extend(self._encodeValue(self.messageID)) + varHeader.extend(self._encodeValue(messageId)) else: varHeader.extend(self._encodeValue(random.randint(1, 0xFFFF))) - payload.extend(self._encodeString(topic)) + for topic in topics: + payload.extend(self._encodeString(topic)) header.extend(self._encodeLength(len(payload) + len(varHeader)))