Stap 7: Python application om gegevens te verzenden naar Google spreadsheets
het installeren van < pre >./setup.py < / pre >
Voordat u begint met coderen, we moesten twee Google Spreadsheet-bestanden instellen: een voor het opslaan van de lijst van eLab leden, met kolommen voor hun namen, mobiele telefoonnummers en sommige andere contactinformatie; en een andere als de eLab ingang Log, met kolommen voor de datum, uur, telefoonaantal, naam van lid, en indien de vermelding is goedgekeurd of geweigerd. Het tweede werkbladbestand bevat ook twee andere werkbladen, wordt één van hen gewoon om bewerkingen uitvoeren op gegevens voor visualisatie en de tweede wordt gebruikt om de dagelijkse ingang log, met de vermeldingen van de huidige dag wordt opgehaald van het eerste werkblad. Hier kunt u zien en monster werkbladen downloaden:
-Leden - https://docs.google.com/spreadsheet/ccc?key=0Amc7BxnuFafkdDBXc0pOcDVBRUV2VUt1bHJJWE9ldWc&usp=sharing
-Ingang Log - https://docs.google.com/spreadsheet/ccc?key=0Amc7BxnuFafkdG1kc0NyOWZZRHVkLXJNODJIRkFBc1E&usp=sharing
We moesten voor seriële communicatie ook installeren pyserial met de volgende opdracht:
< pre > sudo ad rem-worden installeren python-serial < / pre >
Zodra we had de werking van het systeem we dachten dat zou het leuk zijn als elk lid had een eigen toevoerzijde-muziek :) Dus, we installeerden pygame met behulp van de opdracht
< pre > sudo ad rem-worden installeren python-pygame < / pre >
toegevoegd een nieuwe kolom voor de bestandsnaam van het lied in het werkblad eLab leden en ook een paar meer lijnen van code aan de toepassing van de Python om het nummer te spelen toegevoegd. Natuurlijk aan het begin moesten we grap rond en zet sommige domme muziek voor sommige eLab leden ingangen: P als een voorbeeld, als een van ons binnenkomt het speelt nu de epische piraten van het Caraïbische thema, voor andere lidstaten het speelt het thema van de Champions League, enzovoort...
We zullen nu beschrijven wat de Python source code doet, op een algemene manier. Wanneer de Python toepassing een bericht "A: < 9_DIGIT_NUMBER >" van de PIC16F88 ontvangt, het haalt de gegevens uit de Google-spreadsheet met de eLab Hackerspace leden informatie en controleert welke gebruiker heeft het ontvangen telefoonnummer. Nadat u hebt gecontroleerd die de gebruiker heeft het ontvangen telefoonnummer, speelt de overeenkomstige toevoerzijde-muziek en de vermeldingsgegevens verzendt naar de eLab Hackerspace ingang logboek werkblad. In het geval dat zij ontvangt een "R: < 9_DIGIT_NUMBER >", klinkt het alarm geluid en de geweigerde vermeldingsgegevens stuurt naar het eLab Hackerspace ingang logboek werkblad. Hieronder ziet u de code voor de toepassing van de Python. Als u probeert te gebruiken het niet vergeet om te veranderen van de e-mail, wachtwoord, werkblad sleutel en titel van de leden lijst werkblad. De werkblad-sleutel vindt u op de url van de spreadsheet na de tekenreeks "sleutel =".
< pre >
importeren
gdata.spreadsheet.service importeren
pygame importeren
seriële importeren
pygame.init()
pygame.mixer.init()
#YOUR GOOGLE ACCOUNT E-MAIL
e-mail = ' gebruiker
#YOUR GOOGLE ACCOUNTWACHTWOORD
wachtwoord = 'wachtwoord'
#TEST GEGEVENS
auth = 'toegekend'
aantal = '913564168'
#END VAN TESTGEGEVENS
INSTALLATIE VAN DE POORT VAN DE #SERIAL
ser seriële =. Serial("/dev/ttyS0",9600)
#END VAN SERIAL PORT SETUP
var = 'X'
actie = 'X'
telefoonnummer = 'X'
#START VAN TOEGANG VASTLEGGEN IN LOGBOEK
# FIND THIS waarde IN de URL met "sleutel = XXX' en kopie de XXX hieronder
spreadsheet_key = 'XXX'
# ALLE SPREADSHEETS HEBT WERKBLADEN. IK DENK DAT WERKBLAD #1 STANDAARD ALTIJD
# HEEFT een waarde van "0 d 6'
worksheet_id = 'od6'
spr_client = gdata.spreadsheet.service.SpreadsheetsService()
spr_client.email = e-mail
spr_client.password = wachtwoord
spr_client.source = 'Voorbeeldapplicatie Spreadsheet schrijven'
spr_client. ProgrammaticLogin()
#END VAN LOG LIJN
# DE NOODZAKELIJKE GEGEVENS OM GELUID AFSPELEN-LID
De lijst van de leden van de #Query
gd_client = gdata.spreadsheet.service.SpreadsheetsService()
gd_client.email = e-mail
gd_client.password = wachtwoord
gd_client.source = spr_client.source
gd_client. ProgrammaticLogin()
while(1):
var ser.read() =
pnumber = 0
Als var == "A" of var == "R":
Als var == "A":
auth = "toegekend"
anders:
auth = "verworpen"
var ser.read() =
Als var == ":":
pnumber = ser.read(9)
aantal = str(pnumber)
afdrukken van auth
aantal afdrukken
q = gdata.spreadsheet.service.DocumentQuery()
#Below relace met de naam van het lid lijst werkblad
q ['title'] = 'eLab Members'
q ['titel-exacte'] = 'true'
voeden = gd_client. GetSpreadsheetsFeed(query=q)
spreadsheet_id = feed.entry[0].id.text.rsplit('/',1) [1]
voeden = gd_client. GetWorksheetsFeed(spreadsheet_id)
worksheet_id = feed.entry[0].id.text.rsplit('/',1) [1]
rijen = gd_client. GetListFeed(spreadsheet_id, worksheet_id).entry
telefone = ''
som = ''
Nome = "Desconhecido"
= False
voor rij in rijen:
als gedaan == True:
= False
pauze
# print "%s %s" % (row.custom['telefone'], row.custom['nome'].text)
sleutel in row.custom:
Als belangrijkste == 'nome':
Nome = row.custom[key].text
nome afdrukken
Als belangrijkste == 'som':
som = row.custom[key].text
afdrukken van de som
Als belangrijkste == 'telefone':
telefone = row.custom[key].text
telefone afdrukken
Als telefone nummer of nome == == "Desconhecido":
# Bereiden het woordenboek te schrijven
dict = {}
dict ['datum'] = time.strftime('%d/%m/%Y')
dict ['tijd'] = time.strftime('%H:%M:%S')
dict ['nummer'] = getal
dict ['auth'] = auth
dict ['nome'] = nome
afdrukken van dict
entry = spr_client. InsertRow (dict, spreadsheet_key, worksheet_id)
Als isinstance (post, gdata.spreadsheet.SpreadsheetsList):
Print "rij invoegen geslaagd."
anders:
Print "rij invoegen mislukt."
zoniet isinstance (som, basestring):
pauze
pygame.mixer.Music.load(som)
pygame.mixer.Music.set_volume(1)
pygame.mixer.Music.Play()
afdrukken "Playing lied!"
= True
terwijl juist:
#for evenement in pygame.event:
terwijl pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
pauze
afdrukken "End of lied!"
afdrukken
#END VAN LID GELUID
< / pre >
Voor het publiceren van het dagelijkse toegang logboek in een webpagina die je alleen maar te openen van het werkblad op Google Drive, klik op Bestand -> publiceren naar Web en kies vervolgens welke blad dat u wilt publiceren en klik op de knop om te beginnen met publiceren. Kies vervolgens HTML insluiten in een webpagina en de HTML-code kopiëren en plakken in uw webpagina in de bodem van het pop-upvenster.