예제 #1
0
파일: plugin.py 프로젝트: popazerty/e2-dmm
def callFunction(iface):
	w = Wlan(iface)
	i = w.getWirelessInterfaces()
	if i:
		if iface in i:
			return WlanStatusScreenMain
	return None
예제 #2
0
def callFunction(iface):
    w = Wlan(iface)
    i = w.getWirelessInterfaces()
    if i:
        if iface in i:
            return WlanStatusScreenMain
    return None
예제 #3
0
    def getAccessPoints(self, refresh=False):
        self.APList = []
        self.cleanList = []
        self.w = Wlan(self.iface)
        aps = self.w.getNetworkList()
        if aps is not None:
            print "[WirelessLan.py] got Accespoints!"
            tmpList = []
            compList = []
            for ap in aps:
                a = aps[ap]
                if a['active']:
                    tmpList.append((a['essid'], a['bssid']))
                    compList.append((a['essid'], a['bssid'], a['encrypted'],
                                     a['iface'], a['maxrate'], a['signal']))

            for entry in tmpList:
                if entry[0] == "":
                    for compentry in compList:
                        if compentry[1] == entry[1]:
                            compList.remove(compentry)
            for entry in compList:
                self.cleanList.append((entry[0], entry[1], entry[2], entry[3],
                                       entry[4], entry[5]))
                if not self.oldlist.has_key(entry[0]):
                    self.oldlist[entry[0]] = {'data': entry}
                else:
                    self.oldlist[entry[0]]['data'] = entry

        if "hidden..." not in self.cleanList:
            self.cleanList.append(
                (_("enter hidden network SSID"), "hidden...", True, self.iface,
                 _("unavailable"), ""))

        for entry in self.cleanList:
            self.APList.append(
                self.buildEntryComponent(entry[0], entry[1], entry[2],
                                         entry[3], entry[4], entry[5]))

        if refresh is False:
            self['list'].setList(self.APList)
        self.listLength = len(self.APList)
        self.setInfo()
        self.rescanTimer.start(5000)
        return self.cleanList
예제 #4
0
파일: plugin.py 프로젝트: popazerty/e2-dmm
	def getAccessPoints(self, refresh = False):
		self.APList = []
		self.cleanList = []
		self.w = Wlan(self.iface)
		aps = self.w.getNetworkList()
		if aps is not None:
			print "[WirelessLan.py] got Accespoints!"
			tmpList = []
			compList = []
			for ap in aps:
				a = aps[ap]
				if a['active']:
					tmpList.append( (a['essid'], a['bssid']) )
					compList.append( (a['essid'], a['bssid'], a['encrypted'], a['iface'], a['maxrate'], a['signal']) )

			for entry in tmpList:
				if entry[0] == "":
					for compentry in compList:
						if compentry[1] == entry[1]:
							compList.remove(compentry)
			for entry in compList:
				self.cleanList.append( ( entry[0], entry[1], entry[2], entry[3], entry[4], entry[5] ) )
				if not self.oldlist.has_key(entry[0]):
					self.oldlist[entry[0]] = { 'data': entry }
				else:
					self.oldlist[entry[0]]['data'] = entry
		
		if "hidden..." not in self.cleanList:
			self.cleanList.append( ( _("enter hidden network SSID"), "hidden...", True, self.iface, _("unavailable"), "" ) )

		for entry in self.cleanList:
			self.APList.append(self.buildEntryComponent( entry[0], entry[1], entry[2], entry[3], entry[4], entry[5] ))
		
		if refresh is False:
			self['list'].setList(self.APList)
		self.listLength = len(self.APList)
		self.setInfo()
		self.rescanTimer.start(5000)
		return self.cleanList
예제 #5
0
import pycom
import ujson
import socket
from network import LoRa

from TextSensorDataParser import TextSensorDataParser
from Wlan import Wlan
from ApiDataSender import ApiDataSender
import config

pycom.heartbeat(False)
parser = TextSensorDataParser(config.sensor_mapping)
api_data_sender = ApiDataSender(config.endpoint)
print("Connecting to Wifi")
wlan = Wlan(config.wifi['user'], config.wifi['password'])
wlan.connect()
lora = LoRa(mode=LoRa.LORA, frequency=config.lora_frequency, tx_power=14)
lora_socket = socket.socket(socket.AF_LORA, socket.SOCK_RAW)
lora_socket.setblocking(False)

