Example #1
0
 def findBridges(self):
     devs = []
     ljsocketAddress = "localhost:6000"
     
     try:
         devs = LabJackPython.listAll(ljsocketAddress, 200)
     except:
         return {}
     
     
     for dev in devs:
         #print "Got dev: serial = %s, prodId = 0x%X" % (dev['serial'], dev['prodId'])
         if dev['prodId'] != 0x501:
             continue
         elif str(dev['serial']) in self.bridges:
             d = self.bridges[str(dev['serial'])]
             if d.numMotes() != len(d.motes):
                 log("Number of motes changed. Placing all motes into rapid mode.")
                 d.motes = d.listMotes()
                 for mote in d.motes:
                     t = PlaceMoteInRapidModeThread(mote)
                     t.start()
             continue
         
         d = skymote.Bridge(LJSocket = ljsocketAddress, serial = dev['serial'])
         try:
             d.ethernetFirmwareVersion()
         except:
             d.ethernetFWVersion = "(No Ethernet)"
         d.nameCache = d.getName()
         d.readSerialNumber()
         d.usbFirmwareVersion()
         d.mainFirmwareVersion()
         d.productName = "SkyMote Bridge"
         d.meetsFirmwareRequirements = True
         d.spontaneousDataCache = dict()
         d.motes = d.listMotes()
         for mote in d.motes:
             t = PlaceMoteInRapidModeThread(mote)
             t.start()
         
         self.bridges["%s" % d.serialNumber] = d
         
         t = SpontaneousDataLoggingThread(d)
         t.start()
         self.loggingThreads["%s" % d.serialNumber] = t
     
     return self.bridges
Example #2
0
 def run(self):
     log("Trying to place mote %s into high powered mode. This might take some time." % self.mote.unitId)
     self.mote.nickname = MOTE_CACHE.get(str(self.mote.unitId) ,"Placeholder SkyMote Name")
     self.mote.startRapidMode()
     log("Mote %s successfully placed into high powered mode." % self.mote.unitId)
     self.mote.inRapidMode = True
     self.mote.nickname = self.mote.name
     MOTE_CACHE[str(self.mote.unitId)] = self.mote.nickname
     self.mote.mainFirmwareVersion()
     self.mote.devType = self.mote.readRegister(65000)
     if self.mote.devType == 2000:
         self.mote.productName = "SkyMote TLB"
     else:
         self.mote.productName = "SkyMote Unknown Type"
     self.mote.readSerialNumber()
     self.mote.checkinInterval = self.mote.readCheckinInterval()/1000
Example #3
0
 def updateBridgeSettings(self, serial, settings):
     b = self.getBridge(serial)
     
     if settings['name'] != b.nameCache:
         log("Updating name to %s from %s." % (settings['name'], b.nameCache))
         b.name = settings['name']
         b.nameCache = settings['name']
     
     netpassDict = b.getNetworkPassword()
     
     if settings['enable'] != netpassDict['enabled'] or settings['password'] != netpassDict['password']:
         
         e = settings['enable']
         pw = settings['password']
         
         for m in b.listMotes():
             m.setNetworkPassword(pw, enable = e)
         
         b.setNetworkPassword(pw, enable = e)
     
     return True
Example #4
0
 def run(self):
     log("Spontaneous Data Logger for %s started." % (self.name))
     self.running = True
     
     while self.running:
         data = self.bridge.spontaneous().next()
         now = datetime.now()
         data['timevalue'] = floattime()
         
         m = None
         for mote in self.bridge.motes:
             if mote.unitId == data['unitId']:
                 m = mote
                 break
         
         if m is not None:
             hasLast = m.lastCommunication is not None
             if m.inRapidMode and hasLast and (data['timevalue'] - m.lastCommunication) > 1.5:
                 log("Communication has slowed. Mote %s is not in rapid mode anymore." % m.unitId)
                 m.inRapidMode = False
             elif hasLast and (data['timevalue'] - m.lastCommunication) < 1.5:
                 m.inRapidMode = True
                 
             m.lastCommunication = data['timevalue']
         
         data['timestamp'] = str(now)
         self.bridge.spontaneousDataCache[str(data['unitId'])] = data
         log("Logging spontaneous data from %s." % data['unitId'])
         
         results = [ now, data['unitId'], data['Temp'], data['Light'], data['Bump'], data['RxLQI'], data['TxLQI'], data['Battery']]
         self.csvWriter.writerow(results)
     
     print "Spontaneous Data Logger for %s stopped." % (self.name)
Example #5
0
 def updateMoteSettings(self, serial, unitId, settings):
     # Update the settings on a mote.
     
     b = self.getBridge(serial)
     
     m = self.getMote(b, unitId)
     
     if m is None:
         return False
     
     if not m.inRapidMode:
         m.startRapidMode()
         m.inRapidMode = True
     
     print "settings =", settings
     
     if "name" in settings and settings['name'] != m.nickname:
         log("Updating name to %s from %s." % (settings['name'], m.nickname))
         m.name = settings['name']
         m.nickname = settings['name']
         
     if "unitId" in settings and settings['unitId'] != m.unitId:
         log("Updating mote's Unit ID from %s to %s" % (m.unitId, settings['unitId']))
         m.setUnitId(settings['unitId'])
     
     if "checkinInterval" in settings and settings['checkinInterval'] != m.checkinInterval:
         log("Updating mote's Check-In interval from %s to %s seconds" % (m.checkinInterval, settings['checkinInterval']))
         m.setCheckinInterval(settings['checkinInterval']*1000)
     
     return True