User Tools

Site Tools


lisboa-get-values

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

lisboa-get-values [2015/01/22 15:52] (current)
zoza created
Line 1: Line 1:
 +<code python>
 +#​!/​usr/​bin/​env python
  
 +"""​The main interaction computation file"""​
 +
 +import urllib2, time, servoclass, ledclass, sys
 +
 +raya, gaya, vlaya, zlaya = servoclass.Servo(1),​ servoclass.Servo(2),​ servoclass.Servo(3),​ servoclass.Servo(4)
 +servoList = [raya, gaya, vlaya, zlaya]
 +
 +### DATA
 +### [0] - phoneID ; [1] - timestamp ; [2] - bytes ; [3] - conversation ; [4] - sms ; [5] - signalstrength ; [6] - estimote
 +
 +
 +# reactions to different events
 +
 +def reaction(led,​ motor1, motor2, motor3, motor4, speed_one, speed_two, duration):
 +    # reaction to data
 +    ledclass.fadeInTurq(led)
 +    motor1.move(speed_one)
 +    motor2.stop()
 +    motor3.stop()
 +    motor4.stop()
 +    time.sleep(duration)
 +    ledclass.fadeOutTurq(led)
 +    motor1.stop()
 +    # reaction to conversation
 +    ledclass.fadeInPurple(led)
 +    motor1.move(speed_two)
 +    motor2.stop()
 +    motor3.stop()
 +    motor4.stop()
 +    time.sleep(duration)
 +    ledclass.fadeOutPurple(led)
 +    motor1.stop()
 +
 +def reaction_sms(number):​
 +    for i in range(number):​
 +        for j in range(4):
 +            ledclass.fadeInYellow(j)
 +            servoList[j].move(95)
 +        time.sleep(1)
 +        for j in range(4):
 +            ledclass.fadeOutYellow(j)
 +            servoList[j].stop()
 +
 +while True: 
 +    try:
 +        #datas = codecs.open("​values-test.txt",​ "​r",​ encoding="​utf-8"​)
 +        datas = urllib2.urlopen("​http://​kucjica.kucjica.org/​androidtesting/​arduino-get.php"​)
 +        line = datas.read()
 +        #print line
 +
 +        ### calculate the movement:
 +        bajts = abs(int(line.split(';'​)[2]))
 +        print "​bajts",​ bajts
 +        if 0 <= bajts <= 150:
 +            speedBajt = 85 #servo up
 +            sleeping_time = 1
 +        elif 150 < bajts <= 900:
 +            speedBajt = 98 # servo down_slow
 +            sleeping_time = 2
 +        elif 900 < bajts <= 1600:
 +            speedBajt = 107 # servo down
 +            sleeping_time = 1
 +        elif 1600 < bajts <= 30000:
 +            speedBajt = 115 # servo down_fast
 +            sleeping_time = 1
 +        elif 30000 < bajts:
 +            speedBajt = 122 # servo down_very_fast
 +            sleeping_time = 1
 +        else: 
 +            print "none of the above byte values"​
 +            speedBajt = 90 # servo down_very_fast
 +
 +        conv = int(line.split(';'​)[3])
 +        print "​conv",​ conv
 +        if 0 <= conv <= 2:
 +            speedConv = 88 #servo up
 +            sleeping_time = 0.5
 +        elif 2 < conv <= 30:
 +            speedConv = 95 # servo down
 +            sleeping_time = 1
 +        elif 30 < conv <= 120:
 +            speedConv = 100 # servo down_fast
 +            sleeping_time = 1
 +        elif 120 < conv:
 +            speedConv = 107 # servo down_very_fast
 +            sleeping_time = 1
 +        else: 
 +            print "none of the above byte values"​
 +        sms = int(line.split(';'​)[4])
 +        print "​sms",​ sms
 +        if 4 >= sms >= 1 :
 +            reaction_sms(sms)
 +        elif sms > 4:
 +            reaction_sms(4)
 +        else: 
 +            reaction_sms(0)
 +        signals = int(line.split(';'​)[5])
 +        estimote = line.split(';'​)[6].strip()
 +        ### locate in space
 +        ### and react depending on the closest estimote
 +        if estimote == "​0":​
 +            print "you are not here"
 +            for i in range(4):
 +                ledclass.fadeInRed(i)
 +            time.sleep(0.5)
 +            for i in range(4):
 +                ledclass.fadeOutRed(i)
 +            time.sleep(0.5)
 +        elif estimote == "​62100":​ #blueberry pie
 +            print "​blueberry"​
 +            print speedBajt
 +            reaction(0, raya, gaya, vlaya, zlaya, speedBajt, speedConv, sleeping_time)
 +        elif estimote == "​56336":​ #icy marshmallow
 +            print "​icy"​
 +            print speedBajt
 +            new_speedBajt = int(90-speedBajt)/​4 + speedBajt
 +            new_speedConv = int(90-speedConv)/​4 + speedConv
 +            reaction(1, gaya, raya, vlaya, zlaya, speedBajt, speedConv, sleeping_time) # main is gaya
 +            reaction(0, raya, gaya, vlaya, zlaya, new_speedBajt,​ new_speedConv,​ sleeping_time) # raya is secondary
 +            # reaction_sec(vlaya,​ vlayaLED)
 +        elif estimote == "​55745":​ #mint coctail
 +            print "​mint"​
 +            print speedBajt
 +            new_speedBajt = int(90-speedBajt)/​2 + speedBajt
 +            new_speedConv = int(90-speedConv)/​2 + speedConv
 +            reaction(2, vlaya, raya, gaya, zlaya, speedBajt, speedConv, sleeping_time) # main is vlaya
 +            reaction(3, zlaya, raya, gaya, vlaya, new_speedBajt,​ new_speedConv,​ sleeping_time) # zlaya is secondary
 +        else:
 +            print "​estimote weird" ​                      
 +
 +        time.sleep(2)
 +    except KeyboardInterrupt:​
 +        for i in range(len(servoList)):​
 +            servoList[i].move(90)
 +        sys.exit()
 +'''​
 +### WORK FLOW:
 +
 +### read in the db
 +
 +### parse values; what has changed since last time
 +####### use timestamp?
 +
 +### compute the reaction
 +### lights to represent bytes and conversation
 +
 +### move things, lights
 +'''​
 +</​code>​
lisboa-get-values.txt ยท Last modified: 2015/01/22 15:52 by zoza