Пример #1
0
    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")
Пример #2
0
    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")