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
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")
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")
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)
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")
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
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))
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")
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
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
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: