Example #1
0
def standard():
    print("STANDARD PHASE STARTED")
    global isRegistered
    global slot
    data_sum=""
    for idDest in isRegistered:
        print(idDest)
        print('DataReq,'+str(4)+','+str(frequency)+','+str(slot)+','+str(id)+','+str(idDest)+','+str(-1)+','+str(slot*3))
        s.send('DataReq,'+str(4)+','+str(frequency)+','+str(slot)+','+str(id)+','+str(idDest)+','+str(-1)+','+str(slot*3))

        dataHarvested = s.recv(128)
        msgH =messageLoRa()
        msgH.fillMessage(dataHarvested)
        rnd=Random()
        print("[FIRST Send] for "+str(idDest)+" Request data in "+str(rnd))
        print(dataHarvested)
        time.sleep(rnd)
        while msgH.id_src != str(idDest) or msgH.id_dest != str(id) or msgH.kind != "5" or msgH.messageName != "DataRes":
            rnd=Random()
            print("[Try] for "+str(idDest)+" send Request data in "+str(rnd))
            time.sleep(rnd)
            s.send('DataReq,'+str(4)+','+str(frequency)+','+str(slot)+','+str(id)+','+str(idDest)+','+str(-1)+','+str(slot*3))
            dataHarvested = s.recv(128)
            msgH =messageLoRa()
            msgH.fillMessage(dataHarvested)
            print("msg data =========>"+dataHarvested.decode())
        data_sum=data_sum+str(idDest)+","+str(msgH.data)+":"
    print("STANDARD PHASE ENDED")
    return data_sum
Example #2
0
def standard():
    print("STANDARD PHASE STARTED")
    global isRegistered
    global slot
    for idDest in isRegistered:
        print(idDest)
        print('DataReq,' + str(4) + ',' + str(frequency) + ',' + str(slot) +
              ',' + str(id) + ',' + str(idDest) + ',' + str(-1) + ',' +
              str(slot))
        s.send('DataReq,' + str(4) + ',' + str(frequency) + ',' + str(slot) +
               ',' + str(id) + ',' + str(idDest) + ',' + str(-1) + ',' +
               str(slot))

        dataHarvested = s.recv(128)
        msgH = messageLoRa()
        msgH.fillMessage(dataHarvested)
        rnd = Random()
        print("[FIRST Send] Request data in " + str(rnd))
        print(dataHarvested)
        time.sleep(rnd)
        while msgH.id_src != idDest and msgH.id_dest != id and msgH.kind != "5":
            rnd = Random()
            print("[Try] send Request data in " + str(rnd))
            time.sleep(rnd)
            s.send('DataReq,' + str(4) + ',' + str(frequency) + ',' +
                   str(slot) + ',' + str(id) + ',' + str(idDest) + ',' +
                   str(-1) + ',' + str(slot))
            dataHarvested = s.recv(128)
            msgH = messageLoRa()
            msgH.fillMessage(dataHarvested)
    print("STANDARD PHASE ENDED")
Example #3
0
def notDiscovered():
    global tryDiscover
    global discovered
    global myLoRa
    global id
    global frequency
    global slot
    print("PHASE NOT DISCOVERED STARTED " + str(tryDiscover))
    s.send('Discover,' + str(1) + ',' + str(frequency) + ',' + str(slot) +
           ',' + str(id) + ',' + str(-1) + ',' + str(-1) + ',' + str(-1))
    print("Discover sent by " + str(id))
    data = s.recv(128)
    msg = messageLoRa()
    msg.fillMessage(data)
    print("dest ===" + str(msg.get_dest()))
    if msg.messageName == "Accept" and msg.id_dest == str(id):
        myLoRa = msg.id_src
        frequency = msg.frequency
        change_frequency(msg.frequency)
        print("Receive ACCEPT msg")
        discovered = True
    else:
        time.sleep(1)
    tryDiscover += 1
    print("PHASE NOT DISCOVERED ENDED\n")
Example #4
0
def handle_message(data):
    msg = messageLoRa()
    msg.fillMessage(data)
    if msg.kind == "1":
        pairing_phase(msg)
    #else:
    #print("not kind 1")
    if msg.kind == "3" and msg.id_dest == str(id):
        registering_phase(msg)
Example #5
0
def handle_message(data):
    msg =messageLoRa()
    msg.fillMessage(data)
    if msg.kind == "1":
        pairing_phase(msg)
    if msg.kind == "3" and msg.id_dest == str(id):
        registering_phase(msg)
    if msg.kind == "3" and msg.id_dest != str(id):
        if msg.id_src in idRegistered:
            idRegistered.remove(msg.id_src)
            print("Delete ID:"+str(msg.id_src)+"from the table idRegistered")
Example #6
0
	def notRegistered(self):
	    #send some data
	    #print("PHASE NOT REGISTERED STARTED\n")
	    self.sock.send('Register,'+str(3)+','+str(self.frequency)+','+str(self.slot)+','+str(self.id)+','+str(self.myLoRa)+','+str(-1)+','+str(-1))
	    print("Register sent")
	    # get any data received...
	    data=self.sock.recv(128)
	    msg =messageLoRa()
	    msg.fillMessage(data)
	    if msg.messageName == "DataReq" and msg.id_src== self.myLoRa and msg.id_dest == str(self.id):
	        self.registered=True
	    else:
	        self.tryRegister+=1
