Stap 8: [Software] Upload "kicktracker.py" script
#!/usr/bin/python import sys,urllib,json,serial,time prolite = serial.Serial("/dev/ttyUSB0", baudrate=2400, bytesize=8, parity='N', stopbits=1, xonxoff=0, rtscts=0) # get kickstarter stats url and goal amount if len(sys.argv) > 1: url = sys.argv[1] goal = int(sys.argv[2]) else: sys.exit("Missing arguments") # receive data from url r = urllib.urlopen(url) # grab json data structure data = json.loads(r.read()) # parse needed data pledged = int(float(data['project']['pledged'])) backers = data['project']['backers_count'] percentfunded = pledged / float(goal) # output data to console / Arduino # integer pledges / currency-formatted pledges / backers / percent funded print str(pledged)+'/'+'${:,}'.format(pledged)+'/'\ '{:,}'.format(backers)+'/'+'{:.2%}'.format(percentfunded)+'/' # write data to Pro-Lite PL-M2014R display prolite.write("<ID01>") prolite.write("\r\n") time.sleep(0.1) prolite.write("<ID01>") prolite.write("<PA>") prolite.write("<CL><FI><SB>") prolite.write('${:,}'.format(pledged)) prolite.write("<CC><FI><SA>Backers: ") prolite.write(str(backers)) prolite.write("<CH><FI><SB>") prolite.write('{:.2%}'.format(percentfunded)) prolite.write("\r\n") prolite.flush() #prolite.write("<ID01>") #prolite.write("<RPA>") #prolite.write("\r\n") prolite.close()
De Python script hierboven ontvangt twee argumenten, een Kickstarter stats URL en het doel van de campagne (omdat die info is niet beschikbaar in de URL van de stats we gebruiken). De stats URL geeft als resultaat een JSON-reactie, die wij gemakkelijk voor de benodigde gegevens kan verwerken. De geretourneerde JSON-gegevens ziet er iets als dit:
{"project":{"id":826672481,"state_changed_at":1411636608,"state":"live","backers_count":175,"pledged":"16980.0","comments_count":78}}
De opgehaalde gegevens wordt afgedrukt op de console (die is gevoed rechtstreeks terug naar de Arduino-kant), en ook via de seriële poort met verschillende opmaakopdrachten volgens het Pro-Lite protocolverstuurd.
Er zijn verschillende manieren om het bestand kicktracker.py in de Yún. Het is aangeraden om bestanden te plaatsen in een micro-SD-kaart, maar omdat dit zo'n kleine script we gedumpt het rechtstreeks in de thuismap van root. U kan met de opdracht "nano kicktracker.py" en plak de code vanuit de console, Ctrl-X en vervolgens op j te slaan en te sluiten. U kon afwisselend het bestand overbrengen via SSH vanaf uw lokale computer met behulp van een bevel als dit:
scp kicktracker.py root
Dit moet worden gedaan vanaf de lokale computer, niet in de het Yún console wordt getypt. Het commando hierboven zou moeten werken op OSX en Linux, voor Windows moet u een FTP-programma gebruiken dat overdracht via SSH ondersteunt (FileZilla is één).