print('Program started, listening on LoRa frequency {0}'.format(
    config.lora_frequency))
buffer = ''

while True:
    incomming = lora_socket.recv(5)
    if incomming == None:
        continue
    buffer += incomming.decode('utf-8')
    if not parser.is_buffer_parsable(buffer):
        continue
예제 #6
0
파일: plugin.py 프로젝트: popazerty/e2-dmm
class WlanScan(Screen):
	skin = """
		<screen name="WlanScan" position="center,center" size="560,400" title="Choose a Wireless Network" >
			<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
			<widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
			<widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
			<widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
			<widget source="list" render="Listbox" position="5,40" size="550,300" scrollbarMode="showOnDemand">
				<convert type="TemplatedMultiContent">
					{"template": [
							MultiContentEntryText(pos = (0, 0), size = (550, 30), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the essid
							MultiContentEntryText(pos = (0, 30), size = (175, 20), font=1, flags = RT_HALIGN_LEFT, text = 5), # index 5 is the interface
							MultiContentEntryText(pos = (175, 30), size = (175, 20), font=1, flags = RT_HALIGN_LEFT, text = 4), # index 0 is the encryption
							MultiContentEntryText(pos = (350, 0), size = (200, 20), font=1, flags = RT_HALIGN_LEFT, text = 2), # index 0 is the signal
							MultiContentEntryText(pos = (350, 30), size = (200, 20), font=1, flags = RT_HALIGN_LEFT, text = 3), # index 0 is the maxrate
							MultiContentEntryPixmapAlphaTest(pos = (0, 52), size = (550, 2), png = 6), # index 6 is the div pixmap
						],
					"fonts": [gFont("Regular", 28),gFont("Regular", 18)],
					"itemHeight": 54
					}
				</convert>
			</widget>
			<ePixmap pixmap="skin_default/div-h.png" position="0,340" zPosition="1" size="560,2" />		
			<widget source="info" render="Label" position="0,350" size="560,50" font="Regular;24" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
		</screen>"""

	def __init__(self, session, iface):
		Screen.__init__(self, session)
		self.session = session
		self.iface = iface
		self.skin_path = plugin_path
		self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
		self.APList = None
		self.newAPList = None
		self.WlanList = None
		self.cleanList = None
		self.oldlist = {}
		self.listLength = None
		self.rescanTimer = eTimer()
		self.rescanTimer.callback.append(self.rescanTimerFired)
		
		self["info"] = StaticText()
		
		self.list = []
		self["list"] = List(self.list)
		
		self["key_red"] = StaticText(_("Close"))
		self["key_green"] = StaticText(_("Connect"))
		self["key_yellow"] = StaticText()
			
		self["actions"] = NumberActionMap(["WizardActions", "InputActions", "EPGSelectActions"],
		{
			"ok": self.select,
			"back": self.cancel,
		}, -1)
		
		self["shortcuts"] = ActionMap(["ShortcutActions"],
		{
			"red": self.cancel,
			"green": self.select,
		})
		self.onLayoutFinish.append(self.layoutFinished)
		self.getAccessPoints(refresh = False)
		
	def layoutFinished(self):
		self.setTitle(_("Choose a wireless network"))
	
	def select(self):
		cur = self["list"].getCurrent()
		if cur is not None:
			self.rescanTimer.stop()
			del self.rescanTimer
			if cur[1] is not None:
				if cur[1] == 'hidden...':
					essid = cur[1]
				else:
					essid = cur[0]
				self.close(essid,self.getWlanList())
			else:
				self.close(None,None)
		else:
			self.rescanTimer.stop()
			del self.rescanTimer
			self.close(None,None)
	
	def WlanSetupClosed(self, *ret):
		if ret[0] == 2:
			self.rescanTimer.stop()
			del self.rescanTimer
			self.close(None)
	
	def cancel(self):
		if self.oldInterfaceState is False:
			iNetwork.setAdapterAttribute(self.iface, "up", False)
			iNetwork.deactivateInterface(self.iface,self.deactivateInterfaceCB)
		else:
			self.rescanTimer.stop()
			del self.rescanTimer
			self.close(None)

	def deactivateInterfaceCB(self,data):
		if data is not None:
			if data is True:
				self.rescanTimer.stop()
				del self.rescanTimer
				self.close(None)

	def rescanTimerFired(self):
		self.rescanTimer.stop()
		self.updateAPList()

	def buildEntryComponent(self, essid, bssid, encrypted, iface, maxrate, signal):
		divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/div-h.png"))
		encryption = encrypted and _("Yes") or _("No")
		if bssid == 'hidden...':
			return((essid, bssid, None, None, None, None, divpng))
		else:					
			return((essid, bssid, _("Signal: ") + str(signal), _("Max. Bitrate: ") + str(maxrate), _("Encrypted: ") + encryption, _("Interface: ") + str(iface), divpng))

	def updateAPList(self):
		newList = []
		newList = self.getAccessPoints(refresh = True)	
		self.newAPList = []
		tmpList = []
		newListIndex = None
		currentListEntry = None
		currentListIndex = None

		for ap in self.oldlist.keys():
			data = self.oldlist[ap]['data']
			if data is not None:
				tmpList.append(data)

		if len(tmpList):
			if "hidden..." not in tmpList:
				tmpList.append( ( _("enter hidden network SSID"), "hidden...", True, self.iface, _("unavailable"), "" ) )
	
			for entry in tmpList:
				self.newAPList.append(self.buildEntryComponent( entry[0], entry[1], entry[2], entry[3], entry[4], entry[5] ))
	
			currentListEntry = self["list"].getCurrent()
			idx = 0
			for entry in self.newAPList:
				if entry[0] == currentListEntry[0]:
					newListIndex = idx
				idx +=1
			self['list'].setList(self.newAPList)
			self["list"].setIndex(newListIndex)
			self["list"].updateList(self.newAPList)
			self.listLength = len(self.newAPList)
			self.buildWlanList()
			self.setInfo()

	def getAccessPoints(self, refresh = False):
		self.APList = []
		self.cleanList = []
		self.w = Wlan(self.iface)
		aps = self.w.getNetworkList()
		if aps is not None:
			print "[WirelessLan.py] got Accespoints!"
			tmpList = []
			compList = []
			for ap in aps:
				a = aps[ap]
				if a['active']:
					tmpList.append( (a['essid'], a['bssid']) )
					compList.append( (a['essid'], a['bssid'], a['encrypted'], a['iface'], a['maxrate'], a['signal']) )

			for entry in tmpList:
				if entry[0] == "":
					for compentry in compList:
						if compentry[1] == entry[1]:
							compList.remove(compentry)
			for entry in compList:
				self.cleanList.append( ( entry[0], entry[1], entry[2], entry[3], entry[4], entry[5] ) )
				if not self.oldlist.has_key(entry[0]):
					self.oldlist[entry[0]] = { 'data': entry }
				else:
					self.oldlist[entry[0]]['data'] = entry
		
		if "hidden..." not in self.cleanList:
			self.cleanList.append( ( _("enter hidden network SSID"), "hidden...", True, self.iface, _("unavailable"), "" ) )

		for entry in self.cleanList:
			self.APList.append(self.buildEntryComponent( entry[0], entry[1], entry[2], entry[3], entry[4], entry[5] ))
		
		if refresh is False:
			self['list'].setList(self.APList)
		self.listLength = len(self.APList)
		self.setInfo()
		self.rescanTimer.start(5000)
		return self.cleanList

	def setInfo(self):
		length = self.getLength()
		if length <= 1:
			self["info"].setText(_("No wireless networks found! Please refresh."))
		elif length == 2:
			self["info"].setText(_("1 wireless network found!"))
		else:
			self["info"].setText(str(length-1)+_(" wireless networks found!"))

	def buildWlanList(self):
		self.WlanList = []
		for entry in self['list'].list:
			if entry[1] == "hidden...":
				self.WlanList.append(( "hidden...",_("enter hidden network SSID") ))#continue
			else:
				self.WlanList.append( (entry[0], entry[0]) )

	def getLength(self):
		return self.listLength		

	def getWlanList(self):
		if self.WlanList is None:
			self.buildWlanList()
		return self.WlanList
