Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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