def serveTalkTo(self, qs): if not self.getLevel() > 1: self.setSession(qs) self.send_response(200) self.sendDefaultHeaders() self.end_headers() self.writeChunk("accessDenied") elif "single" in qs: # listen to a single mote and return motePortName = utils.urlUnescape(qs["single"][0]) print("motePortName = " + motePortName) mote = motes.getMote(motePortName) if mote is None: self.setSession(qs) self.send_response(200) self.sendDefaultHeaders() self.end_headers() try: urllib2.urlopen(motePortName.split('@')[1]) except URLError: self.writeChunk("hostUnreachable") return self.writeChunk("noMotesSelected") return # do not set session info self.send_response(200) self.sendDefaultHeaders() self.end_headers() if "data" in qs: if mote.isLocal(): mote.writeData(qs["data"][0]) self.writeChunk("OK") else: (portname, host) = motePortName.split('@') if os.name == "posix" and not os.path.isabs(portname): fullPortName = "/dev/" + portname else: fullPortName = portname if host.find("://") == -1: host = "http://" + host url = host + "/write?port=" + fullPortName try: req = urllib2.urlopen(url, qs["data"][0]) output = req.read() self.writeChunk(output) except Exception as e: self.writeChunk("hostUnreachable")
def serveListenSingle(self, qs): if not self.getLevel() > 1: self.setSession(qs) self.send_response(200) self.sendDefaultHeaders() self.end_headers() self.writeChunk("accessDenied") elif "single" in qs: # listen to a single mote and return motePortName = utils.urlUnescape(qs["single"][0]) print("motePortName = " + motePortName) mote = motes.getMote(motePortName) if mote is None: self.setSession(qs) self.send_response(200) self.sendDefaultHeaders() self.end_headers() try: urllib2.urlopen(motePortName.split('@')[1]) except URLError: self.writeChunk("hostUnreachable") return self.writeChunk("noMotesSelected") return if "max_data" in qs: max_data = qs["max_data"][0] else: max_data = "100" # do not set session info self.send_response(200) self.sendDefaultHeaders() # auto refresh self.send_header('Refresh', '1') self.end_headers() if mote.isLocal(): # Prepare serial port for the first time if "startListen" in qs and qs["startListen"][0] == '1': ht.closeAllSerial() mote.openSerial() ht.openMoteSerial(mote) # Listen for data output = "" for line in sensor_data.moteData.listenTxt: output += line + "\n" self.writeChunk("buffer:" + output) else: # Example URL: "http://*****:*****@') if os.name == "posix" and not os.path.isabs(portname): fullPortName = "/dev/" + portname else: fullPortName = portname if host.find("://") == -1: host = "http://" + host url = host + "/read?max_data=" + max_data + "&port=" + fullPortName + "&clean=1" try: req = urllib2.urlopen(url) output = req.read() self.writeChunk(output) except Exception as e: self.writeChunk("hostUnreachable")