Étape 7: Python application pour envoyer des données sur Google Tableur
Installez < pre >./setup.py < / pre >
Avant de commencer le codage, il fallait mettre en place deux fichiers de feuille de calcul Google : un pour stocker la liste des membres eLab, avec des colonnes pour leurs noms, numéros de téléphone cellulaire et quelques autres infos contact ; et l’autre d’être l’eLab entrée journal, contenant des colonnes de date, heures, numéro de téléphone, nom de membre, et si l’entrée a été acceptée ou rejetée. Le deuxième fichier de feuille de calcul contient également deux autres tableurs, étant l’un d'entre eux vient d’effectuer des opérations sur les données pour la visualisation et l’autre servant à la fiche journalière de l’entrée, avec les entrées du jour actuel est extraite de la première feuille de calcul. Ici vous pouvez voir et télécharger les feuilles de calcul échantillon :
-Membres - https://docs.google.com/spreadsheet/ccc?key=0Amc7BxnuFafkdDBXc0pOcDVBRUV2VUt1bHJJWE9ldWc&usp=sharing
-Entrée Log - https://docs.google.com/spreadsheet/ccc?key=0Amc7BxnuFafkdG1kc0NyOWZZRHVkLXJNODJIRkFBc1E&usp=sharing
Pour les communications de port série, il fallait aussi installer pyserial en utilisant la commande suivante :
< pre > sudo apt-get installer python-serial < / pre >
Une fois que nous avons eu le travail de système, nous avons pensé que ce serait amusant si tout membre pourrait avoir sa propre musique d’entrée:) Ainsi, nous avons installé pygame à l’aide de la commande
< pre > sudo apt-get installer python-pygame < / pre >
et ajouté une nouvelle colonne pour le nom de fichier de la chanson dans le tableur de membres eLab et également ajouté quelques lignes de code à l’application Python à jouer la chanson. Bien sûr, au début, nous avons eu de plaisanter et de mettre une musique stupide pour certaines entrées de membres eLab: P comme un exemple, quand l’un d'entre nous arrive il joue maintenant les Pirates épiques du thème des Caraïbes, pour les autres membres, il joue le thème de la Ligue des Champions et ainsi de suite...
Nous allons maintenant décrire ce que fait le code source Python, d’une manière générale. Chaque fois que l’application Python reçoit un message « A: < 9_DIGIT_NUMBER > » de la PIC16F88, il récupère les données de la feuille de calcul Google contenant l’eLab Hackerspace membres des renseignements et vérifie que l’utilisateur possède le numéro de téléphone reçu. Après avoir vérifié que l’utilisateur a le numéro de téléphone reçu, il joue la musique d’entrée correspondante et il envoie les informations à la feuille de calcul eLab Hackerspace entrée journal. Dans le cas où il reçoit un « R: < 9_DIGIT_NUMBER > », il déclenche une alarme sonore et envoie les informations d’entrée rejetés à la feuille de calcul eLab Hackerspace entrée journal. Ci-dessous vous pouvez voir le code d’application Python. Si vous essayez d’utiliser il n’oubliez pas de changer l’email, le mot de passe, la clé de la feuille de calcul et titre des membres liste feuille de calcul. La clé de la feuille de calcul peut être trouvée sur l’url de la feuille de calcul après la chaîne "key =".
< pre >
moment de l’importation
importation gdata.spreadsheet.service
Import pygame
importation de série
pygame.init()
pygame.Mixer.init()
#YOUR GOOGLE COMPTE E-MAIL
email = ' utilisateur
#YOUR DES MOT DE PASSE DE COMPTE GOOGLE
mot de passe = « password »
#TEST DONNÉES
AUTH = « accordée »
nombre = « 913564168 »
#END DES DONNÉES D’ESSAI
CONFIGURATION DU PORT De #SERIAL
SER = serial. Serial("/dev/ttyS0",9600)
#END DE CONFIGURATION DU PORT SÉRIE
var = « X »
action = « X »
Numéro de téléphone = « X »
#START DU JOURNAL DES ACCÈS
# TROUVER cette valeur dans l’URL de ' clé = XXX "et copie le XXX ci-dessous
spreadsheet_key = « XXX »
# TOUTES LES FEUILLES DE CALCUL ONT DES FEUILLES DE CALCUL. JE PENSE QUE LA FEUILLE DE CALCUL #1 PAR DÉFAUT TOUJOURS
# A une valeur de ' 0 d 6'
worksheet_id = « od6 »
spr_client = gdata.spreadsheet.service.SpreadsheetsService()
spr_client.email = email
spr_client.password = mot de passe
spr_client.source = « Exemple de feuille de calcul écrit Application »
spr_client. ProgrammaticLogin()
#END DE BILLES
# DONNÉES NÉCESSAIRES POUR JOUER UN SON MEMBRE
Liste des membres #Query
gd_client = gdata.spreadsheet.service.SpreadsheetsService()
gd_client.email = email
gd_client.password = mot de passe
gd_client.source = spr_client.source
gd_client. ProgrammaticLogin()
while(1) :
var = ser.read()
JNombre = 0
Si var == « A » ou var == « R » :
Si var == « A » :
AUTH = « accordée »
autre chose :
AUTH = « rejeté »
var = ser.read()
Si var == ":" :
JNombre = ser.read(9)
nombre = str(pnumber)
imprimer auth
Numéro d’édition
q = gdata.spreadsheet.service.DocumentQuery()
Remplacement de #Below avec le nom de la feuille de calcul liste membres
q ['titre'] = « eLab Members »
q ['titre exacte'] = « true »
alimentation = gd_client. GetSpreadsheetsFeed(query=q)
spreadsheet_id = feed.entry[0].id.text.rsplit('/',1) [1]
alimentation = gd_client. GetWorksheetsFeed(spreadsheet_id)
worksheet_id = feed.entry[0].id.text.rsplit('/',1) [1]
lignes = gd_client. GetListFeed(spreadsheet_id, worksheet_id).entry
telefone = ''
Som = ''
nome = « Desconhecido »
fait = False
pour ligne de lignes :
Si fait == True :
fait = False
rupture
# impression « %s %s » % (row.custom['telefone'], row.custom['nome'].text)
pour clé dans row.custom :
Si la clé == « nome » :
nome = row.custom[key].text
nome d’impression
Si la clé == « som » :
Som = row.custom[key].text
imprimer la som
Si la clé == "telefone" :
telefone = row.custom[key].text
imprimer le telefone
Si telefone == nombre ou nome == « Desconhecido » :
# Préparer le dictionnaire pour écrire
dict = {}
dict ['date'] = time.strftime('%d/%m/%Y')
dict ['temps'] = time.strftime('%H:%M:%S')
dict « [numéro] = nombre
dict ["auth"] = auth
dict ['nome'] = nome
imprimer la dict
entrée = spr_client. InsertRow (dict, spreadsheet_key, worksheet_id)
Si isinstance (entrée, gdata.spreadsheet.SpreadsheetsList) :
imprimer « Insérer une ligne réussi. »
autre chose :
imprimer « Insérer une ligne qui a échoué. »
Si ce n’est pas isinstance (som, basestring) :
rupture
pygame.Mixer.Music.Load(SOM)
pygame.Mixer.Music.set_volume(1)
pygame.Mixer.Music.Play()
imprimer « Chanson jouer! »
fait = True
While True :
épreuve de #for de pygame.event :
tout en pygame.mixer.music.get_busy() :
pygame.time.Clock().tick(10)
rupture
imprimer « Fin de la chanson! »
imprimer
#END DU MEMBRE DE SON
< / pre >
De publier le journal entrée quotidiens dans une page Web, vous avez juste à ouvrir la feuille de calcul sur Google Drive, cliquez sur fichier -> publier sur le Web, puis choisissez quelle feuille que vous souhaitez publier et cliquez sur le bouton pour lancer la publication. Puis, en bas de la fenêtre contextuelle choisissez HTML à intégrer dans une page Web, copiez le code HTML et collez-le dans votre page Web.