def subscribe(self, topic, qos=2): self.suback_flag = False self.sub_topicid = "" self.sub_msgid = "" self.sub_rc = "" subscribe = MQTTSN.Subscribes() subscribe.MsgId = self.__nextMsgid() if type(topic) is str: #print("topic is string ",topic) subscribe.TopicName = topic if len(topic) > 2: subscribe.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL else: subscribe.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME else: subscribe.TopicId = topic # should be int subscribe.Flags.TopicIdType = MQTTSN.TOPIC_PREDEFINED subscribe.Flags.QoS = qos self.sock.send(subscribe.pack().encode()) self.lookfor(MQTTSN.SUBACK) msg = self.waitfor(MQTTSN.SUBACK, subscribe.MsgId) if msg != None: if subscribe.MsgId == msg.MsgId: print("received suback for msgid", msg.MsgId) print("topicid= ", msg.TopicId) return msg.ReturnCode, msg.TopicId else: raise SystemExit("Subscription failed quitting") return (None, None) else: return (None, None)
def subscribe(self, topic, qos=2): subscribe = MQTTSN.Subscribes() subscribe.MsgId = self.__nextMsgid() if type(topic) == types.StringType: subscribe.TopicName = topic if len(topic) > 2: subscribe.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL else: subscribe.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME else: subscribe.TopicId = topic # should be int subscribe.Flags.TopicIdType = MQTTSN.TOPIC_PREDEFINED subscribe.Flags.QoS = qos if self.__receiver: self.__receiver.lookfor(MQTTSN.SUBACK) self.sock.send(subscribe.pack()) msg = self.waitfor(MQTTSN.SUBACK, subscribe.MsgId) return msg.ReturnCode, msg.TopicId
def subscribe(self, topic, qos=1): subscribe = MQTTSN.Subscribes() subscribe.MsgId = self.__nextMsgid() if isinstance(topic, str): subscribe.TopicName = topic if len(topic) > 2: subscribe.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL else: subscribe.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME else: subscribe.TopicId = topic # should be int subscribe.Flags.TopicIdType = MQTTSN.TOPIC_PREDEFINED subscribe.Flags.QoS = qos if self.__receiver: self.__receiver.lookfor(MQTTSN.SUBACK) self.sock.send(subscribe.pack()) msg = self.waitfor(MQTTSN.SUBACK, subscribe.MsgId) #print('Id_de_topico =',msg.TopicId) #print('Topico =',topic) self.topicmap.register(msg.TopicId, topic) return msg.ReturnCode, msg.TopicId