예제 #1
0
def publish(topic, payload, retained=False, port=1883, host="localhost"):
  publish = MQTTSN.Publishes()
  publish.Flags.QoS = 3
  publish.Flags.Retain = retained
  if isinstance(payload, str):
    pass
  elif isinstance(payload, bytes):
    payload = payload.decode()
  if isinstance(topic, str):
    if len(topic) > 2:
      publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
      publish.TopicId = len(topic)
      payload = topic + payload
    else:
      publish.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME
      publish.TopicName = topic
  else:
    publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
    publish.TopicId = topic
  publish.MsgId = 0
  #print("payload", payload)
  publish.Data = payload
  sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  sock.sendto(publish.pack(), (host, port))
  sock.close()
  return
예제 #2
0
    def publish(self, topic, payload, qos=0, retained=False):
        publish = MQTTSN.Publishes()
        publish.Flags.QoS = qos
        publish.Flags.Retain = retained
        self.puback_flag = False  #reset flag
        if type(topic) == str and len(topic) > 2:
            print("invalid topic")
            return None
        if qos in [-1, 0]:  #qos 0 or -1
            publish.MsgId = 0
        else:
            publish.MsgId = self.__nextMsgid()
            print("MsgId=", publish.MsgId)
        if type(topic) == int:
            publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
            publish.TopicId = topic

        if type(topic) == str and len(topic) <= 2:
            publish.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME
            publish.TopicId = topic
            #########

        publish.Data = payload
        a = publish.pack()
        self.sock.send(a.encode())
        self.__receiver.outMsgs[publish.MsgId] = publish
        #self.lookfor(MQTTSN.PUBACK)
        #return(self.waitfor(MQTTSN.PUBACK))
        return publish.MsgId
예제 #3
0
 def publish(self, topic, payload, qos=1, retained=False):
     if isinstance(payload, str) or isinstance(payload, bytes):
         pass
     else:
         raise TypeError('Payload must be str or bytes.')
     publish = MQTTSN.Publishes()
     publish.Flags.QoS = qos
     publish.Flags.Retain = retained
     if isinstance(topic, str):
         publish.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME
         publish.TopicName = topic
     else:
         publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
         publish.TopicId = topic
         #print('Topico =', topic)
         #print('Id_de_topico =', msg.TopicId)
     if qos in [-1, 0]:
         publish.MsgId = 0
     else:
         publish.MsgId = self.__nextMsgid()
         #print("MsgId", publish.MsgId)
         self.__receiver.outMsgs[publish.MsgId] = publish
     publish.Data = payload
     self.sock.send(publish.pack())
     return publish.MsgId
예제 #4
0
 def publish(self, topic, payload, qos=0, retained=False):
   publish = MQTTSN.Publishes()
   publish.Flags.QoS = qos
   publish.Flags.Retain = retained
   if type(topic) == types.StringType:
     publish.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME
     publish.TopicName = topic
   else:
     publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
     publish.TopicId = topic
   if qos in [-1, 0]:
     publish.MsgId = 0
   else:
     publish.MsgId = self.__nextMsgid()
     print "MsgId", publish.MsgId
     self.__receiver.outMsgs[publish.MsgId] = publish
   publish.Data = payload
   self.sock.send(publish.pack())
   return publish.MsgId
예제 #5
0
def publish(topic, payload, retained=False, port=1883, host="localhost"):
    publish = MQTTSN.Publishes()
    publish.Flags.QoS = 3
    publish.Flags.Retain = retained
    if type(topic) == bytes:
        if len(topic) > 2:
            publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
            publish.TopicId = len(topic)
            payload = topic + payload
        else:
            publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
            publish.TopicName = topic
    if type(topic) == str and len(topic) <= 2:
        publish.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME
        publish.TopicId = topic
    publish.MsgId = 0
    publish.Data = payload
    a = publish.pack()
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.sendto(a.encode(), (host, port))
    sock.close()
    return
예제 #6
0
def publish(topic, payload, retained=False, port=1884, host="192.168.137.150"):
    publish = MQTTSN.Publishes()
    publish.Flags.QoS = 3
    publish.Flags.Retain = retained
    if type(topic) == types.StringType:
        if len(topic) > 2:
            publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
            publish.TopicId = len(topic)
            payload = topic + payload
        else:
            publish.Flags.TopicIdType = MQTTSN.TOPIC_SHORTNAME
            publish.TopicName = topic
    else:
        publish.Flags.TopicIdType = MQTTSN.TOPIC_NORMAL
        publish.TopicId = topic
    publish.MsgId = 0
    print "payload", payload
    publish.Data = payload
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.sendto(publish.pack(), (host, port))
    sock.close()
    return