예제 #7
0
class WlanScan(Screen):
    skin = """
		<screen name="WlanScan" position="center,center" size="560,400" title="Choose a Wireless Network" >
			<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
			<widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
			<widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
			<widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
			<widget source="list" render="Listbox" position="5,40" size="550,300" scrollbarMode="showOnDemand">
				<convert type="TemplatedMultiContent">
					{"template": [
							MultiContentEntryText(pos = (0, 0), size = (550, 30), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the essid
							MultiContentEntryText(pos = (0, 30), size = (175, 20), font=1, flags = RT_HALIGN_LEFT, text = 5), # index 5 is the interface
							MultiContentEntryText(pos = (175, 30), size = (175, 20), font=1, flags = RT_HALIGN_LEFT, text = 4), # index 0 is the encryption
							MultiContentEntryText(pos = (350, 0), size = (200, 20), font=1, flags = RT_HALIGN_LEFT, text = 2), # index 0 is the signal
							MultiContentEntryText(pos = (350, 30), size = (200, 20), font=1, flags = RT_HALIGN_LEFT, text = 3), # index 0 is the maxrate
							MultiContentEntryPixmapAlphaTest(pos = (0, 52), size = (550, 2), png = 6), # index 6 is the div pixmap
						],
					"fonts": [gFont("Regular", 28),gFont("Regular", 18)],
					"itemHeight": 54
					}
				</convert>
			</widget>
			<ePixmap pixmap="skin_default/div-h.png" position="0,340" zPosition="1" size="560,2" />		
			<widget source="info" render="Label" position="0,350" size="560,50" font="Regular;24" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
		</screen>"""

    def __init__(self, session, iface):
        Screen.__init__(self, session)
        self.session = session
        self.iface = iface
        self.skin_path = plugin_path
        self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
        self.APList = None
        self.newAPList = None
        self.WlanList = None
        self.cleanList = None
        self.oldlist = {}
        self.listLength = None
        self.rescanTimer = eTimer()
        self.rescanTimer.callback.append(self.rescanTimerFired)

        self["info"] = StaticText()

        self.list = []
        self["list"] = List(self.list)

        self["key_red"] = StaticText(_("Close"))
        self["key_green"] = StaticText(_("Connect"))
        self["key_yellow"] = StaticText()

        self["actions"] = NumberActionMap(
            ["WizardActions", "InputActions", "EPGSelectActions"], {
                "ok": self.select,
                "back": self.cancel,
            }, -1)

        self["shortcuts"] = ActionMap(["ShortcutActions"], {
            "red": self.cancel,
            "green": self.select,
        })
        self.onLayoutFinish.append(self.layoutFinished)
        self.getAccessPoints(refresh=False)

    def layoutFinished(self):
        self.setTitle(_("Choose a wireless network"))

    def select(self):
        cur = self["list"].getCurrent()
        if cur is not None:
            self.rescanTimer.stop()
            del self.rescanTimer
            if cur[1] is not None:
                if cur[1] == 'hidden...':
                    essid = cur[1]
                else:
                    essid = cur[0]
                self.close(essid, self.getWlanList())
            else:
                self.close(None, None)
        else:
            self.rescanTimer.stop()
            del self.rescanTimer
            self.close(None, None)

    def WlanSetupClosed(self, *ret):
        if ret[0] == 2:
            self.rescanTimer.stop()
            del self.rescanTimer
            self.close(None)

    def cancel(self):
        if self.oldInterfaceState is False:
            iNetwork.setAdapterAttribute(self.iface, "up", False)
            iNetwork.deactivateInterface(self.iface,
                                         self.deactivateInterfaceCB)
        else:
            self.rescanTimer.stop()
            del self.rescanTimer
            self.close(None)

    def deactivateInterfaceCB(self, data):
        if data is not None:
            if data is True:
                self.rescanTimer.stop()
                del self.rescanTimer
                self.close(None)

    def rescanTimerFired(self):
        self.rescanTimer.stop()
        self.updateAPList()

    def buildEntryComponent(self, essid, bssid, encrypted, iface, maxrate,
                            signal):
        divpng = LoadPixmap(cached=True,
                            path=resolveFilename(SCOPE_SKIN_IMAGE,
                                                 "skin_default/div-h.png"))
        encryption = encrypted and _("Yes") or _("No")
        if bssid == 'hidden...':
            return ((essid, bssid, None, None, None, None, divpng))
        else:
            return ((essid, bssid, _("Signal: ") + str(signal),
                     _("Max. Bitrate: ") + str(maxrate),
                     _("Encrypted: ") + encryption,
                     _("Interface: ") + str(iface), divpng))

    def updateAPList(self):
        newList = []
        newList = self.getAccessPoints(refresh=True)
        self.newAPList = []
        tmpList = []
        newListIndex = None
        currentListEntry = None
        currentListIndex = None

        for ap in self.oldlist.keys():
            data = self.oldlist[ap]['data']
            if data is not None:
                tmpList.append(data)

        if len(tmpList):
            if "hidden..." not in tmpList:
                tmpList.append((_("enter hidden network SSID"), "hidden...",
                                True, self.iface, _("unavailable"), ""))

            for entry in tmpList:
                self.newAPList.append(
                    self.buildEntryComponent(entry[0], entry[1], entry[2],
                                             entry[3], entry[4], entry[5]))

            currentListEntry = self["list"].getCurrent()
            idx = 0
            for entry in self.newAPList:
                if entry[0] == currentListEntry[0]:
                    newListIndex = idx
                idx += 1
            self['list'].setList(self.newAPList)
            self["list"].setIndex(newListIndex)
            self["list"].updateList(self.newAPList)
            self.listLength = len(self.newAPList)
            self.buildWlanList()
            self.setInfo()

    def getAccessPoints(self, refresh=False):
        self.APList = []
        self.cleanList = []
        self.w = Wlan(self.iface)
        aps = self.w.getNetworkList()
        if aps is not None:
            print "[WirelessLan.py] got Accespoints!"
            tmpList = []
            compList = []
            for ap in aps:
                a = aps[ap]
                if a['active']:
                    tmpList.append((a['essid'], a['bssid']))
                    compList.append((a['essid'], a['bssid'], a['encrypted'],
                                     a['iface'], a['maxrate'], a['signal']))

            for entry in tmpList:
                if entry[0] == "":
                    for compentry in compList:
                        if compentry[1] == entry[1]:
                            compList.remove(compentry)
            for entry in compList:
                self.cleanList.append((entry[0], entry[1], entry[2], entry[3],
                                       entry[4], entry[5]))
                if not self.oldlist.has_key(entry[0]):
                    self.oldlist[entry[0]] = {'data': entry}
                else:
                    self.oldlist[entry[0]]['data'] = entry

        if "hidden..." not in self.cleanList:
            self.cleanList.append(
                (_("enter hidden network SSID"), "hidden...", True, self.iface,
                 _("unavailable"), ""))

        for entry in self.cleanList:
            self.APList.append(
                self.buildEntryComponent(entry[0], entry[1], entry[2],
                                         entry[3], entry[4], entry[5]))

        if refresh is False:
            self['list'].setList(self.APList)
        self.listLength = len(self.APList)
        self.setInfo()
        self.rescanTimer.start(5000)
        return self.cleanList

    def setInfo(self):
        length = self.getLength()
        if length <= 1:
            self["info"].setText(
                _("No wireless networks found! Please refresh."))
        elif length == 2:
            self["info"].setText(_("1 wireless network found!"))
        else:
            self["info"].setText(
                str(length - 1) + _(" wireless networks found!"))

    def buildWlanList(self):
        self.WlanList = []
        for entry in self['list'].list:
            if entry[1] == "hidden...":
                self.WlanList.append(
                    ("hidden...", _("enter hidden network SSID")))  #continue
            else:
                self.WlanList.append((entry[0], entry[0]))

    def getLength(self):
        return self.listLength

    def getWlanList(self):
        if self.WlanList is None:
            self.buildWlanList()
        return self.WlanList