def publisher(self): counter = 0 while True: datagram, address = self.rq.get() logger.debug("Packet received: " + datagram + " from ip: " + str(address)) # parse packet try: packet = Packet() packet.from_json(datagram) except Exception, err: logger.error("could not parse packet: " + str(datagram) + " : " + str(err)) logger.debug(traceback.format_exc()) continue # update address cache if packet.src not in self.cache: self.cache[packet.src] = str(address[0])+":"+str(address[1]) logger.debug('ip address registred: ' + str(packet.src) + " = " + str(address[0])+":"+str(address[1])) # TODO: persist elif(self.cache[packet.src] != str(address[0])+":"+str(address[1])): self.cache[packet.src] = str(address[0])+":"+str(address[1]) # create event based on packet cmd if packet.cmd == "device.update": # create event event = Event("device.update") event.src = self.name event.data = packet.data event.data["sys.id"] = packet.src else: logger.error("unknown command") continue; # logger.debug("publish counter: " + str(counter)) # publish event self.eventbus.publish(event, "adapter")