Example #7
0
 def start(self):
     #ecrire le maion
     global isListening
     while True:
         if isListening:
             #print("I am awake : my LoRaGW is "+str(myLoRa)+" and my slot is "+str(slot))
             pycom.rgbled(0x007f00)  # green
             try:  #We are not discovered yet
                 while not self.discovered:
                     self.notDiscovered()
                     rnd = self.Random()
                     print("Try Discover in " + str(rnd))
                     time.sleep(rnd)
                 while not self.registered and self.discovered:
                     self.notRegistered()
                     rnd = self.Random()
                     print("Try Register in " + str(rnd))
                     time.sleep(rnd)
                 dataR = self.sock.recv(128)
                 msg = messageLoRa()
                 msg.fillMessage(dataR)
                 if msg.kind == "4" and msg.id_dest == str(self.id):
                     self.sendData()
                     print("I sent my data")
                     print("I try to change my slot and listening time")
                     self.slot = float(msg.slots)
                     self.listeningTime = float(
                         msg.listeningtime)  #slot d'une duree de 40 seconde
                     isListening = False
                     #if self.clock = None :
                     #	del self.clock
                     self.clock = TimerL(self.slot, 1)
                     toto = False
             except OSError as err:
                 print("OS error: {0}".format(err))
             #except err:
             #   print("EAGAIN error: {0}".format(err))
         else:
             pycom.rgbled(0x7f0000)  #red
             try:
                 print("my slot is :" + str(self.slot))
                 print("I am sleeping")
                 time.sleep(self.slot)
                 del self.clock
                 self.clock = TimerL(self.listeningTime, 2)
                 isListening = True
             except OSError as err:
                 print("OS error: {0}".format(err))
             except err:
                 print("EAGAIN error: {0}".format(err))
Example #8
0
	def handle_message(self,data):
	    msg =messageLoRa()
	    msg.fillMessage(data)
	    print(data)
	    #time.sleep(5)
	    if msg.kind == "1":
	        self.pairing_phase(msg)
	    else:
	        print(msg.kind )
	    if msg.kind == "3" and msg.id_dest == str(self.id):
	        self.registering_phase(msg)
	    if msg.kind == "3" and msg.id_dest != str(self.id):
	        if msg.id_src in idRegistered:
	            self.idRegistered.remove(msg.id_src)
	            print("Delete ID:"+str(msg.id_src)+"from the table idRegistered")
Example #9
0
def notRegistered():
    #send some data
    global tryRegister
    global registered
    global myLoRa
    #print("PHASE NOT REGISTERED STARTED\n")
    s.send('Register,'+str(3)+','+str(frequency)+','+str(slot)+','+str(id)+','+str(myLoRa)+','+str(-1)+','+str(-1))
    print("Register sent")
    # get any data received...
    data=s.recv(128)
    msg =messageLoRa()
    msg.fillMessage(data)
    if msg.messageName == "DataReq" and msg.id_src== myLoRa and msg.id_dest == str(id):
        registered=True
    else:
        tryRegister+=1
Example #10
0
	def notDiscovered(self):
	    #print("PHASE NOT DISCOVERED STARTED "+str(tryDiscover))
	    self.sock.send('Discover,'+str(1)+','+str(self.frequency)+','+str(self.slot)+','+str(self.id)+','+str(-1)+','+str(-1)+','+str(-1))
	    print("Discover sent by "+str(self.id))
	    data=self.sock.recv(128)
	    msg =messageLoRa()
	    msg.fillMessage(data)
	    #print("dest ==="+str(msg.get_dest()))
	    if msg.messageName == "Accept" and msg.id_dest == str(self.id):
	        self.myLoRa=msg.id_src
	        self.frequency=msg.frequency
	        self.change_frequency(msg.frequency)
	        print("Receive ACCEPT msg")
	        self.discovered=True
	    else:
	        time.sleep(1)
	    self.tryDiscover+=1
Example #11
0
 if isListening:
     #print("I am awake : my LoRaGW is "+str(myLoRa)+" and my slot is "+str(slot))
     pycom.rgbled(0x007f00)  # green
     try:  #We are not discovered yet
         while not discovered:
             notDiscovered()
             rnd = Random()
             print("Try Discover in " + str(rnd))
             time.sleep(rnd)
         while not registered and discovered:
             notRegistered()
             rnd = Random()
             print("Try Register in " + str(rnd))
             time.sleep(rnd)
         dataR = s.recv(128)
         msg = messageLoRa()
         msg.fillMessage(dataR)
         if msg.kind == "4" and msg.id_dest == str(id):
             sendData()
             print("I sent my data")
             print("I try to change my slot and listening time")
             slot = float(msg.slots)
             listeningTime = float(
                 msg.listeningtime)  #slot d'une duree de 40 seconde
             isListening = False
             del clock
             clock = TimerL(slot, 1)
             toto = False
     except OSError as err:
         print("OS error: {0}".format(err))
     except EAGAIN as err: