Paso 7: Aplicación de Python para enviar datos a hojas de cálculo de Google
instalar./setup.py < pre > < / pre >
Antes de comenzar la codificación, tuvieron que instalar dos archivos de hoja de cálculo de Google: uno para almacenar la lista de miembros de eLab, con columnas de sus nombres, números de teléfono celular y algunos otros datos; y otra que la eLab registro de entrada, que contiene columnas para fecha, horas, número de teléfono, nombre de miembro, y si la entrada fue aceptada o rechazada. El segundo archivo de hoja de cálculo contiene también dos otras hojas de cálculo, siendo uno de ellos al realizar operaciones con datos para la visualización y el segundo que solía ser el registro diario de entrada, con las entradas del día actual se trajo de la primera hoja de cálculo. Aquí puedes ver y descargar hojas de cálculo de muestra:
-Miembros - https://docs.google.com/spreadsheet/ccc?key=0Amc7BxnuFafkdDBXc0pOcDVBRUV2VUt1bHJJWE9ldWc&usp=sharing
-Registro de entrada - https://docs.google.com/spreadsheet/ccc?key=0Amc7BxnuFafkdG1kc0NyOWZZRHVkLXJNODJIRkFBc1E&usp=sharing
Para las comunicaciones del puerto serie también tuvimos que instalar pyserial usando el siguiente comando:
< pre > sudo Apto-conseguir instalar python-serial < / pre >
Una vez que tuvimos el funcionamiento del sistema que pensamos que sería divertido si cada miembro puede tener su propia música de entrada :) Así, tenemos instalado pygame utilizando el comando
< pre > sudo apt-get instal python-pygame < / pre >
y añadió una nueva columna para el nombre de la canción en la hoja de cálculo de los miembros de eLab y también agregar unas líneas más de código a la aplicación Python para jugar la canción. Por supuesto al principio tuvimos la broma alrededor y poner música estúpida para algunas entradas de los miembros de eLab: P como un ejemplo, cuando uno de nosotros entra juega las épicas piratas del Caribe tema, para otro miembro toca el tema de la Liga de campeones y así sucesivamente...
Ahora a describir lo que hace el código fuente de Python, de manera general. Cuando la aplicación Python recibe un mensaje de "A: < 9_DIGIT_NUMBER >" desde el PIC16F88, recupera los datos de la hoja de cálculo de Google que contiene la información de los miembros de Hackerspace de eLab y verifica que el usuario tiene el número telefónico recibido. Después de comprobar que el usuario tiene el número de teléfono recibidos, reproduce la música de entrada correspondiente y envía la información de entrada a la hoja de registro de entrada de Hackerspace de eLab. En caso de que reciba un "< 9_DIGIT_NUMBER > R:", suena la alarma de sonido y envía la información de entrada rechazada a la hoja de registro de entrada de Hackerspace de eLab. A continuación puede ver el código de la aplicación Python. Si intenta utilizar no olvides cambiar el correo electrónico, contraseña, clave de la hoja de cálculo y título de los miembros de una lista de hoja de cálculo. La clave de la hoja de cálculo puede consultarse en la url de la hoja de cálculo después de la cadena "clave =".
< pre >
tiempo de importación
importación gdata.spreadsheet.service
Import pygame
serial de importación
Pygame.init()
Pygame.mixer.init()
CORREO ELECTRÓNICO DE CUENTA DE GOOGLE DE #YOUR
correo electrónico = ' usuario
CONTRASEÑA DE LA CUENTA DE GOOGLE DE #YOUR
Password = 'password'
DATOS DE #TEST
auth = 'concedido'
número = '913564168'
#END DE DATOS DE PRUEBA
CONFIGURACIÓN DEL PUERTO #SERIAL
ser = serial. Serial("/dev/ttyS0",9600)
#END DE CONFIGURACIÓN DEL PUERTO SERIE
var = 'X'
Acción = 'X'
número de teléfono = 'X'
#START DE ACCESO DE REGISTRO
# ENCONTRAR este valor en la URL con ' clave = XXX' y copia el XXX abajo
spreadsheet_key = 'XXX'
# HOJAS DE CÁLCULO TODOS TIENEN HOJAS DE TRABAJO. CREO QUE LA HOJA DE TRABAJO #1 POR DEFECTO SIEMPRE
# TIENE un valor de ' 0 d 6'
worksheet_id = 'od6'
spr_client = gdata.spreadsheet.service.SpreadsheetsService()
spr_client.email = correo electrónico
spr_client.password = contraseña
spr_client.Source = 'Ejemplo hoja de cálculo aplicación de escritura'
spr_client. ProgrammaticLogin()
#END DE REGISTRO LÍNEA
# DATOS NECESARIOS PARA REPRODUCIR SONIDO DE MIEMBROS
Lista de miembros #Query
gd_client = gdata.spreadsheet.service.SpreadsheetsService()
gd_client.email = correo electrónico
gd_client.password = contraseña
gd_client.Source = spr_client.source
gd_client. ProgrammaticLogin()
while(1):
var = ser.read()
pnumber = 0
Si var == "A" o var == "R":
Si var == "A":
auth = "concedido"
otra cosa:
auth = "rechazado"
var = ser.read()
Si var == ":":
pnumber = ser.read(9)
número = str(pnumber)
imprimir auth
número de impresión
q = gdata.spreadsheet.service.DocumentQuery()
Relace #Below con el nombre de la hoja de cálculo de lista de miembros
q ['title'] = 'eLab miembros'
q ['exacto de título'] = 'true'
alimentación = gd_client. GetSpreadsheetsFeed(query=q)
spreadsheet_id = feed.entry[0].id.text.rsplit('/',1) [1]
alimentación = gd_client. GetWorksheetsFeed(spreadsheet_id)
worksheet_id = feed.entry[0].id.text.rsplit('/',1) [1]
filas = gd_client. GetListFeed(spreadsheet_id, worksheet_id).entry
teléfono = ''
SOM = ''
nombre = "Desconhecido"
= False
de fila de filas:
Si == True:
= False
rotura
# impresión "%s %s" % (row.custom['telefone'], row.custom['nome'].text)
de clave en la row.custom:
Si clave == 'nombre':
nombre = row.custom[key].text
imprimir nombre
Si clave == 'som':
SOM = row.custom[key].text
imprimir som
Si clave == 'telefono':
Telefono = row.custom[key].text
imprimir telefono
Si telefono == número o nome == "Desconhecido":
# Preparar el diccionario para escribir
dict = {}
dict ['fecha'] = time.strftime('%d/%m/%Y')
dict ['hora'] = time.strftime('%H:%M:%S')
dict ['numero'] = número de
dict ['auth'] = auth
dict ['nombre'] = nome
imprimir dict
entrada = spr_client. InsertRow (dict, spreadsheet_key, worksheet_id)
Si isinstance (entrada, gdata.spreadsheet.SpreadsheetsList):
Imprimir "Insertar fila tuvo éxito".
otra cosa:
Imprimir "Insertar fila fallada."
Si no isinstance (som, basestring):
rotura
Pygame.mixer.Music.Load(SOM)
Pygame.mixer.Music.set_volume(1)
Pygame.mixer.Music.Play()
Imprimir "Jugar canción!"
= True
Aunque la verdad:
evento de #for en pygame.event:
mientras que pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
rotura
Imprimir "Final de la canción!"
imprimir
#END DE SONIDO MIEMBRO
< / pre >
Publicar el registro diario de la entrada en una página web sólo tienes que abrir la hoja de cálculo en Google Drive, haga clic en archivo -> publicar web y elija que desea publicar y haga clic en el botón para iniciar la publicación de la hoja. Luego, en la parte inferior de la ventana emergente elegir HTML para incrustar en una página web y copiar el código HTML y pégalo en tu página web.