This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
quadricone-python-urbaines [2012/11/27 08:48] 85.218.109.130 |
quadricone-python-urbaines [2013/03/14 09:02] 152.160.22.43 FxnUVJiEJWeQbO |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== quadricone urbaines py ====== | + | HeO5UX , [url=http://xfvvhkednhzr.com/]xfvvhkednhzr[/url], [link=http://ldelohejkkow.com/]ldelohejkkow[/link], http://kgfriysxfysx.com/ |
- | + | ||
- | + | ||
- | <code python> | + | |
- | import serial, subprocess, glob, time, csv, random | + | |
- | + | ||
- | + | ||
- | ### assign arduino's serial port | + | |
- | usbport=glob.glob("/dev/tty*")[0] | + | |
- | ### set up serial baud rate | + | |
- | ser = serial.Serial(usbport, 9600, timeout=1) | + | |
- | + | ||
- | + | ||
- | ### the moving part ------------------- | + | |
- | + | ||
- | class Servo: | + | |
- | def __init__(self, servoID): | + | |
- | self.servoID=servoID | + | |
- | self.stop() # when initiated, stop! | + | |
- | + | ||
- | def move(self, speed): | + | |
- | self.speed=speed | + | |
- | if (0 <= self.speed <= 180): | + | |
- | ser.write(chr(255)) | + | |
- | ser.write(chr(self.servoID)) | + | |
- | ser.write(chr(self.speed)) | + | |
- | else: | + | |
- | print "Servo position must be an integer between 0 and 180.\n" | + | |
- | + | ||
- | def stop(self): | + | |
- | self.move(90) | + | |
- | print "stop" | + | |
- | + | ||
- | def down_slow(self): | + | |
- | self.move(100) | + | |
- | print "down slow" | + | |
- | + | ||
- | def down(self): | + | |
- | self.move(120) | + | |
- | print "down" | + | |
- | + | ||
- | def up(self): | + | |
- | self.move(80) | + | |
- | print "up" | + | |
- | + | ||
- | ## initiate the morots and put them all in the STOP (90) position | + | |
- | ## alternative | + | |
- | + | ||
- | Servos = ["raja","gaja","vlaja", "zlaja"] | + | |
- | for i,servo in enumerate(Servos): | + | |
- | globals()[servo]=Servo(i+1) | + | |
- | globals()[servo].stop() | + | |
- | + | ||
- | random.shuffle(Servos) | + | |
- | + | ||
- | how_many_times = [0, 0, 0, 0] | + | |
- | + | ||
- | + | ||
- | ### the scanning part ----------------- | + | |
- | + | ||
- | # airodump-ng is running and logging the results into a csv file | + | |
- | # with the following command: sudo airodump-ng -o csv -w manuf mon0 | + | |
- | # subprocess looks for the last edited csv file in current folder | + | |
- | # this file is parsed by the csv module to find the number of data packets that have passed through the network since the last check | + | |
- | + | ||
- | csvs=subprocess.Popen("ls -t1 *csv | head -1", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | + | |
- | csv_last=csvs.communicate()[0].strip() | + | |
- | + | ||
- | key_value=(' # IV') # look up this value in the scan dump | + | |
- | + | ||
- | def lookup(dump): | + | |
- | datas=[] | + | |
- | results=[] | + | |
- | scan=open(dump, "rU") | + | |
- | next(scan) | + | |
- | scanDict=csv.DictReader((line.replace('\0','') for line in scan), delimiter=',') | + | |
- | for adict in scanDict: | + | |
- | if adict.has_key(key_value) and adict.get(key_value)!=None: | + | |
- | try: | + | |
- | datas.append(int(adict.get(key_value))) | + | |
- | except: | + | |
- | pass | + | |
- | datas.sort(reverse=True) | + | |
- | for i in range(4): | + | |
- | results.append(datas[i]) | + | |
- | return results | + | |
- | + | ||
- | ### the main loop ---------------------- | + | |
- | + | ||
- | packet_list=lookup(csv_last) | + | |
- | print 'packet_list', packet_list | + | |
- | #print 'servo_list', servo_list | + | |
- | time.sleep(3) | + | |
- | + | ||
- | while True: | + | |
- | new_packet_list=lookup(csv_last) | + | |
- | print "////////////////////////" | + | |
- | print " " | + | |
- | print 'new_packet_list', new_packet_list | + | |
- | print 'calculating the movements...' | + | |
- | for i,servo in enumerate(Servos): | + | |
- | print 'servo', servo | + | |
- | packet_diff=new_packet_list[i]-packet_list[i] | + | |
- | print 'packet_diff:', packet_diff | + | |
- | if packet_diff==0: | + | |
- | print 'packetdiff:', packet_diff, '; go back up' | + | |
- | globals()[servo].stop() | + | |
- | time.sleep(0.3) | + | |
- | globals()[servo].stop() | + | |
- | elif 0 < packet_diff < 7: | + | |
- | if how_many_times[i]<=6: | + | |
- | print 'packetdiff:', packet_diff, '; up, little' | + | |
- | globals()[servo].down_slow() | + | |
- | time.sleep(0.5) | + | |
- | globals()[servo].stop() | + | |
- | how_many_times[i]+=0.5 | + | |
- | else: | + | |
- | globals()[servo].stop() | + | |
- | time.sleep(0.3) | + | |
- | how_many_times[i]-=2 | + | |
- | elif 40 > packet_diff >= 7: | + | |
- | if how_many_times[i]<=6: | + | |
- | print 'packetdiff:', packet_diff, '; down, little' | + | |
- | globals()[servo].down() | + | |
- | time.sleep(0.5) | + | |
- | globals()[servo].stop() | + | |
- | how_many_times[i]+=0.5 | + | |
- | else: | + | |
- | globals()[servo].stop() | + | |
- | time.sleep(0.3) | + | |
- | how_many_times[i]-=2 | + | |
- | elif 90 > packet_diff >= 40: | + | |
- | if how_many_times[i]<=6: | + | |
- | print 'packetdiff:', packet_diff, '; go down, 2' | + | |
- | globals()[servo].down() | + | |
- | time.sleep(1) | + | |
- | globals()[servo].stop() | + | |
- | how_many_times[i]+=1 | + | |
- | else: | + | |
- | globals()[servo].stop() | + | |
- | time.sleep(0.3) | + | |
- | how_many_times[i]-=2 | + | |
- | elif 130 > packet_diff >= 90: | + | |
- | if how_many_times[i]<=6: | + | |
- | print 'packetdiff:', packet_diff, '; go down, 3' | + | |
- | globals()[servo].down() | + | |
- | time.sleep(1.5) | + | |
- | globals()[servo].stop() | + | |
- | how_many_times[i]+=1.5 | + | |
- | else: | + | |
- | globals()[servo].stop() | + | |
- | time.sleep(0.3) | + | |
- | how_many_times[i]-=2 | + | |
- | elif packet_diff >= 130: | + | |
- | print 'packetdiff:', packet_diff, '; go down, 4' | + | |
- | globals()[servo].down() | + | |
- | time.sleep(2) | + | |
- | globals()[servo].stop() | + | |
- | how_many_times[i]+=2 | + | |
- | packet_list=new_packet_list # update packet list | + | |
- | print "how many times?", how_many_times | + | |
- | time.sleep(1) | + | |
- | + | ||
- | </code> | + |