From a5f896c248d27f32575705590a2a3cd58a5cd124 Mon Sep 17 00:00:00 2001 From: Arjen Roodselaar Date: Mon, 8 Sep 2014 15:18:53 -0700 Subject: [PATCH 1/2] Unsubscribe from multiple topics, fix messageId variable name --- MQTT.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/MQTT.py b/MQTT.py index ab0f119..5b544b8 100644 --- a/MQTT.py +++ b/MQTT.py @@ -434,7 +434,10 @@ 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 a list of topics. + """ header = bytearray() varHeader = bytearray() payload = bytearray() @@ -442,11 +445,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))) From 1602c943eab69a839eac332e01474862f459a1ce Mon Sep 17 00:00:00 2001 From: Arjen Roodselaar Date: Tue, 9 Sep 2014 10:56:53 -0700 Subject: [PATCH 2/2] Make unsubscribe accept both single and multiple topics --- MQTT.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/MQTT.py b/MQTT.py index 5b544b8..dae5018 100644 --- a/MQTT.py +++ b/MQTT.py @@ -436,8 +436,11 @@ def suback(self, grantedQos, messageId): def unsubscribe(self, topics, messageId=None): """ - Unsubscribe from a list of topics. + Unsubscribe from one or more named topics. """ + if isinstance(topics, basestring): + topics = [topics] + header = bytearray() varHeader = bytearray() payload = bytearray()